Forum: Mikrocontroller und Digitale Elektronik Mifare Karte Schlüssel


von NoLongerHuman (Gast)


Lesenswert?

Guten Morgen,
ich arbeite zur Zeit mit den MiFare Karten Classic und scheitere dabei 
die Keys zu setzten.
Weiß einer zufällig wie man die Keys da setzten kann ?
Ich arbeite mit Arduino MEGA 2560 und Adafrut NFC Shield PN532 i2c.


Danke schon mal im voraus falls ihr mehr information braucht sagt 
bescheid :P


MFG

von Εrnst B. (ernst)


Lesenswert?

Wieso sich überhaupt die Mühe machen, da Keys zu setzten? Das dort 
eingebaute Crypto-Verfahren ist doch schon lange geknackt...

von Duda (Gast)


Lesenswert?

Haben die nicht mittlerweile was besseres eingebaut oder basieren die 
Karten immer noch auf dem alten Stand?

von Thomas B. (escamoteur)


Lesenswert?

Nein, die Mifare Classic verwenden immer noch das alte Verfahren. Aber 
da sie so was wie ein Industriestandard sind werden sie immer noch 
verwendet.
Wenn man en sichere Lösung will, dann muss man auf einen anderen 
Transponder gehen.

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Was wir beispielsweise bei Zahlungssystemen für Automaten einsetzen ist 
Mifare Desfire (EV1). Dies ist mehr als ausreichend für die meisten 
Anwendungen.

von NoLongerHuman (Gast)


Lesenswert?

Davon abgesehen wie sicher/unsicher sie ist muss die keys trozdem setzen 
und komm nicht weiter. Kann mir jemand helfen ?

von Ralf (Gast)


Lesenswert?

> Danke schon mal im voraus falls ihr mehr information braucht sagt
> bescheid :P
Na, dann zeig doch mal, wie du's machst und wie du's machen solltest :)

Ralf

von NoLongerHuman (Gast)


Lesenswert?

Okey also zu nächst kann ich ja durch
nfc.mifareclassic_WriteDataBlock (block, daten); in ein Block der Mifare 
Karte reinschreiben. Doch als ich es versucht habe den key mit zu 
übergeben konnte ich den Block nicht mehr auslesen.
Kurz ich versuche mit dieser Methode auf den Sector Trailer die keys 
reinzuschreiben
z.B
                         KeyA    | Acces Bit | KeyB
uint8_t data = {x1,x2,x3,x4,x5,x6,ff,07,80,69,x5,x4,x3,x2,x1,x0};
nfc.mifareclassic_WriteDataBlock (7, data);
x habe ich gewählt da ich selbstverständlich nicht die richtigen Keys 
hier veröffentliche ;)
Aufjedenfall übergebe ich dann data mit WriteDataBlock an den 
SektorTrailer aber falls ich den Block wieder auslesen will funktioniert 
es mit den keys nicht, verständlich ?^^


Danke schon im voraus

von Ralf (Gast)


Lesenswert?

> verständlich ?
Nein, weil keiner weiss woher die Funktionen kommen. Und ich werd jetzt 
nicht die NxP- bzw. Mifare-Seite nach dem Stack für den PN532 
durchsuchen ;)

Also gib uns erstmal die Grundlage: Zeig die Doku des verwendeten Stacks 
und auch mal den kompletten relevanten Codefetzen (der obige Einzeiler 
kann kaum alles nötige sein, oder?).

Ralf

von NoLongerHuman (Gast)


Lesenswert?

Ich programmiere mit der Arduino IDE und nutze die
https://github.com/adafruit/Adafruit_NFCShield_I2C
Libary um die Mifare- Karte zu beschreiben/auszulesen und da ist die 
eine Funktion zum beschreiben der Karte drin.

von NoLongerHuman (Gast)


Lesenswert?

1
 success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 7, 0, keya);
2
    
3
      if (success)
4
      {
5
        uint8_t data = {x1,x2,x3,x4,x5,x6,ff,07,80,69,x5,x4,x3,x2,x1,x0};
6
7
       success = nfc.mifareclassic_WriteDataBlock (t, data);

Mehr brauch man nicht um sich mit dem Block zu authentifizieren und dann 
in einem Block zu schreiben.
Also damit habe ich das beschreiben geschaft und dann versucht eben die 
Keys zu setzten aber danach habe ich kein Zugriff mehr auf den 
jeweiligen Sektor.

von Sascha F. (sfleiss)


Lesenswert?

Hi,

NoLongerHuman schrieb:
> uint8_t data = {x1,x2,x3,x4,x5,x6,ff,07,80,69,x5,x4,x3,x2,x1,x0};

AccessConditions falsch gesetzt? Welche Rechte möchtest Du erreichen?

Gruß,

Sascha

von Helfender (Gast)


Lesenswert?

Vielleicht einfach nur so:

uint8_t data = 
{x1,x2,x3,x4,x5,x6,0xff,0x07,0x80,0x69,x5,x4,x3,x2,x1,x0};

Deine Zeile

uint8_t data = {x1,x2,x3,x4,x5,x6,ff,07,80,69,x5,x4,x3,x2,x1,x0};

sollte sich so gar nicht übersetzen lassen...

von NoLongerHuman (Gast)


Lesenswert?

Habs herausgefunden wie es funktioniert und  ich hatte es natürlich mit 
0x geschrieben aber ich habe mich doch mit den Accessbits vertan und aus 
den jeweiligen Sektoren gekickt :P Aber danke euch trozdem.

von Helfender (Gast)


Lesenswert?

Könntest du eine funktionierende Lösung noch posten?
Für die Nachwelt, wenn mal jemand nach einem funktionierenden
Beispiel sucht...

von NoLongerHuman (Gast)


Lesenswert?

Hey, also ich habe nur die ganze Zeit irgendwie die falschen Accesbits 
gesetzt und dem entsprechend mich aus den Sektoren gekickt und darauf 
muss man eben acht geben und sich mal von Intel die App mifare access 
condition calculator und damit kann man sich errechnen welche Rechte man 
auf die jeweiligen Blöcke im jeweiligen Sektor haben soll.


mfg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.