NFC ohne Android
25. Januar 2016
über
über
Wenn Sie Elektor-Mitglied sind, haben Sie mit Ihrer Januar/Februar-2016-Ausgabe eine elektronische Visitenkarte erhalten, die mit einem NFC ST25TA02K NFC-Chip von STMicroelectronics ausgestattet ist. In jedem dieser Chips sind eine URL sowie eine eindeutige, aus sieben Bytes bestehende UID-Identifikationsnummer gespeichert. Um an dem von Elektor und STMicroelectronics gemeinsam ins Leben gerufenen Gewinnspiel teilnehmen zu können, muss dieser Chip von einer App Ihres Android-Smartphones gelesen werden, sofern es NFC-kompatibel ist.
Doch was tun, wenn dies nicht der Fall ist? Als unser Freund Patrick Gueulle sein betreffendes Elektor-Heft aufschlug, hat er sofort an all diejenigen gedacht, die an dem Projekt zwar interessiert – aber nicht mit dem dazu erforderlichen, neueren Android-Smartphone ausgestattet sind. Und was ist mit all den iPhone-Besitzern? Es ist kein Geheimnis, dass Apple dem NFC-Verfahren nicht sehr aufgeschlossen gegenüber steht. Für alle, die von diesen Einschränkungen betroffen oder ganz einfach nur neugierig sind, hat Patrick Gueulle ein kleines Programm in ZCBasic geschrieben, das es ermöglicht, die Identifikationsnummer mittels eines PCs anzuzeigen, der mit einem kontaktlosen PC/SC-Leser ausgestattet ist (zum Beispiel das immer stärker verbreitete Modell ACR122).
Und hier der Quellcode:
#Include CARDUTIL.DEF
Declare Command &HFF &HCA UID(S$)
ComPort=101
CLS:Call WaitForCard:ResetCard(S$)
Print:Print "UID : ";
Call UID(P1P2=&H0000,Lc=0,S$)
For F=1 TO Len(S$)
C$=MID$(S$,F,1):C=ASC(C$):C$=HEX$(C)
IF LEN(C$)=1 then C$="0"+C$
Print C$;" ";
Next F
Print:Print
Call WaitForNoCard
Dieses kurze Programm verdeutlicht, wie einfach das kontaktlose Lesen einer beliebigen Identifikationsnummer mit dem verwendeten PC/SC-Lesegerät sein kann. Es nutzt ganz einfach den Befehl „GET UID“ (FF CA 00 00 00) der PC/SC-Spezifikationen. Um den Code in ein für Windows ausführbares Programm zu übersetzen, genügt das kostenlose Software-Kit der BasicCard – eine ausgezeichnete Gelegenheit, es kennenzulernen.
Eine letzte Anmerkung für die Anwender der ebenfalls sehr verbreiteten Lesegeräte des Typs Omnikey 5321. Die Zeile ComPort = 101 muss hier in ComPort = 102 umgewandelt werden, da es sich hier um ein Lesegerät mit zwei Möglichkeiten handelt: Mit und ohne Kontakt.
Da Patrick wirklich an jeden und alles gedacht hat: Wer sich nicht mit dem Compilieren abmühen möchte, kann auch die am Ende dieses Artikels gezeigte ZIP-Datei herunterladen, die die beiden Variationen der ausführbaren Datei (ComPort = 101 und 102) enthält. In der ZIP-Datei inbegriffen ist natürlich auch der entsprechende Quellcode. Danke, Patrick!
Lesen Sie dazu auch einen weiteren Artikel von Patrick Gueulle: "Synchrone Smartcards durchforsten", Elektor-Heft Januar/Februar 2016.
Doch was tun, wenn dies nicht der Fall ist? Als unser Freund Patrick Gueulle sein betreffendes Elektor-Heft aufschlug, hat er sofort an all diejenigen gedacht, die an dem Projekt zwar interessiert – aber nicht mit dem dazu erforderlichen, neueren Android-Smartphone ausgestattet sind. Und was ist mit all den iPhone-Besitzern? Es ist kein Geheimnis, dass Apple dem NFC-Verfahren nicht sehr aufgeschlossen gegenüber steht. Für alle, die von diesen Einschränkungen betroffen oder ganz einfach nur neugierig sind, hat Patrick Gueulle ein kleines Programm in ZCBasic geschrieben, das es ermöglicht, die Identifikationsnummer mittels eines PCs anzuzeigen, der mit einem kontaktlosen PC/SC-Leser ausgestattet ist (zum Beispiel das immer stärker verbreitete Modell ACR122).
Und hier der Quellcode:
#Include CARDUTIL.DEF
Declare Command &HFF &HCA UID(S$)
ComPort=101
CLS:Call WaitForCard:ResetCard(S$)
Print:Print "UID : ";
Call UID(P1P2=&H0000,Lc=0,S$)
For F=1 TO Len(S$)
C$=MID$(S$,F,1):C=ASC(C$):C$=HEX$(C)
IF LEN(C$)=1 then C$="0"+C$
Print C$;" ";
Next F
Print:Print
Call WaitForNoCard
Dieses kurze Programm verdeutlicht, wie einfach das kontaktlose Lesen einer beliebigen Identifikationsnummer mit dem verwendeten PC/SC-Lesegerät sein kann. Es nutzt ganz einfach den Befehl „GET UID“ (FF CA 00 00 00) der PC/SC-Spezifikationen. Um den Code in ein für Windows ausführbares Programm zu übersetzen, genügt das kostenlose Software-Kit der BasicCard – eine ausgezeichnete Gelegenheit, es kennenzulernen.
Eine letzte Anmerkung für die Anwender der ebenfalls sehr verbreiteten Lesegeräte des Typs Omnikey 5321. Die Zeile ComPort = 101 muss hier in ComPort = 102 umgewandelt werden, da es sich hier um ein Lesegerät mit zwei Möglichkeiten handelt: Mit und ohne Kontakt.
Da Patrick wirklich an jeden und alles gedacht hat: Wer sich nicht mit dem Compilieren abmühen möchte, kann auch die am Ende dieses Artikels gezeigte ZIP-Datei herunterladen, die die beiden Variationen der ausführbaren Datei (ComPort = 101 und 102) enthält. In der ZIP-Datei inbegriffen ist natürlich auch der entsprechende Quellcode. Danke, Patrick!
Lesen Sie dazu auch einen weiteren Artikel von Patrick Gueulle: "Synchrone Smartcards durchforsten", Elektor-Heft Januar/Februar 2016.
Mehr anzeigen
Weniger anzeigen
Diskussion (0 Kommentare)