Ich bin auf Lizenzsysteme gestoßen, die irgendwie an das Speichermedium gebunden sind. Obwohl es ziemlich einfach ist, dies auf der UUID des Dateisystems zu basieren, glaube ich nicht, dass dies der Fall ist (siehe unten). Ein typisches Beispiel für dieses Verhalten sieht wie folgt aus:
- Bei jedem Booten wird eine ID-Datei generiert.
- Das System prüft eine Schlüsseldatei auf eine Lizenz. Wenn der Schlüssel mit der ID übereinstimmt, ist alles in Ordnung.
- Wenn kein Schlüssel vorhanden ist oder der Schlüssel nicht mit der ID übereinstimmt (z. B. von einem anderen System kopiert), ist die Lizenz ungültig.
Ich habe das folgende Verhalten beobachtet:
- Durch das vollständige Löschen der CF-Karte und die Neuinstallation wird die gleiche ID-Datei generiert, daher ist keine neue Schlüsseldatei erforderlich.
- Die Verwendung desselben Schlüssels auf einer anderen CF funktioniert nicht, da er nicht mit dem Inhalt der neuen ID-Datei übereinstimmt.
Daraus schließe ich, dass es eine Möglichkeit gibt, irgendwie eine eindeutige ID der CF-Karte zu erhalten. Wie kann man das unter Linux erreichen?
PS:Auf Einzelheiten zum Produkt selbst habe ich bewusst verzichtet, da ich mich eher allgemein frage, wie ein solches System eine eindeutige ID der CF-Karte erstellen kann.
Antwort1
Auf der Karte sind zahlreiche Informationen schreibgeschützt registriert.
Der ArtikelLesen der internen SD-Karteninformationenhat folgendes zu sagen:
Informationen zur internen SD-Karte
Informationen über eine SD-Karte werden in ihren internen Kartenregistern kodiert. Eines davon ist dasKartenidentifikation (CID)Register, ein 16-Byte-Code, der Informationen enthält, die die SD-Karte eindeutig identifizieren, einschließlich der Kartenseriennummer (PSN), der Hersteller-ID-Nummer (MID) und des Herstellungsdatums (MDT). Das CID-Register wird bei der Herstellung der Karte festgelegt und kann danach nicht mehr geändert werden. (Gemäß der SD-Kartenspezifikation dürfen die Informationen nur einmal geschrieben werden. Wenn eine Karte jedoch nicht der Spezifikation entspricht, können diese Informationen geändert werden!)
So lesen Sie die CID von einer SD-Karte
Eine Möglichkeit zum Lesen der CID besteht darin, einen Laptop mit einem SD-Kartensteckplatz zu verwenden. Kartenleser in Laptops sind normalerweise direkt über den PCI-Bus (oder IDE-Bus) angeschlossen. Dies funktioniert nicht über einen USB-Kartenleser, da der Befehl zum Abrufen der Karteninformationen abgefangen und von den Kartenlesern nicht verstanden wird. Nicht alle Computer mit integrierten Kartensteckplätzen funktionieren, einige interne Kartenleser sind über einen USB-Bus angeschlossen.
Vorausgesetzt, Sie verfügen über die richtige Hardware, können Sie die Karteninformationen auf verschiedene Weise abrufen. Unter Linux ist das Lesen der internen SD-Karteninformationen ganz einfach. Legen Sie die Karte ein und schauen Sie darunter nach
/sys/block/mmcblk0/device/
(dieser Ort kann je nach Gerät unterschiedlich sein). Sie werden mehrere verfügbare Attribute sehen, darunter das CID-Register und die darin enthaltenen Informationen.
Antwort2
Wie andere bereits kommentiert haben, könnte es mit der Art und Weise zusammenhängen, wie die CF-Karte gelöscht wurde. Wahrscheinlicher ist jedoch, dass die Software die CF-Karte anhand der Firmware auf der Karte identifiziert -
Diese Informationen können normalerweise mit „udevinfo“ gelesen werden – wenn die CF-Karte beispielsweise /dev/sdb ist, udevinfo -a -p $(udevinfo -q path -n /dev/sdb). Dies enthält höchstwahrscheinlich genügend Informationen, um die Karte eindeutig zu identifizieren.
Notizudevadm info
: ersetzt auf Debian-basierten Distributionen udevinfo
:
udevadm info -a -p $( udevadm info -q path -n /dev/sdb )