[elektro] NFC

r3flow zoltan.nagy at vivor.hu
Mon Dec 21 16:58:21 CET 2015



On 2015.12.21. 15:31, Jozsef Valkai wrote:
> En otthon ezeket a tag-eket mivel es hogyan programozom fel?
>
> Nem akarok olvasni konyveket hozza. :)


Ha csak eseményeket akarsz kiváltani tagekkel, akkor neked ehhez semmit 
nem kell tenned. A sima Mifare Classic tag első blokkjának első szektora 
csak olvasható (manufacturer block), abban van egy 4 bájtos UID ami bár 
nem sok, de jó eséllyel nem lesz két taged amiben ez egyforma. Az ilyen 
eseménykezelő appok ez alapján ismerik fel a taget, egyszerűen 
megmutatod neki, ha ezt a taget látod akkor ne csörögj ki ha hívás jön. 
Ilyen appokkal dunát lehet rekeszteni. Ezek az appok is képesek adatot 
is írni a kártyában lévő 704 bájt területre, URL-t, SMS-t, stb. írni a 
tagbe. Nem próbáltam még, de az klassz lenne mondjuk ha telefon 
névjegyzéből névjegyet is lehetne bele menteni, a taget egy 
névjegykártya hátuljára ragasztva, azt később telefonhoz érintve 
bekerülne a telefonba a névjegy. Mondjuk.

pl.
https://play.google.com/store/apps/details?id=com.anytag.android

Átlagfelhasználó számára ezek teljesen konyhakészek.

-------------------------------------------------------------

Abban az esetben ha a 704 bájt memóriába teljesen egyedi adatokat akarsz 
írni, akkor erre ott van pl. a Mifare Classic Tool 
https://play.google.com/store/apps/details?id=de.syss.MifareClassicTool&hl=hu

Vagy PC-n a libnfc vagy csillió ezer másik könyvtár. A libnfc is sokféle 
eszközt támogat: 
http://nfc-tools.org/index.php?title=Devices_compatibility_matrix

Ezek nagy része kapható aliexpressen is sokan használják az ACR122U-t. 
Én nem dobozolt verziót használtam, hanem PN532-t egy USB/RS232 
kábellel: 
https://www.itead.cc/prototyping/basic-module/itead-pn532-nfc-module.html

Annyit érdemes még tudni, hogy a Key-A és Key-B (opcionális a 
használatuk) az NXP útmutatásait használva sok fejlesztéssel elég jó 
védelmet ad, de sajnos ma már törhető, a githubon is van erre a célra kód.

----------------------------------------------------------------

Teljes klónozás: A szabványos Classic tag első 16 bájtja (manufacturer 
block) read-only 
https://www.firefart.at/wp-content/uploads/2015/04/mifare_memory_layout.png 
de aliexpressen (sajnos?) lehet kapni olyan tageket is amelyeknek írható 
az első 16 bájtja is. Ezek nevében szerepel, hogy "UID changeable" vagy 
"block 0 writable", ezekre nem érdemes saját fejlesztést építeni, de 
valaki más tagjét lemásolni kiválóak.

Például nagyon sok cégnél használnak beléptetésre ilyen NFC tageke. 
Amikkel eddig én találkoztam azok sima 1K Classic kártyák voltak, 
megdöbbentő módon tök üresek, gyári alap kulcsokkal (0xFFFFFFFFFFFF). Az 
ajtókon a beléptetők csak az első szektorban a 4 bájtos UID-t 
ellenőrizték semmi mást, és kinyílt az ajtó. Kipróbáltam ilyen kínai 
taggel aminek írható az első 16 bájtja, csak az első 8 bájtot másoltam 
át (az UID mellett van checkum is ezért nem elég az első 4 bájtot 
átmásolni) és szépen nyitotta az ajtókat.

Azoknál a kínai klón kártyáknál amelyeknél írható az első 16 bájt, ott 
az első 16 bájt írása előtt egy speciális unlock parancsot is kell 
küldeni a kártyának. Az androidos appok ezt nem tudják, mert az android 
API-ban nincs implementálva ez a parancs. A libnfc-hez tartozik néhány 
parancssori tool is, tehát nem feltétlenül kell kódot írni a kártya 
megszólításához.

http://manpages.ubuntu.com/manpages/wily/en/man1/nfc-mfclassic.1.html

Eredeti Tag olvasása amennyiben nem védi kulcs (pl. a céges belépő):
nfc-mfclassic r a tag.dmp

Tag teljes írása, beleértve az első szektort is (megfelelő kínai tag 
esetén):
nfc-mfclassic W a tag.dmp

A w helyett a W jelzi, hogy unlock parancsot is küldjön a tagnek írás 
előtt. Az ilyen klónozásra való tagekre azért nem érdemes saját 
fejlesztést építeni mert az "unlock" parancs amit ezek kezelnek nem csak 
íráskor működik hanem olvasáskor is, azaz unlock után a kulcsok (Key-A 
és Key-B) ismerete nélkül is kiolvasható lesz a kártya, szóval ez 
tényleg csak másolásra jó (az más kérdés, hogy az NXP biztosan nem örül 
annak, hogy ilyenek léteznek). Viszont azoknál a kínai tageknél 
amelyeknél nem írható az első 16 bájt (a döntő többség az ilyen) azok 
teljesen szabványosak.

Z.



More information about the Elektro mailing list