Mifare Plus Card Debugging Zusammenfassung

Dec 07, 2020

Eine Nachricht hinterlassen

Standardmäßig ist die von nxp ausgegebene Pluskarte eine nicht initialisierte Karte auf L0-Ebene. Zu diesem Zeitpunkt zeigt der aktive Vorgang, dass er die CPU-Karteneigenschaften von ISO1443-4 (ATQA: 02 00, SAK: 20 UID: CD 65 E5 03) unterstützt, wenn schreibbezogene AES ausgeführt wird Nachdem der KEY und der Datenblock initialisiert und festgeschrieben wurden, tritt er in die Sicherheitsstufe L1 ein. Der aktive Betrieb zeigt die Eigenschaften einer M1S70-Karte (ATQA: 02 00, SAK: 18 UID: CD 65 E5 03), aber in der Tat kann es immer noch ISO1443-4 unterstützen, Die Ratten werden erfolgreich ausgeführt (es muss auch unterstützt werden, sonst können switchL2 und switch3 Operationen nicht durchgeführt werden). Nachdem die switchL2-Authentifizierung auf L1-Ebene durchgeführt und in die L2-Ebene konvertiert wurde, ist der Rückgabewert nach dem aktiven Vorgang (ATQA: 02 00 SAK:11, UID: CD 65 E5 03). Wenn es im vorhandenen Treiber keine solche übereinstimmende SAK gibt, handelt es sich um einen unbekannten Kartentyp. Nachdem die Switch3-Authentifizierung auf der Sicherheitsstufe L2 durchgeführt wurde, wird die Karte auf die Sicherheitsstufe L3 aktualisiert, und der Rückgabewert ist (ATQA: 02 00 ,SAK:20, UID:CD 65 E5 03).

Ausführen von Vorgängen auf L1- und L2-Ebene im aktiven Zustand (ISO14443-3-Schicht); Wenn sich die Karte auf L1-Ebene befindet, können M1-bezogene Schnittstellen vollständig implementiert werden, oder die AES SL1-Zertifizierung kann zuerst durchgeführt werden, und dann kann die M1-Zertifizierung durchgeführt werden. Nach der AES SL1-Authentifizierung müssen Sie keine Sitzungsschlüsselbasis generieren und mit dem M1-Schlüssel berechnen, um den neuen M1-Schlüssel als echten M1-Authentifizierungsschlüssel abzuleiten, verwenden Sie einfach den ursprünglichen M1-Schlüssel direkt (dieser Punkt unterscheidet sich von der L2-Ebene).

 

Auf L0-Ebene ist der Rückgabecode von PICC nach der Ausführung ACK/NAK konsistent mit der M1-Karte, es ist ein Nibble-Rückgabecode ohne CRC, also wenn die CRC-Prüfung aktiviert ist, tritt ein CRC-Fehler auf;

Im AES-Authentifizierungsprozess auf L1-Ebene gibt der Nak, wenn die Ausführung korrekt ist, den Rückgabecode und die Informationen mit CRC zurück, und wenn ein Fehler auftritt (AES-Schlüsselfehler, RNDB-Entschlüsselungsfehler usw.), gibt er den NAK entsprechend der M1-Karte zurück, was ein halbes Byte ist und es keinen CRC-Fehler gibt. tritt ein CRC-Fehler auf.

Die switchL2-Anweisung wird auf ISO14443-4-Ebene ausgeführt. Nachdem die Ausführung erfolgreich war, gibt das PICC die Sicherheitsstufe L2 ein. Zu diesem Zeitpunkt wird die switchL2-Anweisung bei der ersten Übertragung von Cmd+BNo+LenCap+PCDCap2 ausgeführt, die zwei Statusbytes 0x02, 0x09 zurückgibt. 0x09 kann als ungültige Blocknummer verstanden werden, aber 0x02 kann nicht verstanden werden.

 

In der L2-Ebene muss, wie im Handbuch angegeben, die AES-Authentifizierung vor der M1-Authentifizierung durchgeführt werden, und die unteren 6 Bytes der von AES generierten Sitzungsschlüsselbasis sind XORed mit dem M1-Schlüssel des eigentlichen Blocks, um der echte M1-Blockauthentifizierungsschlüssel zu werden. Nach dem Testen muss der AES-Schlüsseltyp mit dem M1-Schlüsseltyp übereinstimmen (d. h. beide sind A oder B), andernfalls schlägt die M1-Authentifizierung fehl! Wenn die AES- und M1-Schlüsseltypen und -wertesektor A mit dem Sektor B im Einklang stehen, der Zugang zu Sektor B nach der Authentifizierung von Sektor A mit dem Zugang zu Sektor A vereinbar ist und kein Zugang zu Sektor B.

Während des Debuggens von mifPLAuthInPro auf der L2-Sicherheitsstufe, wenn s_AESCbcEnDecrypt aufgerufen wird, wird die Eingabe iv nach Abschluss der Verschlüsselung und Entschlüsselung neu geschrieben, was zu der nächsten Verschlüsselung und Entschlüsselung iv Änderungen führt und die Verschlüsselung und Entschlüsselung fehlschlägt! Müssen auf den Wert von iv achten!

Auf der Sicherheitsstufe L2 muss die obligatorische AES+M1-Schlüsselauthentifizierung den AES-Schlüsseltyp mit dem M1-Schlüsseltyp konsistent halten (d. h. AES TypeA Key+M1 TypeA Key oder AES TypeB Key+M1 TypeB Key, z. B. AES TypeA Key+M1 TypeB Key Authentication schlägt fehl, selbst wenn die Schlüssel korrekt sind!)

Nach Abschluss des Debuggens auf L2-Ebene können Sie FirstAuth wiederholt ausführen, und der von FirstAuth erhaltene TI-Wert ist jedes Mal anders. Nach der korrekten FirstAuth-Authentifizierung und dem Abrufen von TI kann die korrekte FollowAuth durchgeführt werden (followAuths iv basiert auf der FirstAuth-Authentifizierung). Nachdem die richtige FirstAuth einmal ausgeführt wurde, kann der followAuth wiederholt werden. Da FirstAuth und followAuth im ISO14443-4-Modus ausgeführt werden, verbleibt PICC im ISO14443-4-Modus, wenn ein Fehler auftritt, und es besteht keine Notwendigkeit, die Karte erneut zu durchsuchen.

Die MultiWriteBlock- und MultiReadBlock-Befehle der L2-Sicherheitsstufe unterstützen nur mehrere Lese- und Schreibvorgänge im selben Sektor! Die ReadBlock- und WriteBlock-Befehle der L3-Sicherheitsstufe unterstützen das kontinuierliche Lesen und Schreiben von Datenblocks sektorübergreifend (nur in diesem Sektor!!!)

L3 Sicherheitsstufe folgenAuth-Operation, um ENC KEY und MAC KEY Verschlüsselung verwendet iv Vektor ist 0 anstelle von TI + W_ctr + R_ctr !

 

Im ISO14443-4-Modus muss der FirstAuth-Vorgang ausgeführt werden, solange ein Fehler vorliegt!

 

Verständnis für M1-Kartenwertoperationen: Das Wesen des Befehls Wiederherstellung besteht darin, den entsprechenden Wert des eingehenden Datenblocks (muss im Wallet-Format sein) in einen 16-Byte-Übertragungspuffer innerhalb der M1-Karte zu kopieren, und die Essenz des Befehls "Übertragen" besteht darin, dass der Wert des Übertragungspuffers innerhalb der M1-Karte in den eingehenden Datenblock kopiert wird. Die Essenz des Befehls Increment besteht darin, den Wert des Eingabe-Wallet-Blocks zum Mehrwert hinzuzufügen und ihn in den Transferpuffer zu kopieren, sodass der Befehl "Übertragen" erneut aufgerufen werden muss, um den Wert "Transfer Buffer" in den angegebenen Datenblock zu kopieren.


_0003s_0001_A981B9EF78ED2D226AB9184F3A7BDCDF

https://www.szrcloud.com/card-reader/rfid-card-reader/rfid-card-reader-in-games.html