Hallo,
ich habe einen RPi Zero an dem ein RC522 Modul angeschlossen ist um NFC-Tags des Typs MIFARE Classic 1k zu lesen. (ist mein erstes Projekt mit NFCs allgemein, technisches Wissen dahinter=sehr gering, auch so bin ich nur Hobbyprogrammierer und lasse mich in letzter Zeit viel von ChatGPT tragen xD)
Das lesen und schreiben funktioniert soweit eigentlich auch, solange ich die Tags (die Weiße Karte und die BlueKeys) mit dem RC522 beschreibe.
Wenn ich nun ein NFC-Tag mit dem Handy beschreibe (z.B. mit der Android App NFC-Tools) dann bekomme ich einen Auth ERROR Fehler. Ich muss die NFC-Tags dann neu formatieren damit sie mit dem RC522 wieder lesbar werden.
Ich bin nun jetzt schon soweit, dass ich weiß warum der Auth Error fehler auftritt.
Der NFC-Tag besteht ja aus 16 Sektoren mit jeweils 4 Blöcken
+Sector: 0
C4C4E803EB880400C08E1B5841902512
140103E103E103E103E103E103E103E1
03E103E103E103E103E103E103E103E1
A0A1A2A3A4A5787788C1FFFFFFFFFFFF
+Sector: 1
0000030CD101085402656E48656C6C6F
00000000000000000000000000000000
00000000000000000000000000000000
D3F7D3F7D3F77F078840FFFFFFFFFFFF
+Sector: 2 - 15
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
D3F7D3F7D3F77F078840FFFFFFFFFFFF
So sehen die Blöcke aus, nachdem ich ein Tag mit dem NFC-Tools beschrieben
habe mit dem Text: "Hello"
Die Keys die dabei mit eingepflanzt werden sind:
KeyA - A0A1A2A3A4A5 und D3F7D3F7D3F7
Key B - FFFFFFFFFFFF
Und genau da ist mein Problem. Wenn ich NFC-Tags mit dem RC522 beschreibe, werden keine neuen Keys vergeben, sondern Key A und B sind immer FFFFFFFFFFFF.
Auch werden die Blöcke 2&3 im Sektor 0 nicht verändert und bleiben 0
Deshalb ist meine frage: Wie kann eine Authentifaction mit dem Pi und der RC522 beim lesen durchführen?
Sodass alle Sektoren erreicht werden???
Ich habe mich hier https://github.com/aryavaziri/MFRC522-python/tree/master schon durchgehangelt und im Read.py steht sogar
# This is the default key for authentication
key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
# Select the scanned tag
MIFAREReader.MFRC522_SelectTag(uid)
# Authenticate
status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)
Ich hab darauf hin versucht die Standard-Keys nacheinander für jeden Sector einzusetzen:
# This is the default key for authentication
standard_keys = [
[0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF],
[0XD3, 0XF7, 0XD3, 0XF7, 0XD3, 0XF7],
[0XA0, 0XA1, 0XA2, 0XA3, 0XA4, 0XA5],
[0XB0, 0XB1, 0XB2, 0XB3, 0XB4, 0XB5],
[0X4D, 0X3A, 0X99, 0XC3, 0X51, 0XDD],
[0X1A, 0X98, 0X2C, 0X7E, 0X45, 0X9A],
[0XAA, 0XBB, 0XCC, 0XDD, 0XEE, 0XFF],
[0X00, 0X00, 0X00, 0X00, 0X00, 0X00],
[0XAB, 0XCD, 0XEF, 0X12, 0X34, 0X56]
]
# Select the scanned tag
MIFAREReader.MFRC522_SelectTag(uid)
for sector in range(16):
for key in standard_keys:
status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, sector, key, uid)
aber Leider ohne Erfolg. Da fehlts mir dann auch einfach an notwendiger Kompetenz.
Wie kann ich NFC-Tags lesen, die ich erst Authentifizieren muss?
Für Hilfe wäre ich sehr dankbar und vielleicht hat ja jmd mal ein ähnliches Projekt gehabt.