Eindeutige ID des Speichergeräts

1584
Jarmund

Ich bin auf Lizenzsysteme gestoßen, die irgendwie an das Speichermedium gebunden sind. Dies ist zwar auf der Grundlage der UUID relativ einfach, ich glaube jedoch nicht, dass dies der Fall ist (siehe unten). Ein typisches Beispiel für dieses Verhalten lautet wie folgt:

  1. Bei jedem Start wird eine ID-Datei generiert.
  2. Das System prüft eine Schlüsseldatei auf eine Lizenz. Wenn der Schlüssel mit der ID übereinstimmt, ist alles gut.
  3. Wenn kein Schlüssel vorhanden ist oder wenn der Schlüssel nicht mit der ID übereinstimmt (wie in einem anderen System kopiert), ist die Lizenz nicht gültig.

Ich habe folgendes Verhalten beobachtet:

  • Wenn Sie die CF-Karte vollständig löschen und erneut installieren, wird dieselbe ID-Datei generiert, sodass keine neue Schlüsseldatei erforderlich ist.
  • Die Verwendung des gleichen Schlüssels auf einer anderen CF funktioniert nicht, da er nicht mit dem Inhalt der neuen ID-Datei übereinstimmt.

Dies lässt mich zu dem Schluss kommen, dass es eine Möglichkeit gibt, irgendwie eine eindeutige ID der CF-Karte zu erhalten. Wie kann man das in Linux erreichen?


PS: Ich habe bewusst auf Details des Produkts verzichtet, da ich mich generell frage, wie ein solches System eine eindeutige ID der CF-Karte aufbauen kann.

4
Normalerweise wird durch das Abwischen der CF-Karte die UUID _nicht_ geändert, sodass Ihr Experiment nicht abgeschlossen ist (wenn ich Ihren Beitrag verstehe), ohne die UUID zu ändern (Sie können gparted verwenden, um dies problemlos über das r-click-Menü zu tun). Bei anderen Methoden zum Generieren dieser Informationen verwendet MS die Hardwarekonfiguration iirc. Das Einbetten von Schlüsseln usw. in die Gerätefirmware ist denkbar einfach (lesen Sie die Bedenken bezüglich der eingebetteten Firmware). nonzyro vor 7 Jahren 2
Möglicherweise lautet Ihre Antwort hier: [Lesen interner SD-Karteninformationen] (http://www.cameramemoryspeed.com/sd-memory-card-faq/reading-sd-card-cid-serial-psn-internal-numbers/). Suchen Sie nach den internen Kartenregistern in `/ sys / block / mmcblk0 / device /` (YMMV). harrymc vor 7 Jahren 0
Wie nonzyro gesagt hat, kann es noch von der UUID kommen. Kann es an die Seriennummer des Laufwerks gebunden sein? Adam Wykes vor 7 Jahren 0

2 Antworten auf die Frage

4
davidgo

Wie andere kommentiert haben, könnte es damit zusammenhängen, wie die CF-Karte gelöscht wurde. Es ist jedoch wahrscheinlicher, dass die Software die CF-Karte anhand der auf der Karte befindlichen Firmware identifiziert.

Diese Informationen können in der Regel mit "udevinfo" gelesen werden. Wenn beispielsweise die CF-Karte / dev / sdb udevinfo -a -p $ (udevinfo -q Pfad -n / dev / sdb) ist, enthält dies höchstwahrscheinlich genügend Informationen die Karte eindeutig identifizieren.

Anmerkung : Auf Debian basierende Distributionen udevadm infoersetzt udevinfo:

udevadm info -a -p $( udevadm info -q path -n /dev/sdb )

Bei einigen Distros (hier Ubuntu) ersetzen Sie udevinfo` durch `udevadm info`, z. B. udevadm info -a -p $ (udevadm info -q Pfad -n / dev / sdb)`. Die erwarteten CF-Karteninformationen wurden jedoch nicht über meine beiden USB-Kartenleser bereitgestellt. Stéphane Gourichon vor 6 Jahren 1
2
harrymc

Auf der Karte werden viele Informationen schreibgeschützt registriert.

Im Artikel Lesen der internen SD-Karteninformationen heißt es:

Interne SD-Karteninformationen

Informationen zu einer SD-Karte sind in den internen Kartenregistern codiert. Eines davon ist das Card Identification (CID) -Register, ein 16-Byte-Code, der Informationen enthält, die die SD-Karte eindeutig identifizieren, einschließlich Kartenseriennummer (PSN), Hersteller-ID-Nummer (MID) und Herstellungsdatum (MDT). Das CID-Register wird bei der Herstellung der Karte festgelegt und kann nach dem Einrichten nicht geändert werden. (Laut SD-Kartenspezifikation sind die Informationen nur einmal zu schreiben, wenn jedoch eine Karte nicht den Spezifikationen entspricht, können diese Informationen geändert werden!)

So lesen Sie das CID von einer SD-Karte

Eine Möglichkeit, das CID zu lesen, besteht darin, einen Laptop mit einem SD-Kartensteckplatz zu verwenden. Kartenleser in Laptops sind normalerweise direkt über den PCI-Bus (oder IDE-Bus) verbunden. Dies funktioniert nicht über einen USB-Kartenleser, da der Befehl zum Abrufen der Karteninformationen abgefangen wird und von Kartenlesern nicht verstanden wird. Nicht alle Computer mit integrierten Kartensteckplätzen funktionieren, einige interne Kartenleser sind über einen USB-Bus angeschlossen.

Angenommen, Sie haben die richtige Hardware, es gibt verschiedene Methoden, um die Karteninformationen abzurufen. Unter Linux ist das Lesen der internen SD-Karteninformationen einfach. Legen Sie die Karte ein und schauen Sie unter /sys/block/mmcblk0/device/(Dieser Speicherort kann sich je nach Gerät ändern). Es werden verschiedene Attribute angezeigt, darunter das CID-Register und die darin enthaltenen Informationen.

Einige CIDs der Karten ** können geändert werden - siehe [this] (https://github.com/raburton/evoplus_cid) und [this] (https://github.com/beaups/SamsungCID) itsho vor 5 Jahren 0