NFC – graue Theorie

Leider scheitere ich immer noch der Hydra im Direct-Mode1 irgendwelche Daten zu entlocken. Nachdem ich mir im Quelltext die Initialisierung von DM1 angeschaut habe, und dazu alle Bitmuster mit der Dokumentation und der Applikation-Note verglichen habe – war ich nicht unbedingt klüger.
Es zeigte sich zwar, das im Hydra-Quelltext einiges anders ist – als in dem Beispiel … aber wieso rein gar kein Output kommt – völlig unklar.

Wenn man wiederum auf der Github-Seite schaut, sieht man das dazu aber schon ein Issue geöffnet wurde. Anscheinend bin ich nicht der ein zigste der damit ein Thema hat.

Ich habe dann einfach die Applikation-Note 1:1 programmiert und in die Hydra integriert. Aber ohne wirklichen Erfolg. Das ganze habe ich dann immer gegen ein Nexus Tab mit MifClassic-Card getestet.

Bei meinen Recherchen bin ich dabei auf folgenden Präsentation gestolpert – die das Thema NFC-P2P nett erklärt.

NFC etwas auf den Zahn gefühlt

Mittlerweile habe ich erfolgreich einige PCAP-Traces für Wireshark erstellt und mit selbigen analysiert. Leider bringt Wireshark von Haus aus keinen passenden Dissector um dieses Protokoll zu entschlüsseln.
Zum Glück hat sich schon jemand dieser Aufgabe gewidmet und einen entsprechenden Decoder geschrieben: NicoHub/Wireshark-RFID-dissector

Aber auch hier gab es am Anfang ein paar Stolpersteine … der Decoder hat Fehler geworfen. Da die Quelltext frei verfügbar ist – konnte ich die Fehler finden und fixen.
Damit konnte ich dann relativ einfach eine Kommunikation zwischen einem Galaxy Nexus Tab und einer Mifare-Card (14443-A) mitlesen und verstehen.

Dummerweise bringt mich das aber bei meiner P2P-Anwendung nicht wirklich weiter, da bei NFC verschiedene Modulationen \ Modi verwendet werden können und das einfache sniffen der Hydra für 14443-A ausgelegt ist.

Erklärungen zu den unterschiedlichen NFC-Modi (NFC-A -B -F)
Artikel zu den unterschiedlichen Modulationsarten

Aber zum Glück beherrscht das Board auch den sogenannten Direct-Mode. Bei diesem Modus kann man mit einem Logic-Analyzer an einem Ausgangspin den Datenstrom abnehmen und anzeigen lassen. Dann sieht man dann sehr genau was „an der Antenne“ ankommt.


img_8183

Man sieht sehr schön das alle 0,46 Sekunden eine neue Ausstrahlung beginnt.


capture1

Wenn man nun das ganze etwas aufzieht, sieht man das schon etwas besser… Man erkennt schön, das die „Start-Barke“ eine Dauer von 0,14 Sekunden hat.


capture2

Wenn man nun weiter hineinzoomt, sieht man dann auch schön wie die Datenpakete gesendet werden.


capture3

Sobald wieder etwas mehr Zeit ist, werde ich da dann weiter abtauchen.

Erste Schritte mit NFC

Zur Zeit bin ich wieder am Elektronik-Basteln – genauer gesagt beim experimentieren mit NFC. Zur Zeit habe ich hier zwei Geräte welche mittels dieser Technik Daten austauschen (P2P) und ich würde gerne verstehen wie (und vor allem was) die beiden sich austauschen.

Als erstes habe ich mir ein kleines PN532-Breakout-Board von adafruit gekauft, welches ich mit einem FTDI-Adapter an eine virtuelle Linux-Maschine (Ubuntu) angebunden habe. Dann habe ich – wie in etlichen Beispielen zu lesen – die LibNFC erstellt und eingebunden .. und siehe da – ich konnte einfache Smartcards „lesen“. Soweit ein erster Erfolg.

IMG_8180.JPG

Aber wie so oft im Leben – folgte die Enttäuschung auf dem Fuße. Um nun die P2P Kommunikation zwischen zwei Partner zu belauschen, bräuchte ich ein entsprechendes Stück Software was so etwas kann. Ich wurde auch fündig: NFCTool.
Dumm nur, das diese Software einen anderen Unterbau benötigt – und zwar Linux-NFC (NEARD) – und dieser hat mit LibNFC nicht viel gemeinsam.
Im Projekt NEARD gibt es zwar auch einen PN532/533 Treiber – aber dieser setzt andere USB-ID’s voraus. Ich müsste nun entweder mein FTDI-Modul umprogrammieren … wozu ich aber ehrlich gesagt keine Lust habe – oder einen anderen Weg beschreiten.

Als ich das PN532-Breakout-Board bestellt hatte, habe ich auch gleich eine andere Bestellung auf den Weg geschickt: Eine HydraBus samt der passenden NFC-Erweiterung. Bei diesem System kommt alles aus einem Guss und es kann schon „von Hause aus“ NFC-Traffic mitschneiden. Es dauerte einige Tage bis das gute Stück den Weg von Frankreich nach Deutschland gefunden hatte. Nachdem ich aus dem Plexiglas das Mini-Gehäuse gebaut und die NFC-Erweiterung eingesteckt hatte – konnte es gleich losgehen.

Das lesen diverser Smartcards hat gleich auf Anhieb funktioniert. Leider gab es beim Mitschneiden des P2P-Verkehrs aber Probleme. Es zeigte sich das ich dafür unbedingt eine MicroSD-Karte brauchte – also zum Media-Markt gefahren und eine Toshiba-32GB MicroSD gekauft. Danach konnte ich dann endlich auch was aufzeichnen. Es zeigte sich das der „Antennenschnürsenkel“ sehr fehleranfällig war – also habe ich die mitgelieferten SMA-Steckverbinder angelötet und noch eine kleines SMA-Kabel gekauft. Nun ist das ganze sehr viel stabiler geworden.

img_8179

Der nächste Schritt ist nun, die Daten nach Wireshark zu bringen um das ganze sinnvoll auswerten zu können.

So nun wisst ihr, womit ich zur Zeit die selbige vertrödle.