Forum: Mikrocontroller und Digitale Elektronik RFID / NFC mit PN532


von Patrick L. (crashdemon)


Lesenswert?

Hallo Leute,

ich wollte ich mal ein wenig mit NFC und RFID beschäftigen. Dabei möchte 
ich mich zunächst auf die 13,56 Mhz Technologie beschränken. Dafür gibt 
es ja einige Karten die im Umlauf sind (Unicard, ....).

Bei meinen Rechnerchen nach einem günstigen RFID Reader/Writer/Emulator 
bin ich in der Bucht auf das folgende Board gestoßen:

http://www.ebay.de/itm/PN532-NFC-RFID-Reader-Writer-Shield-Breakout-Board-Module-Compatible-Arduino-/281245707742?pt=LH_DefaultDomain_77&hash=item417b8cedde

Eingesetzt wird dort ein PN532 von NXP. Dieser Chip scheint ja bei 
Studium des Datenblatts schon einge Standards "Out-of-the-Box" zu 
ünterstützen (Mifare Classic, ...). Wie sieht das aus wenn ich RAW Daten 
von einer beliebigen 13,56 Mhz Karte empfangen möchte, geht das mit dem 
Gerät auch?

Der Artikel aus der Bucht scheint wohl auf den folgenden Artikel zu 
basieren:

http://www.elecfreaks.com/store/rfidnfc-breakout-board-p-519.html

Warum die Chinesen den jetzt die Version 2.0 verpasst haben wird mir 
allerdings noch nicht klar. Evtl. weiß jemand im Forum was da der 
Unterscheid ist.

Was mich außerdem interessieren würde, welche Software kann genutzt 
werden um mit dem PN532 über UART zu kommunizieren, bzw. wirft der schon 
direkt ASCII raus (Dann nur die UID?)?

von Patrick L. (crashdemon)


Lesenswert?

Alle in den Weihnachtsferien?

von Detlef K. (adenin)


Lesenswert?

Nein, aber vielleicht macht keiner was mit PN532.

Ich lese und schreibe meine Lables mit 'nem Nexus7.
(Und seit dem ich das mache, trag ich zwahr noch keine Alufolienmütze, 
aber ich hab Alufolie in der Brieftasche und im Reisepass.)

von Rena Z. (rena2019)


Lesenswert?

der pn532 ist der einzige freie nfc controller mit dem du zzt am meisten 
anfangen kannst

von Andreas (Gast)


Lesenswert?

Hallo Patrick,

Wenn ich dich richtig verstehe, willst du mit dem PN532 "beliebige" 
Daten (basierend auf 13,56 MHz) empfangen.
Das wird allerdings nicht funktionieren, da - wie du schon erwähnt hast 
- der PN532 nur einige Standards "out of the box" unterstützt.
D.h. der Chip unterstützt damit nur auch "nur" bestimmte 
Übertragungsverfahren (Modulation, Kodierung usw.).

Der Chip unterstützt aber die Standards ISO 14443-3 A/B, Mifare Classic, 
FeliCa (nur soweit man sich nicht gegen eine Karte authentisieren muss) 
usw.
Damit kannst du schon mit geschätzten 80% aller verfügbaren Produkte auf 
13,56 MHz arbeiten (abgesehen von ISO 15693, HID etc.).

Hoffe dir damit ein bisschen geholfen zu haben.

lg.
Andreas

von Patrick L. (crashdemon)


Lesenswert?

Andreas schrieb:
> Wenn ich dich richtig verstehe, willst du mit dem PN532 "beliebige"
> Daten (basierend auf 13,56 MHz) empfangen.
> Das wird allerdings nicht funktionieren, da - wie du schon erwähnt hast
> - der PN532 nur einige Standards "out of the box" unterstützt.
> D.h. der Chip unterstützt damit nur auch "nur" bestimmte
> Übertragungsverfahren (Modulation, Kodierung usw.).

Ja sowas hhatte ich mir gedacht, da der PN532 die Demodulation der Datn 
übernimmt.Was gnau bekomme ich den dann von dem PN52 zurückgeiefert, nur 
die UID oder auch Daten?

D.h. es würde sich ja eher ein SDR anbieten, das beliebige Protokoll in 
Software dekodiert.

> Der Chip unterstützt aber die Standards ISO 14443-3 A/B, Mifare Classic,
> FeliCa (nur soweit man sich nicht gegen eine Karte authentisieren muss)
> usw.
> Damit kannst du schon mit geschätzten 80% aller verfügbaren Produkte auf
> 13,56 MHz arbeiten (abgesehen von ISO 15693, HID etc.).

Was heißt den konkret, welchen Teil der Karte kann ausgelesen werden? 
Kann z.B. ein "Datenbereich" verändert werden?

> Hoffe dir damit ein bisschen geholfen zu haben.

Jap, diese Aussage hilft mir auf jedenfall weiter.

von Andreas (Gast)


Lesenswert?

Welche Daten du zurück bekommst, hängt natürlich von der verwendeten 
Karte ab.Wenn es sich um eine Karte handelt, die ISO 14443-A (bis zu 
Layer 3) unterstützt, bekommst du auf jeden Fall die UID zurück. Das 
wären z.B. Mifare Classic, Mifare Ultralight, Mifare Mini, DESFire, 
Jewel/Topaz (nicht ganz konform zum Standard, geht aber mit dem PN532) 
usw. Wenn die Karte auch das T=CL Protokoll unterstützt (ISO 14443-A bis 
Layer 4 oder ISO 14443-B), kannst du unter Umständen noch mehr Daten aus 
der Karte lesen, das hängt allerdings stark von der Applikation ab. 
Solche Karten wären z.B. DESFire, gängige JavaCards (NXP's JCOP oder 
G&D's Convego ??), evtl auch der Reisepass mit Chip uvm.
Gängige Kommandos die man hier "probieren" kann, sind in der ISO 7816-4 
beschrieben.

Bis auf die Mifare-Ultralight und die Jewel/Topaz-Karten, fallen mir auf 
Anhieb allerdings keine Karten ein wo du beliebig Daten Lesen oder 
Schreiben könntest. Fast alle Karten verwenden irgendeinen 
Krypto-Algorithmus/-Mechanismus gegen den man sich zuerst authentisieren 
muss, d.h. man benötigt die entsprechenden Schlüssel.
Ich weiß z.B. nicht wenn man sich irgendwo Mifare-Classic Karten kauft, 
ob der Verkäufer dann irgendeine Art "Default"-Schlüssel mitliefert. Da 
kann man sich aber sicher erkundigen.

Das gleiche gilt für FeliCa-Karten und NFC-Geräte (basiert aus einem Mix 
von ISO 14443-A und FeliCa; Kommandos heißen alle nur etwas anders :-)). 
NFC ist generell ein offener Standard, jedoch hängt es wieder von der 
Applikation ab, ob du irgendwelche Schlüssel benötigst oder ob die Daten 
einfach so austauschen kannst.

lg.
Andreas

von Patrick L. (crashdemon)


Lesenswert?

Andreas schrieb:
> Ich weiß z.B. nicht wenn man sich irgendwo Mifare-Classic Karten kauft,
> ob der Verkäufer dann irgendeine Art "Default"-Schlüssel mitliefert. Da
> kann man sich aber sicher erkundigen.

Danke, für die ausführliche Antwort. So wie ich die Mifare-Classic 
Karten verstanden habe, haben diese doch keine Verschüsselung 
implementiert?

Kann man den mit dem Chip Personalasuweis und Reisepass auslesen, ich 
nehm mal an, dass das geht weil ja das ReinerSECT CyberJack ja auch 
einen PN532 einsetzt.

von Gerd E. (robberknight)


Lesenswert?

Wenn Du erst mal ein wenig mit dem PC experimentieren willst bevor Du 
das ganze in ein Embedded-Gerät mit µC steckst:

http://nfc-tools.org

und darauf aufbauend:

https://code.google.com/p/nfc-tools/

von Andreas (Gast)


Lesenswert?

Hallo,

Doch, auch Mifare-Classic verwenden bereits eine Verschlüsselung (den 
allerersten Datenblock kann man - glaube ich - aber ohne Authentisierung 
zumindest lesen; da steht nichts Geheimes drin). Du musst dich auf jeden 
Fall beim Verkäufer erkundigen mit welchem Schlüsseln die Mifare-Classic 
Karten ausgeliefert werden.

Reisepass kann man theoretisch schon mit einem PN532 ansprechen, aber 
ich glaube nicht dass man da sehr weit kommt, da die Daten natürlich 
entsprechend gesichert, d.h. verschlüsselt sind - ebenso wie die 
Kommunikation selbst.
Könnte man sich aber sicher im Detail ansehen => Stichwort: "ICAO" / 
"MRTD" (Spezifikation). FÜr MRTD gibt es glaube ich sogar eine Open 
Source Library die sogar mit dem PN532 funktionieren könnte.

Beim Perso weiß ich leider nicht bescheid, könnte aber durchaus sein, 
dass da die ICAO / MRTD Spezifikation ebenfalls greift.

lg.
Andreas

von Patrick L. (crashdemon)


Lesenswert?

Andreas schrieb:
> Doch, auch Mifare-Classic verwenden bereits eine Verschlüsselung (den
> allerersten Datenblock kann man - glaube ich - aber ohne Authentisierung
> zumindest lesen; da steht nichts Geheimes drin). Du musst dich auf jeden
> Fall beim Verkäufer erkundigen mit welchem Schlüsseln die Mifare-Classic
> Karten ausgeliefert werden.

Ok, kommt hier anders rüber: https://www.youtube.com/watch?v=Q7MU6v3Gmfg

> Reisepass kann man theoretisch schon mit einem PN532 ansprechen, aber
> ich glaube nicht dass man da sehr weit kommt, da die Daten natürlich
> entsprechend gesichert, d.h. verschlüsselt sind - ebenso wie die
> Kommunikation selbst.

Ach, jetzt verstehe ich glaub ich langsam. Also es gibt einen Teil der 
Kommunikation der "standardisiert" ist, z.B. nach ISO 14443-A, zunächst 
wird die Karte den standard ablauf abklopfen. Ist das erfolgt folgt der 
properitäre Teil, der dann Daten abseits der Standardisierung 
bereitstellt.

> Könnte man sich aber sicher im Detail ansehen => Stichwort: "ICAO" /
> "MRTD" (Spezifikation). FÜr MRTD gibt es glaube ich sogar eine Open
> Source Library die sogar mit dem PN532 funktionieren könnte.

Ok, das ist die Spezifikation die bei den Ausweisdokumenten eingesetzt 
wird.

http://www.icao.int/Security/mrtd/Pages/Downloads.aspx

Das bedeutet das wäre der Properitäre Teil von dem ich oben gesprochen 
habe. Das auslesen sollte dann grundsätzlich mit imho dem PN532 gehen, 
es muss nur evtl. entsprechende Software geschrieben werden die Daten 
enkodiert? Bzw. das geht nur solange bis die eine Authentifiezierung 
gegnüber der Karte stattfinden muss.

Bitte korrigieren wenn ich irgendwie falsch liege.


Senden die Karten den permantent einen Satz von Daten an das Lesegerät, 
oder sendet man immer einen "Befehl" (nur Leser-Gerät?) an die Karte und 
die liefert dann den entsprtechenden Datenblock.

Evtl. wäre es hier einfacher mich auf gute Einführungsliteratur zu 
verweisen ;-)

von BeastyK (Gast)


Lesenswert?

Moin Patrick,

hast du das Datenblatt zum Chip schon gelesen?

Mal ein Link geb: http://www.adafruit.com/datasheets/pn532um.pdf

Guten Rutsch
dat
Beast

von Andreas (Gast)


Lesenswert?

Hallo,

Die Standards wie z.B. ISO 14443-A (Teil 3) definieren wie eine 
kontaktlose Karte im Feld gefunden und selektiert wird (falls mehrere 
vorhanden sind).
Das wird soweit auch von Mifare* unterstützt.
Sobald so eine Karte selektiert wurde, kommt es weiters darauf an ob 
jetzt mit einem proprietären Protokoll fortgesetzt wird (z.B. Mifare) 
oder mit standardisierten Kommandos, basierend auf ISO 14443-A (Teil 4). 
Dieser Teil definiert das sogenannte T=CL Protokoll, welches ein 
einfaches Übertragungsprotokoll darstellt (Daten-, Steuer-, 
Kontrollblöcke usw.).
In 99% der Fälle bei T=CL werden Kommandos verwendet, welche in der ISO 
7816 spezifiziert sind (z.B. SELECT, GET DATA, UPDATE etc.).

Elektronische Reisepässe, die konform zur ISO 14443-A oder -B sind, kann 
man mit den oben erwähnten Standards problemlos im Feld finden und 
selektieren. Auf die Daten selbst (z.B. Name, Geburtsort, Foto usw.) 
kommt man dann nicht mehr ran, weil diese eben verschlüsselt gespeichert 
und auch übertragen werden. Aber, wie du schon erwähnt hast, findest du 
die Details dazu in der ICAO / MRTD Spezifikation (oder diversen Open 
Source Libraries).

Wenn du dich generell in das Thema Smartcards, RFID, NFC einarbeiten 
möchtest, empfehle ich
o) Das RFID-Handbuch (Klaus Finkenzeller)
o) Handbuch der Chipkarten (Wolfgang Rankl)
o) RFID: MIFARE und kontaktlose Smartcards angewandt (Gerhard Schalk)

Für NFC gibt es inzwischen zwar auch schon einige Bücher, aber die sind 
(nur meine persönliche Meinung) bei weitem nicht so umfangreich wie die 
oben genannten Bücher.

Generell würde ich allerdings die Standards, sowie die User Manuals und 
Datenblätter auf den Herstellerseiten empfehlen. Gerade von NXP, 
Infineon, G&D, Gemalto usw. lässt sich zu dem Thema schon einiges 
finden.

Bei NFC fällt mir neben den eigentlichen Standards (ECMA 340 oder ISO 
18092 - sind beide identisch ausser das die ECMA Variante kostenlos ist) 
noch die Standardisierungsorganisation "NFC-Forum" ein; da kann man 
kostenlos (war es zumindest mal) Standards, Whitepaper uvm. runterladen, 
welche alle mit NFC zu tun haben.

Hoffe das hilft dir ein bisschen weiter - ansonsten einfach nochmal 
melden :-)

lg.
Andreas

von Patrick L. (crashdemon)


Lesenswert?

Andreas schrieb:
> In 99% der Fälle bei T=CL werden Kommandos verwendet, welche in der ISO
> 7816 spezifiziert sind (z.B. SELECT, GET DATA, UPDATE etc.).

Ah ok, da werden die selben Befehle wie für Smartcards genutzt.

Andreas schrieb:
> Wenn du dich generell in das Thema Smartcards, RFID, NFC einarbeiten
> möchtest, empfehle ich
> o) Das RFID-Handbuch (Klaus Finkenzeller)
> o) Handbuch der Chipkarten (Wolfgang Rankl)
> o) RFID: MIFARE und kontaktlose Smartcards angewandt (Gerhard Schalk)

Gut dann werde ich mich mal einlesen, danke für die Literaturhinweise.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.