Bedeutung der Konstante Cardcookie

Hallo euch allen,
ich denke es schonmal gelesen zu haben, aber finde es leider nicht.
Die konstante CardCookie wird auf der Tag und ins Programm geschrieben und nur wenn beide übereinstimmen, wird auch der Befehl des Tag ausgeführt?

Der TonUINO erkennt anhand der ersten 4 Byte der gelesenen Daten ob die Daten auch von ihm geschrieben wurden. Stimmen die nicht, wird die Karte ignoriert.

Kann ich diese 4 Byte ändern?
Ich dachte dies wäre diese Zahl

Natürlich könntest du diese Zahl ändern. Die „Zahl“ von er du sprichst ist ja nur die dezimale Darstellung des cookies (Beispiel aus meinem Fork):

// define magic cookie (by default 0x13 0x37 0xb3 0x47)
const uint8_t magicCookieHex[4] = {0x13, 0x37, 0xb3, 0x47};

magicCookie = (uint32_t)magicCookieHex[0] << 24;
magicCookie += (uint32_t)magicCookieHex[1] << 16;
magicCookie += (uint32_t)magicCookieHex[2] << 8;
magicCookie += (uint32_t)magicCookieHex[3];

Für die Preferences wird es übrigens auch benutzt um zu gucken ob schon ein Datensatz geschrieben wurde…

Aber davon ab, was hast du denn vor?

Und bevor jetzt die Frage kommt warum es genau diese 4 Byte sind…

Ich helfe dir mal

Irgendwo hat mal jemand geschrieben, dass es zu Problemen kam, weil die Box ja jede Karte anlernen will, die nicht den Cookie hat. Dann hingen die Kids im Anlernmenü. Die Story finde ich aber gerade nicht mehr

1 „Gefällt mir“

Ich schenke bald unserer Kindergarten Freundin eine Box, aber anders bespielt.
Nun möchte ich vermeiden dass die Karten getauscht werden und dann völligen Unsinn spielen.
Aber wahrscheinlich kommt dann immer „oh, eine neue Karte“, das macht sicher noch mehr Schaden.
Dann ist es vielleicht einfacher zu versuchen versuchen die SDs identisch zu halten

Edit

Schon beantwortet bevor ich die Frage gestellt habe. Wahnsinn

Das kommt nur wenn die ersten 4 Byte 0x00 0x00 0x00 0x00 sind.

Über das Problem hab ich auch schon nachgedacht.
Ein weiterer Nachteil bei verschiedenen Cookies ist, dass bei einer Box nicht mehr einfach die App zum konfigurieren der Karten verwendet werden kann. Ich hab dann überlegt, dass alle Boxen die offizeillen Cookie erkennen können müssten und bei der ersten Verwendung dann ihren eigenen Cookie drauf programmieren würden.

Wenn du den anderen Cookie kennst, kannst du ja abfragen, ob er der ist und dann sogar ansagen: „Das ist die Karte von…“. Dann kann man sogar gleiche Karten klar zuordnen

Oh, jetzt scheint eure Meinung sich zu teilen.
Also wenn nichts passiert, kann ich damit leben.
Und wegen den Apps werde ich wohl mal betteln müssen…

Ich habe es gerade ausprobiert:

20:12:28.786 -> Card UID: C7 4E BE B4
20:12:28.786 -> PICC type: MIFARE 1KB
20:12:28.786 -> Authenticating Classic using key A...
20:12:28.786 -> Reading data from block 4 ...
20:12:28.786 -> Data on Card :
20:12:28.786 ->  19 11 17 12 01 01 17 01 00 00 00 00 00 00 00 00
20:12:28.786 -> 
20:12:30.591 -> 608
20:12:30.644 -> 608
20:12:30.644 -> === setupCard()
20:12:30.691 -> === voiceMenu() (99 Options)

„Oh, eine neue Karte…“

Dann macht die DEV das anders als meine Version. mMn auch nicht richtig. Es ist ja gerade der Sinn, dass Karten die (an der von uns benutzen Stelle) nicht leer sind ignoriert werden (weil könnte ja sonst was sein). Nur Karten versucht werden abzuspielen die den richtigen Cookie haben und leere Karten eben versucht werden zu programmieren. So hatte ich damals diese Sache jedenfalls erdacht… wenn ich mich nicht total täusche verhält sich meine Firmware auch so. Aber seis drum, keine Zeit das zu verifizieren.

3 „Gefällt mir“

Ja das finde ich auch durchdachter.

Dann solltest du ja nun alle Infos haben um deine Planungen fortzusetzen. In dem von @Gute_Laune verlinkten Thread ist ja die „Geschichte“ hinter dem ganzen auch schon mal erklärt worden. Sie ist halt spitze darin sowas wiederzufinden. Ich erkläre vieles meist (zu oft wahrscheinlich) nochmal neu. :wink:

3 „Gefällt mir“

Ja, euch vielen Dank.
Wahrscheinlich werde ich alles belassen wie es war und die SDs bleiben in großen Teilen parallel