Kontaktlose Karte über OmniKey, wie bekomme ich "UID"?

8

Ich versuche, Informationen von einer Smartcard mit einer kontaktlosen OmniKey 5321-Karte zu lesen Leser.

Bearbeiten : Ein Bounty hinzugefügt.

Ich schreibe ein C # 3 in .NET 3.5-Programm, also ist dies eine Windows-Anwendung.

Auf der Karte sind einige Informationen eingeprägt, von denen ich annehme, dass sie in den Kartendaten vorhanden sind (unten ist ein Foto der Karte und des Lesers).

Auf der Karte sind folgende Informationen eingeprägt:

%Vor%

Wenn Sie die Diagnoseanwendung verwenden, die mit dem OmniKey-Kartenleser geliefert wird, erhalte ich folgende Informationen:

%Vor%

Nun, hier sind einige Conversions, die ich in Betracht gezogen habe:

  • 447 dezimal = 1BF hexadezimal (nicht gefunden)
  • 447 oktal = 295 dezimal (nicht als BCD-Typ-Codierung gefunden)
  • 447 oktal = 127 hexadezimal (nicht gefunden)
  • 447 hexadezimal wird nicht gefunden

Hier sind meine Fragen:

  • Ist die "UID" -Nummer eine eindeutige Nummer, auf die ich mich verlassen kann? Die Nummer 447 interessiert mich nicht, ich muss nur wissen, dass die Informationen, die ich aus dieser Karte herauslese, sie später eindeutig identifizieren, sodass ich sie mit dem Besitzer der Karte verknüpfen kann
  • Wie würde ich die UID-Nummer lesen? Mit WINSCARD.DLL in Windows kann ich sehen, dass ich die "ATR" Daten jedes einzelne Byte, aber die UID ist offensichtlich nicht in diesem Teil.

Hier ist das Foto, wenn das irgendwelche Informationen gibt.

    
Lasse Vågsæther Karlsen 21.12.2010, 09:05
quelle

6 Antworten

2

Sie können sich auf UID verlassen, aber in Ihrem Fall scheint es abgeschnitten zu sein:

%Vor%

Uid sind normalerweise 16 Bytes lang.

Sie können das lesen Unique Identifier (UID): Alle ISO-kompatiblen Smartcards erhalten eine UID-Nummer (ähnlich einer VIN-Nummer in einem Fahrzeug). Zum Zu Interoperabilitätszwecken ist die UID einer Karte offen und kann von allen kompatiblen Lesern gelesen werden. Da diese eindeutige Nummer nicht durch Schlüssel gesichert wird, ist das Lesen der UID einer Smartcard vergleichbar mit dem Lesen einer Proximity-Karte, Magnetstreifenkarte oder einer anderen Technologie, die offene, ungesicherte Nummern verwendet.

Ссылка

    
VGE 27.12.2010, 10:22
quelle
12

Ich habe vor kurzem zu viele Stunden damit verbracht, nach einem kompletten Beispiel zu suchen, wie man die ATR von OMNIKEY und die OMNIKEY Proximity-Karte bekommt ...

Jetzt, da ich meinen Code funktioniere, möchte ich teilen, damit andere davon profitieren können.

Der beste Code, den ich gefunden habe, stammt von SpringCard. (Danke!)

Andere Beispiele, die ich fand, waren zeitverschwendend und irreführend und funktionierten nicht, weil der DllImport falsch war ...

%Vor%     
chris 18.02.2013 14:58
quelle
4

UID kann über PC / SC 2.01-konformen Funktionsaufruf gegen winscard.dll gelesen werden. Bei iCLASS-Karten ist es normalerweise 8 Byte lang. Andere Karten geben eine UID von 4 bis 8 Byte zurück (sie fungiert wie eine Telefonnummer, um mehrere Karten im Feld zu identifizieren und schließlich eine auszuwählen). Die APDU kann über den Standard SCardTransmit() mit CLA=0xFF ausgetauscht werden, um den Zugriff auf die kontaktlose Speicherkarte anzuzeigen.

Marc

Ссылка

HINWEIS: Die UID spiegelt NICHT die auf der Karte aufgedruckte Kartennummer wider. Die Kartennummer ist Teil der Wiegand-Daten, die in der HID PAC-Anwendung der Anwendung 1 auf Seite 0 dieser Karte gespeichert sind.

    
Marc 28.03.2011 04:40
quelle
0
  1. Unique Identifier (UID): Alle ISO-konform Smartcards werden mit einer UID-Nummer versehen (ähnlich einer Fahrgestellnummer in einem Fahrzeug). Quelle: Ссылка
  2. Über das Lesen der UID: überprüfen Ссылка , es scheint zu zeigen, wie es geht.
Nickolay Olshevsky 28.12.2010 13:18
quelle
0

Auch wenn die UID-Nummer Teil des Standards ist und der Standard sagt, dass sie weltweit einzigartig sein sollte, müssen Sie daran denken, dass Hersteller oft nicht-konforme (aber funktionierende) Karten produzieren.

Fazit: Solange Sie nichts Einzigartiges auf die Karte legen, können Sie nicht sicher sein, dass der Link von der Karte zu einem Karteninhaber erfüllt ist.

    
Robert 28.12.2010 18:31
quelle
0

Die ATR ( A nswer T o R ) setzt nur das Format der Karte, das Protokoll und die Prüfsummen fest dieser Daten. Siehe ATR Parsing online

Nun wissen Sie, um welche Karte es sich handelt, dann müssen Sie die entsprechende (RS232 / RS485 / ZPL II / APDU - Smartcard A Anwendung P Protokoll anwenden D ata U nit wie in ISO / IEC 7816-4 definiert), um die UID zu erhalten (abhängig davon, ob es sich um Kaskade 1, 2 oder 3 handelt, siehe ACG HF Multi ISO RFID Reader v1.0 Seite 50 aka Omnikey5553 RS232) - für 14443 ist es bis zu 14 Bytes lang, besetzt die ersten beiden Blöcke im ersten 16-Byte-Sektor (Sektor 0) und hat Prüfsummen eingebettet. (Siehe ISO14443-Protokolle oder NXP Semiconductors MF1ICS50-Spezifikationen Seite 8).

Für 15693 geben die RS232 / RS485-Befehle eine volle 16-Byte-UID an (S) (Omnikey5553 RS232 und USB) zurück, aber auf APDU werden nur die letzten 8 Bytes (0xFF 0xCA 0x00 0x00 0x00 auf einem Omnikey5022) zurückgegeben Da der Standard der 15693 ist, antwortet die Karte nur mit 8 Bytes gleichzeitig. Für 14443 können Sie jeweils einen Sektor lesen (32 Bytes von 4 Blöcken zu je 8 Bytes, Logging in den Sektor vor dem Lesen / Schreiben für den S50), aber für 15693 können Sie nur einen Block von 8 Bytes gleichzeitig lesen / schreiben , und hat andere Daten im zurückgegebenen Puffer. Sie müssen codieren, ob Sie die Daten bei 32 oder bei 8 "blockieren". Dies verwendet das Standard-SCardTransmit-Smartcard-Protokoll für Windows-API. Da die Diagnoseanwendung 16 Byte zurückgegeben hat, ist dies die UID der Karte. Darüber hinaus verwenden einige 15693 die 14443 invertierte Taste, um zu verschleiern und zu verhindern, andere halten ein Mikro-Programm, das die Validierung durchführt - entweder auf dem PC oder auf der Karte selbst.

In allen Fällen hat dies keine Beziehung zu dem, was auf der Karte aufgedruckt ist - wir verwenden CODE128C-Barcodes, die auf EV1-Plastikkarten gedruckt sind und eine GUID enthalten, die auf die entsprechende UID in einer Datenbank für Transaktionen verweist. Andere (wie Wiegand usw.) drucken andere Daten wie Ortskennzahlen, Schlüsselsätze usw.

Zusätzliche Probleme treten auf, wenn Sie versuchen, Daten in den 15693 zu schreiben - stellen Sie sicher, dass Sie Ihre Daten an der 4 char-Schnittstelle beenden, sonst haben Sie Probleme mit früheren Daten, wenn Sie versuchen, eine Null '0x00' über ein vorhandenes Zeichen in a zu schreiben Block - also Code für Gürtel, Hosenträger und ein Stück Schnur nach dem Aktualisieren / Schreiben auf eine Karte, um sicherzustellen, dass die Daten wie benötigt sind. Wenn der ganze Block von Null ist, kein Problem, da die Daten als ein Block von 4 Zeichen geschrieben werden. Löschen Sie den Kartenbenutzerbereich NICHT unnötig, da sie NAND-basiert sind und nur begrenzte Schreibzugriffe haben. (Nach dem Schreiben lesen Sie die Karte erneut, um sicherzustellen, dass die geschriebenen Daten wie geschrieben sind!)

Die UID sollte innerhalb des Kartenausgabesatzes eindeutig sein, hängt aber auch von der Kartenquantitätsreihenfolge ab - weshalb die Seriennummer 2-mal erweitert wurde (die Kaskadennummer) und ausnahmsweise einmal Ihr Vertrauen in Ihr System mindern sollte die UID von einem Apple-Telefon, da es das U in UID verletzt - es kann so eingestellt werden, dass es eine andere UID emuliert.

NDEF ist ein weiterer Aspekt von Karten, der verstanden werden sollte - in NFC-NDEF-Standards ist er gut erklärt, sei aber vorsichtig mit den OTP- und LOCK-Bereichen von 14443, da sie nur einmal einbahnig sind.

Sie können immer ein Android-Telefon mit NFC und der TagData-App zur Überprüfung verwenden.

    
Steve 02.03.2018 14:20
quelle