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
Wieso sich überhaupt die Mühe machen, da Keys zu setzten? Das dort eingebaute Crypto-Verfahren ist doch schon lange geknackt...
Haben die nicht mittlerweile was besseres eingebaut oder basieren die Karten immer noch auf dem alten Stand?
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.
Was wir beispielsweise bei Zahlungssystemen für Automaten einsetzen ist Mifare Desfire (EV1). Dies ist mehr als ausreichend für die meisten Anwendungen.
Davon abgesehen wie sicher/unsicher sie ist muss die keys trozdem setzen und komm nicht weiter. Kann mir jemand helfen ?
> 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
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
> 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
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.
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.
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
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...
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.
Könntest du eine funktionierende Lösung noch posten? Für die Nachwelt, wenn mal jemand nach einem funktionierenden Beispiel sucht...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.