Programmieren & Softwareentwicklung

Wenn Du nicht nur Anwender sein willst, sondern auch aktiv programmierst oder mit dem Gedanken spielst, dann warten hier die passenden Fragen und Antworten auf Dich.

26.779 Beiträge

RaspberryPi RFID-RC522 Modul NFC-Tag Authentification?

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.

Ask Me Anything: Themenspecials