Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben (https://www.delphipraxis.net/204277-nfc-ndef-tags-mit-der-winscard-dll-lesen-schreiben.html)

DeddyH 13. Mai 2020 16:48

NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Ich versuche mich gerade an NFC unter Windows. Dabei möchte ich möglichst auf propietäre Lesegeräte-Treiber verzichten und stattdessen ausschließlich die WinSCard.dll ansprechen. Mittlerweile bin ich soweit, dass ich anhand der ATR die gebräuchlichsten Karten (MIFARE Classic, MIFARE Ultralight etc.) erkennen und deren UID auslesen kann. Nun müsste ich "nur noch" den NDEF-Tag komplett auslesen und beschreiben können. Ich bin bereits mehrere Dokus durchgegangen und je mehr ich lese, desto vewirrter werde ich. Wenn ich es richtig verstanden habe ist es in den meisten Fällen möglich, Pseudo-APDUs an die Karte zu senden. Nur wie die auszusehen haben, überfordert mich derzeit, zumal ich auch nicht weiß, wie NDEF zu kodieren/dekodieren ist. Kennt jemand eine Unit (gern auch kostenpflichtig) oder ersatzweise eine verständliche Doku, die mir weiterhelfen könnte?

mensch72 13. Mai 2020 22:45

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Du solltest dein Ziel in 2 Teilprobleme unterteilen:
1. RFID-Karten und Tags "erkennen" und ausser UID auch "alles was geht" direkt lesen/schreiben... für AndroidSmartphones mit NFC gibt es das einige gute APPs die das können. So siehst du schonmal was auch bei dir an Nutzdaten heraus kommen sollte
2. prüfen, ob die RFID-Daten NFC/NDEF kompatibel formatiert sind, wenn ja ab hier "NDEF konform" weitermachen, wenn nein Möglichkeit schaffen selbst eine NFC-NDEF konforme Formatierung durchzuführen(entweder HighLevel, oder via BinaryWriteData)


ergänzend zu 1) ..."Pseudo-APDUs an die Karte zu senden. Nur wie die auszusehen haben, überfordert mich derzeit,"...
- ISO14443(MifareClassic,MifareUltralight,MifareDesf ire)
- ISO15693(ICODE-SLI,-SLIx,-SLIx2,-DNA)

ergänzend zu 2) ..."zumal ich auch nicht weiß, wie NDEF zu kodieren/dekodieren ist"
- ISO18xxx

Wenn du es wirklich wissen&verstehen willst, dann kommst du um die in den ISO's dokumentierten allgemein gültigen Befehlssequencen nicht herum... dazu kommen dann jeweils immer noch Hesteller&Typ spezische propitäre Sicherheitsfeatures wie Read/Write/Init/Lock-Passwörter.


Ich würde dir Empfehlen unter Android damit zu beginnen...
https://www.winsoft.sk/anfclib.htm (140$)
da wird dir via Delphi und Beispielen im Prizip ALLES von HighLevel(NFC-NDEF) bis LowLevel(RFID-BinaryReadWrite) gezeigt!

Auch unter Windows würde ich zunächst mit einer gut dokumentierten HerstellerLösung(also Gerät+API) anfangen... arbeite dich zunächst mal in die Logic ein. Wenn das dann klar, bietet jeder gute Hersteller auch den Support um seine Geräte via Windows StandardAPIs anzusprechen. Wenn du gut "Schichten orientiert" programmiert hast, kannst du dann bei dir simpel die untere Protokoll&Übertragungsschicht anpassen/austauschen und schon läuft alles per StandardWindowsAPIs.


Wenn du voll auf HardCore stehst, kannst dir auch alles kostenlose meist sehr "C" lastige Zeug wie "libnfc" und "librfid" ansehen und versuchen da was unter Windows und Delphi ans laufen zu bekommen;)

DeddyH 14. Mai 2020 06:46

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Danke für die detaillierten Infos. Ich hätte nicht gedacht, dass dermaßen viel Arbeit dahintersteckt. Für alle möglichen Sprachen inkl. Javascript gibt es Libraries, nur für Delphi mal wieder nicht. Ich habe jetzt auf Torry eine Demo gefunden und dem Autor gemailt, mal sehen, was dabei herumkommt. Um alles vom Urschleim an selbst zu machen fehlt mir einfach die Zeit.

TurboMagic 15. Mai 2020 06:38

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Grundlegenden Zugriff unter Android birtet aut Brian Long's kostenfreie Lösung.
Zu finden irgendwo auf blong.com

DeddyH 15. Mai 2020 12:04

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Es geht nicht um Android, sondern um Windows.

TurboMagic 17. Mai 2020 09:56

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Ich habe verstanden, dass es am Ende um Windows geht.

Es könnte aber (aus eigener Erfahrung mit dem Thema - nur etwas andere Anforderungen als deine)
unter Android am Anfang etwas einfacher umzusetzen zu sein und man könnte dort dann evtl. ein
paar Dinge schon mal testen, auch wenn man unter Windows noch Probleme hat.

Falls du nicht alleine an dem Projekt arbeitest könnte eine solche Testmöglichkeit anderen
Mitarbeitern am Projekt die Möglichkeit zur Weiterarbeit seines Teils geben auch wenn du
sonst noch mit Windows kämpfst.

mensch72 17. Mai 2020 10:34

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
..."Wenn du gut "Schichten orientiert" programmiert hast, kannst du dann bei dir simpel die untere Protokoll&Übertragungsschicht anpassen/austauschen und schon läuft alles per StandardWindowsAPIs."...

Ich wiederhole mich einfach mal:
du hast ja eh mindestens 2 getrennte Probleme zu lösen... 1. (Native)Kommunikation&CardDetect... 2. NFC-NDFF Daten-Formatierung&Decodierung

Egal welche Plattform, wenn man es sauber programmiert ist der zweite Aufgabenteil zu 95% Hardware&Plattform unabhängig.
Ob also existierende DelphiBeispielCodes für Android, Linux oder propitäre Windows-HerstellerDLL für "Teil eins" genutzt wird ist doch wurscht, Hauptsache du hast sot zeitnah was lauffähiges vor dir. Dann erarbeitest du dir ergebnisorientiert "Teil 2" und "bastelst" dir deine WinSCard Variante.

Wenn du dir die WinSoft.SK Delphi-Lösung für Android incl. SourceCode kaufst und funktional analysierst... und dir dann alles unter https://github.com/johnidm/PCSCSmartCardComponent auch mal genau ansiehst und analysierts... dann wirst du erkennen wie du was mit der WinSCard.DLL machen musst;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz