2016-04-07 7 views
-1

Bitte,APDU Schreibblockbefehle auf Mifare 1K mit ACR122U Leser

Ich versuche, eine einfache Binärblock zu schreiben 1k-Tag mit einem ACR122U Leser Mifare.

Ich versuche zu blockieren 01, 5 Bytes, Text: 'teste' und lies es zurück.

Aber ich erhalte immer einen Fehler 6300, wenn dieser Block aktualisiert wird.

Irgendwelche Gedanken?

Ich benutze Windows 8.1/Delphi xe8.

Mein log ist:

SCardEstablishContext succeeded. 
Card State changed in ACS ACR122U PICC Interface 0 to available 
New reader found: ACS ACR122U PICC Interface 0 
Card inserted in ACS ACR122U PICC Interface 0 
ATR = 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 
SCardConnect (shared) succeeded. 
Active Protocol: T=1 
ISO 14443 A, Part3 Card Type: Mifare Standard 1K is detected 
Sending APDU to card: FF 82 00 01 06 FF FF FF FF FF FF 
SCardTransmit succeeded. 
Card response status word: 9000 (OK) 
Sending APDU to card: FF 86 00 00 05 01 00 01 60 01 
SCardTransmit succeeded. 
Card response status word: 9000 (OK) 
Sending APDU to card: FF 86 00 00 05 01 00 01 60 01 
SCardTransmit succeeded. 
Card response status word: 9000 (OK) 
Sending APDU to card: FF D6 00 01 05 74 65 73 74 65 
SCardTransmit succeeded. 
Card response status word: 6300 (State of non-volatile memory changed.) 

Antwort

2

Dieses leicht von reading the documentation.

enter image description here

Sie schreiben an einen Block gelöst ist, und Sie haben einen kompletten Block von Informationen zur Verfügung zu stellen. Die einzige Option für Lc ist x04 oder x10 - vier Bytes oder sechzehn Bytes. Für den Mifare 1K ist es ziemlich klar, dass Sie 16 Bytes liefern müssen. Sie haben nur 5 Byte Daten, also füllen Sie den Rest mit Nullen auf.

| CMD | block1 | 16 bytes | data ... 
FF D6 00 01  10  74 65 73 74 65 00 00 00 00 00 00 00 00 00 00 00 
+0

Vielen Dank, es löst mein Problem. Ich habe die Dokumentation viele Male gelesen, aber ich dachte nicht, dass das Problem es war. –

+0

@LuizAlves Froh, dass es funktioniert hat. Ich habe nie eines dieser Dinge benutzt - ich konnte es nicht testen, um sicher zu sein. –