Ansichten eines Informatikers

10-stellige dezimale Seriennummern bei RFID-Chips?

Hadmut
17.6.2024 17:16

Kennt sich jemand richtig gut mit RFID-Chips aus? [Nachtrag2]

Ich habe gerade ein Problem, für das ich noch keine Lösung habe. Ich hatte ja neulich erwähnt, dass ich meine Bücher mit RFID-Aufklebern inventarisieren will.

Nicht die teureren ISO 15693 (vicinity distance), die für Bibliotheken u.ä. gemacht sind, mir reichen die billigeren kleineren ISO 14443 (proximity), 13.56 MHz, NTAG und Mifare Classic. (Ich weiß, die gelten als unsicher, aber ich klaue mir ja nicht selbst meine Bücher, es geht um Inventar und nicht um Bibliotheksverleih. Und selbst wenn ich mich selbst betrügen und mir selbst die Bücher klauen wollte, könnte ich das ja tun, bevor ich den Aufkleber reingeklebt habe. Außerdem sind die sicheren soviel teurer, dass es immer noch billiger wäre, wenn ich mir selbst unbemerkt 10 Bücher klaue.)

Wäre alles wunderbar, wenn ich nicht ein bestimmtes technisches Problem hätte, für das ich noch keine technische Beschreibung gefunden habe. Es gibt zwei Arten von Lesern, nämlich

  • die „richtigen“, mit denen man den Speicher auslesen (und schreiben) kann, und mit denen man auch die Herstellerseriennummer in Form von 7 Byte am Anfang des Speichers lesen kann.
  • die „vereinfachten“ und rückwärtskompatiblen, die für Zugangssysteme, Inventar usw. nur eine 10-stellige Dezimalnummer angeben, sich dazu aber als Tastatur ausgeben, auf denen die Nummer eingegeben wird. Wunderbar, weil es direkt mit dem Browser usw. zusammenfunktioniert, wie bei Barcodelesern.

Ich habe bisher keinerlei formale Beschreibung gefunden, wie die 10-stellige Dezimalnummer aus den 7 Byte errechnet werden. Es beißt einen zwar geradezu in die Nase, dass drei Byte der Dezimalzahl die unteren 3 Byte der 7 Byte Seriennummer sind, und damit 24 oder manchmal sogar 28 Bit der angezeigten Dezimalzahl daraus stammen, es ist aber unklar, woher die restlichen Bit kommen.

Bisher hatte ich das Problem nur unter dem Aspekt betrachtet, dass ich die Ableitung der 10-stelligen Dezimalnummer aus den 7 Byte ggf. nachprogrammieren muss, bin aber gerade auf ein neues Problem gestoßen.

Ich habe mir drei Arten von RFID-Lesern beschafft. „Richtige“, die den Speicher auslesen, aber das erst auf Zuruf und entprechender Software, was zwar technisch interessant ist, hier für diesen Zweck aber nicht viel nutzt, und „Einfache“, die sich als Tastatur ausgeben und die 10-stellige Nummer anzeigen. Und von denen zwei Varianten, nämlich kleine Tischgeräte mit Mini-USB-Kabel, und kleine in Form eines USB-Sticks.

Aber, ach.

Ich hatte die vorher mit verschiedenen RFID-Tags getestet, dass die beiden Einfachen, Tischgerät und Stick, zum selben Chip auch dieselbe Nummer ausgeben. Taten sie auch.

Jetzt habe ich aber Chips, bei denen sie verschiedene Nummern ausgeben, was natürlich das ganze Konzept stört, wenn die Nummer vom Lesegerät abhängt.

Beispiel mit demselben Chip an zwei verschiedenen Geräten:

  • Einer zeigt 2368865416 an, also hexadezimal 8d320488
  • Der andere zeigt 0579678724 an, also hexadezimal 228d3204

Es fällt natürlich auf, dass beide die 3-Bytefolge 8d3204 aus der 7-Byte-Seriennummer verwenden. Aber: Einer klatscht unten 88 dran, der andere oben 22. Habe ich zum ersten Mal beobachtet, dass die beiden Geräte unterschiedliche Nummern ausgeben.

Es gibt zwar die ISO 14443 in Form einiger Dokumente, aber die sind sehr teuer. Und ich weiß vorher nicht, ob das da drin steht, und ggf. in welcher.

Es bringt mir natürlich das ganze System durcheinander, wenn die angezeigte Seriennummer des RFID-Chips vom Kartenleser abhängt.

Wenn ich jetzt wüsste, dass es nur die beiden Methoden gibt, unten 88 oder oben 22 dranzuklatschen, ließe sich das ja leicht umrechnen. Ich hege aber den Verdacht, dass das von irgendwas anderem abhängt. Kennt sich jemand aus? Eine Beschreibung habe ich bisher nicht gefunden.

Nachtrag: Es hat sich herausgestellt, dass ich sogar drei verschiedene Kartenleser habe, weil welche, die ich für gleich gehalten habe, sich äußerlich bei genauem Hinschauen geringfügig unterscheiden und sich gegenteilig verhalten. Und der dritte verhält sich manchmal wie der erste, manchmal wie der zweite. Es lässt sich also nicht einmal eindeutig in zwei Methoden unterscheiden. Manchmal hängen sie oben auch f1 dran.

Nachtrag 2: Weil Rückfragen und Verwirrtheitsbekundungen eintrafen:

Soweit ich das verstanden habe, hatten frühere RFID-Chips nur eine 3-Byte-Seriennummer, die der Hersteller bei Produktion eindeutig zuweist, entweder so in den Speicher schreibt, dass sie nicht überschrieben werden kann, oder mit dem Laser in den Chip brennt. (Achtung: Es gibt chinesische Nachbauten, die zwar keine eindeutigen, dafür aber veränderbare Seriennummern haben).

Damals wurde wohl das System eingeführt, für einfache Lesegeräte bei Zugangs- und Inventarsystemen die 3-Byte-Seriennummer als Dezimalzahl darzustellen. Weil die 3 oder 4 Byte aber nicht mehr für eindeutige Seriennummern reichten, weil man so viele produzierte, hat man das dann bei neuen Typen auf 7 Byte eindeutige Nummer erweitert. Zur Rückwärtskompatibilität mit Software geben die Kartenleser auch da 10-stellige Dezimalzahlen aus, aber der Algorithmus, wie man aus 7 Byte Seriennummer zur 10-stelligen Dezimalzahl kommt (was ja nicht eindeutig sein kann, weil es mehr 7Byte-Nummern als 10-stellige Dezimalzahlen gibt) ist wohl nicht standardisiert worden, weshalb es da wohl verschiedene „Kochrezepte“ gibt.