Gast
#3542914
Hallo zusammen, ich versuche momentan, ein RFID Protokoll zu interpretieren und erhoffe mir hier etwas Unterstützung zu bekommen. Ich möchte die RFID Tags eines bestehenden Schliesssystems einlesen, um weitere Applikationen auf Basis dieser Tags umsetzen zu können. Der Vorteil hierbei ist, dass die bestehenden Tags weiterverwendet werden können. Leider finde ich im Internet keinerlei Informationen über das Schliesssystem und das verwendete Protokoll. Ich habe daher versucht, mich dem Protokoll experimentell zu nähern. Dabei ist mein aktueller Kenntnisstand der folgende: Es handelt sich 125kHz Tags, die Datenübertragung erfolgt per AM. Ich habe die Tags mittels eines EM4095 ausgelesen und die so aufgezeichneten Daten per Manchester weiter dekodiert. Im so enstandenen Bitstrom kann ich feststellen, dass sich die Daten alle 128Bit wiederholen. Ich habe nun zwei verschiedene Tags verglichen, die jeweils mit einer anderen ID des Schliesssystems beschrieben wurden (die Tags müssen vor der Bestellung durch den Hersteller/Händler mit einer ID beschrieben werden, die dann nachher im Schliessystem verwendet wird, um die Zutrittsrechte zu verwalten). Wenn ich das Tag mit der ID 605 (0x25D) auslese, erhalte ich den folgenden Bitstrom 111111111010000000101001110001111110110110010010100000000010000001100000 00100101011010000000011011001111101011111110000111010000 Den interpretiere ich zur Zeit so: 111111111 ist der Header, mit dessen Hilfe ich den Anfang der Daten erkenne Dann folgen 13 Blöcke mit jeweils 9 Bit, wobei ich die ersten 8 Bit als Daten interpretiere, das 9. Bit ist immer 0 (im Gegensatz zum Header, wo es 1 ist). Das bedeutet für den Bitstrom oben: Block 1 Binary: 01000000 Hex: 40 9. Bit: 0 Block 2 Binary: 10100111 Hex: A7 9. Bit: 0 Block 3 Binary: 00111111 Hex: 3F 9. Bit: 0 Block 4 Binary: 11011001 Hex: D9 9. Bit: 0 Block 5 Binary: 01010000 Hex: 50 9. Bit: 0 Block 6 Binary: 00001000 Hex: 08 9. Bit: 0 Block 7 Binary: 00110000 Hex: 30 9. Bit: 0 Block 8 Binary: 00100101 Hex: 25 9. Bit: 0 Block 9 Binary: 11010000 Hex: D0 9. Bit: 0 Block 10 Binary: 00011011 Hex: 1B 9. Bit: 0 Block 11 Binary: 01111101 Hex: 7D 9. Bit: 0 Block 12 Binary: 11111110 Hex: FE 9. Bit: 0 Block 13 Binary: 00111010 Hex: 3A 9. Bit: 0 Danach folgen noch zwei Bit, die 0 sind (2 Stoppbits?) Für den oben angegebenen Bitstrom des Tags 0x25D würde ich als Daten dann 0x40A73FD950083025D01B7DFE3A annehmen. Erfreulicherweise finde ich in den Daten die 0x25D wieder. Wenn ich die gleiche Interpretation auf einen anderen Tag mit der ID 477 (0x1DD) anwende, erhalte ich folgendes: Bitstrom: 111111111010000000101001110001111110110110010010100000000010000001100000 00011101011010000000010011001001101011111110010101111000 Daten: 0x40A73FD95008301DD0134DFEAF Wenn ich die Daten der beiden Tags vergleiche, dann kann man Unterschiede bei den letzten Werten (mal abgesehen von den IDs) ausmachen. Ich vermute, dass sich hier ggf. noch irgendeine Checksumme verbirgt, die ich gerne prüfen würde. Meine Frage an euch ist, ob jemandem das Format bekannt vorkommt und es ggf. eine Spezifikation dazu gibt. Ich habe bei meiner Recherche bislang nixhts gefunden. Vielleicht hat aber auch jemand eine andere Idee, wie die Daten zu interpretieren sind. Ich komme zwar mit den bislang vorliegenden Informationen wahrscheinlich auch schon zum Ziel, schön wäre es aber dennoch, das Protokoll vollständig zu implementieren. Ich werde als nächtes weitere Tags testen, um sicherzustellen, dass das Finden der ID kein Zufall war. Zunächst möchte ich dafür aber eine Online-Interpretation der Tags mit einem Controller umsetzen. Der bislang bestrittene Weg (Aufzeichnung der Daten des EM4095 mittels Oszi und anschließende Auswertung in Matlab) ist mir für eine größere Zahl Tags etwas zu aufwändig... Gruß Axel