Delphi-PRAXiS
Seite 1 von 2  1 2      

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;)

QuickAndDirty 31. Jul 2025 14:17

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Zitat:

Zitat von DeddyH (Beitrag 1464491)
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?

Ich habe mir das mal angesehen auf github gibt es einige implementierungen von winscard.h für delphi.
Weist du woran man winscard.dll compatible Mifare classic und desfire leser erkennt?
Also nicht welchen myfare stadard die unterstützen sondern ob die mit winscard.dll zusammen arbeiten.

himitsu 31. Jul 2025 14:36

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Nee. Wir haben einen billigen USB-Reader hier, aber der will nicht, obwohl er sollte.

Ansonsten verwenden wir die Reader von Feig und Datafox, mit deren DLL/API.
https://www.feig.de/rfid-und-barcode-systeme/ -> Rubrik = Tischleser
https://www.datafox.de/produkte-loes...bersicht#c6993

der TWN4 RFID-Leser könnte vielleicht das WinSCard unterstützen. (die API von DataFox unterstützt er jedenfalls nicht)
https://www.datafox.de/produkte-loes...usb-rfid-leser (den TWN4 gibt es wo anders halb so teuer, z.B. bei A)



Es kommt drauf an, was du von der WinSCard.dll haben willst.
Einige der WinAPI findest du unter (23.0 = Delphi 12)
C:\Users\%username\Documents\Embarcadero\Studio\23.0\CatalogRepository\WindowsAPIfromWinMD-1.0\Windows.Security.Credentials.pas

In der Delphi-Suche (Strg+Shift+F) das Verzeichnis $(BDSCatalogRepository)

Und natürlich vorher im GetIt das "WinMD" installiert. (aber https://www.delphipraxis.net/214473-...vor-winmd.html)

Neumann 31. Jul 2025 21:15

AW: NFC - NDEF-Tags mit der WinSCard.dll lesen/schreiben
 
Ich habe Reader wie den TWN4 schon für verschiedene Zwecke eingesetzt, aber immer nur die ID gelesen über pseudoserielle Schnittstelle. Alles andere hat dann das Programm gemacht. Die Notwendigkeit auf den Karten zu schreiben oder andere Daten als die ID zu lesen konnte ich immer vermeiden.

Ausnahme war Contidata, auf deren Karten wird direkt Geld gespeichert aber da gab es dann eine DLL mit Doku und dann ging das recht einfach.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 1 von 2  1 2      

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