Seriennummer bearbeiten

19

Im offiziellen Forum von raspberrypi.org schrieb "Dom" - ein Moderator:

Ich habe mein Board durcheinander gebracht, um deine Seriennummer zu haben

Wie bearbeite ich die Seriennummer eines Raspberry Pi?

Ein weiterer Simon
quelle
5
1. Warum? Warum nicht? Ist das Lernen von Dingen nicht der springende Punkt des PI?
Ein weiterer Simon
4
2. Wieder stehlen - meine Zeit ist mehr wert als die 2 Pfund, die ich sparen würde, aber ich bin sicher, Sie meinten das generische "Sie"
Ein weiterer Simon
3
3. Dom ist nicht magisch, aber sehr kenntnisreich. Hat er eine Pi-Version der alten HP Setsys-Bootdiskette verwendet oder Daten auf einen der GPIO-Pins geschrieben oder etwas anderes? Das ist meine frage
Ein weiterer Simon
3
Ich habe meine Antwort aktualisiert und eine Entschuldigung hinzugefügt. Wir sind nicht hier, um die Moral der Dinge zu diskutieren. Wir sind hier, um Fragen zu stellen und Antworten zu erhalten. Auch positiv zu bewerten, da es eine sehr gute Frage ist.
Vincent P
2
Warum kompilieren Sie nicht einen benutzerdefinierten Kernel, der die Serien zurückgibt, die Sie möchten /proc/cpuinfo? Ich
bin

Antworten:

9

Ich kopiere dies aus diesem Forum-Thread .

Dom hat Zugriff auf den gesamten Quellcode, den Videocore-Debugger und viele geschlossene VC-spezifische Tools. Wenn Sie Informationen freigeben, um die Seriennummer ändern zu können, würde dies den Mechanismus für die Codec-Lizenzierung stören und niemals passieren.

Zusätzlich wie im Thread gepostet. Der einzige Grund, die Seriennummer zu ändern, wäre, die MP4-Lizenz einer anderen Person zu kopieren und zu verwenden. Da ist das die Sicherheit rund um die Lizenzierung. Ihre eindeutige Seriennummer ist mit der MP4-Lizenz verknüpft. Selbst wenn jemand Ihren Lizenzschlüssel hat, kann er nichts damit anfangen (es sei denn, er könnte die Seriennummer des Raspberry Pi ändern.

UPDATE: Zur Beantwortung der eigentlichen Frage. Ich würde sagen, dass Dom die Quelle für die eigentliche Low-Level-Firmware hat. Ich würde mir vorstellen, dass er wirklich nur den Quellcode ändert, der die Seriennummer liest, und ihn zwingt, einen anderen Wert zurückzugeben. Ich bezweifle ehrlich, dass es tatsächlich geändert wurde (auf der CPU meine ich), eher als hätte er einen Teil des Firmware-Codes geändert, um eine andere Seriennummer zurückzugeben. Wir entschuldigen uns auch beim Fragesteller, wir haben Ihnen alle nur ein "Warum? Das ist nicht nett. Ihr stiehlt" gegeben, anstatt die Frage zu beantworten. Mein Fehler.

Vincent P
quelle
2
Vielen Dank für Ihre Entschuldigung und Ihren Versuch, die Frage zu beantworten. "Ich könnte mir vorstellen, dass er ..." Antworten sind ideal für Diskussionszwecke, aber die akzeptierte Antwort wird hoffentlich in Form von "Dies geschieht über das Hilfsprogramm xyz, das nur Broadcom-Mitarbeitern zur Verfügung steht ..." erfolgen. etc.
Ein weiterer Simon
2
Ich bin ein wenig überrascht, dass die Annahme, dass die Seriennummer nur für schändliche Zwecke geändert wird, auf einem Linux-Gerät so weit verbreitet ist. Ich möchte es auf "Warum sollte ich zulassen, dass ein Dritter mein System eindeutig identifiziert" umstellen? Ich sehe darin unter anderem ein Datenschutzproblem. Warum? Das ist meine Sache.
Bobstro
6

Für Userspace-Programme ist es ziemlich einfach, sie zu täuschen und den Inhalt von nahezu jeder Datei zu fälschen. Angenommen, ein C-Programm verwendet eine /proc/cpuinfoDatei, um die Seriennummer zu überprüfen. Das Programm ist kopiergeschützt und an die Seriennummer gebunden, und ich habe den Quellcode nicht. Ich kann aber trotzdem noch rennen strace program 2>&1 | grep cpuinfo, was so etwas verrät:

open("/proc/cpuinfo", O_RDONLY) = 3

An dieser Stelle kann ich eine kleine Bibliothek cpuinfo.somit der folgenden Funktion erstellen :

int open(const char *file, int flags) {
    static int (*real_open)(const char *file, int flags);
    if(!real_open) real_open = dlsym(RTLD_NEXT, "open");
    if(!strcmp(file, "/proc/cpuinfo")) file = "/tmp/cpuinfo";
    return real_open(file, flags);
}

Wie Sie sehen, überprüfe ich, ob der Benutzer der Bibliothek versucht zu öffnen /proc/cpuinfo. In diesem Fall öffne ich /tmp/cpuinfostattdessen.

Dann führe ich das kopiergeschützte Originalprogramm aus LD_PRELOAD=/path/to/cpuinfo.so programund lese meine gefälschte Datei mit Freude /proc/cpuinfo, obwohl ich mit den restlichen Dateien richtig arbeite.

Wenn die kopiergeschützte Software Kernelobjekte enthält, ist es sehr viel schwieriger zu täuschen, da direkt auf die Hardware zugegriffen werden kann. Solche Software funktioniert jedoch auch nur mit dem Kernel, für den sie erstellt wurde, was die Verteilung recht unpraktisch macht.

Dmitry Grigoryev
quelle