Inhaltsverzeichnis:

Elektronische Brieftasche - Gunook
Elektronische Brieftasche - Gunook

Video: Elektronische Brieftasche - Gunook

Video: Elektronische Brieftasche - Gunook
Video: Verimi GmbH - Die digitale Brieftasche 2024, November
Anonim
Elektronische Brieftasche
Elektronische Brieftasche

HINWEIS: Ich habe jetzt Instructables, die Arduino-Code für RC522 und PN532 anbieten.

In meinem vorherigen Beitrag habe ich die Grundlagen für die Kommunikation mit den RFID-Modulen MFRC522 und PN532 zum Lesen/Schreiben von Daten von Mifare Classic 1k-Tags beschrieben. In diesem Beitrag gehe ich noch einen Schritt weiter und zeige, wie man diese Module verwendet, um aus den Tags eine elektronische Geldbörse zu erstellen. Wie im vorherigen Beitrag wird dies als grundlegende Implementierung vorgestellt, sollte jedoch eine Grundlage für eine Vielzahl von Anwendungen bieten, die Inkrement-/Dekrement- oder Zählfunktionen erfordern.

Schritt 1: Datenintegrität

Bei einer elektronischen Geldbörse besteht immer die Sorge, dass jemand Guthaben aufladen kann, ohne dafür zu bezahlen. Es gibt auch Bedenken, dass die Credits auf dem Tag während eines Datenschreibens versehentlich beschädigt werden können. Datenzugriffe erfordern die Verwendung des Tag-Schlüssels, daher ist es erforderlich, den Standardschlüssel bei der ersten Initialisierung des Tags zu ändern. Es gibt online Artikel, die darüber sprechen, wie man ein Tag hackt, auch wenn Sie den Schlüssel nicht kennen, aber die Technik ist nicht trivial. Ich würde nicht empfehlen, diese Tags für Ihr Bankkonto zu verwenden, aber sie sind gut genug für viele weniger riskante Anwendungen.

Die Wahrscheinlichkeit einer Datenverfälschung ist relativ gering, aber die Software sollte zumindest den Grundfall bewältigen können. Dieser Prozess umfasst zwei Schritte, wobei der erste Schritt lediglich dazu dient, die Beschädigung zu erkennen. In diesem Projekt wird dies dadurch gehandhabt, dass sowohl der Kreditwert als auch ein 1er-Komplement des Kreditwerts gespeichert werden. Das ermöglicht einen einfachen Vergleich der Werte. Der zweite Schritt besteht darin, eine Sicherungsversion sowohl des Kreditwerts als auch seines Komplements zu speichern. Dies ermöglicht einen Wiederherstellungsvorgang, wenn der erste Satz von Credits beschädigt wird. Wenn beide Sets beschädigt sind, versucht die Software, das Tag neu zu initialisieren, was zu einem Verlust aller Credits führt.

Schritt 2: Hardware

Hardware
Hardware

Die Hardware-Anschlüsse sind im obigen Diagramm dargestellt. Dies ist das gleiche Setup wie im vorherigen Beitrag mit zwei zusätzlichen Schaltern und einem Pull-up-Widerstand. Ein Schalter benötigt keinen Pull-Up-Widerstand, da er sich an einem PIC-Eingang befindet, der über eine schwache Pull-Up-Fähigkeit verfügt. In der Praxis wären beide Schalter versteckt, da sie zum Hinzufügen von Krediten und zum Initialisieren eines Tags verwendet werden. Der Initialisierungsschalter ist optional (um ein manuelles Nullsetzen des Guthabens durchzuführen), da die Software ein neues Tag selbst erkennen und initialisieren kann. Anstelle von Schaltern könnten Jumper-Pins verwendet werden.

Schritt 3: Software

Die Hauptschleife in der Software wurde erweitert, um das Lesen der beiden Schalter und die Erkennung eines Zustands zu ermöglichen, der eine Tag-Initialisierung erfordert. Wie im Abschnitt Hardware erwähnt, kann die Tag-Initialisierung manuell mit einem Schalter befohlen werden. Die Software kann auch in zwei anderen Fällen eine Tag-Initialisierung befehlen. Erstens, wenn es ein neues Etikett oder einen neuen Datensektor erkennt und zweitens, wenn beide Sätze von Kreditdaten beschädigt sind.

Die Authentifizierung von Tags erfordert die Verwendung des „Schlüssels A“für den Zieldatensektor. Der Standardschlüssel für die Mifare Classic 1k-Tags ist „FF FF FF FF FF FF“, sollte jedoch für Ihre Anwendung geändert werden. Die Software stellt Definitionen sowohl für den Standardschlüssel als auch für einen neuen Schlüssel („My_Key“) bereit. Fügen Sie einfach die gewünschten Werte in "My_Key" ein. Die Software versucht immer zuerst den Tag mit „My_Key“zu authentifizieren. Wenn dies fehlschlägt, wird die Routine zum Initialisieren des Tags aufgerufen und der Standardschlüssel zur Authentifizierung verwendet. Die Initialisierungsroutine ändert den Schlüssel auf „My_Key“und setzt die Credits auf Null. Wenn Sie ein Tag mit einem nicht standardmäßigen Schlüssel haben und nicht wissen, was es ist, kann das Tag nicht authentifiziert werden. In diesem Fall möchten Sie möglicherweise andere Datensektoren mit dem Standardschlüssel überprüfen, um festzustellen, ob einer verfügbar ist. Der Trailer-Block, der Datenblock und die Backup-Blöcke werden alle am Anfang der Softwareliste definiert, damit Sie sie leicht ändern können.

Das Format der im Tag für diese Anwendung gespeicherten Daten verwendet nur positive Zahlen (keine Defizite erlaubt) und die Werte werden als vier Bytes gepackter BCD (Binary Coded Decimal) gespeichert. Dies ermöglicht einen Kreditbereich von 0 bis 99, 999, 999 (zwei Stellen pro Byte). Der Kreditwert und sein 1er-Komplement verwenden nur 8 der 16 Bytes in einem einzigen Datenblock und der Rest wird mit Nullen aufgefüllt. Im selben Datenblock ist Platz für die Sicherungskopie, aber ich entschied, dass es sicherer wäre, die Sicherung in einen separaten Datenblock zu legen. Der Backup-Block befindet sich im selben Sektor wie der Datenblock, sodass keine separate Authentifizierung erforderlich ist. Um noch sicherer zu sein, könnten Sie erwägen, das Backup in einen anderen Datensektor zu legen, aber dann wäre ein separater Authentifizierungsschritt erforderlich, um auf diese Daten zuzugreifen.

Wenn die Credits gelesen werden, wird auch der komplementierte Wert gelesen und dann werden die beiden miteinander verglichen. Wenn eine Nichtübereinstimmung vorliegt, wird der Backup-Satz von Wert/Ergänzung gelesen und verglichen. Wenn sie übereinstimmen, wird davon ausgegangen, dass die Sicherung korrekt ist und wird verwendet, um die beschädigten Daten zu reparieren. Wenn die Sicherungskopien nicht übereinstimmen, gilt das Tag als fehlerhaft und es wird versucht, es neu zu initialisieren.

Die Inkrement- und Dekrementwerte werden am Anfang der Auflistung definiert und werden voraussichtlich in gepackten BCDs angegeben. Die Routinen, die das Inkrementieren und Dekrementieren durchführen, tun dies effektiv bei einer 32-Bit-Zahl. Die Mathematik ist sehr einfach, erfordert jedoch die Verwendung von Routinen, um die Ergebnisse für Überträge innerhalb jedes gepackten BCD-Bytes und von einem Byte zum nächsten anzupassen. Dies wird durch die Verwendung der Makros DAA (Decimal Adjust Addition) und DAS (Decimal Adjust Subtraction) erreicht. Diese Makros stellen sicher, dass jede 4-Bit-BCD-Ziffer immer im Bereich von 0-9 bleibt.

Zusätzlich zu den Anzeigemeldungen im vorherigen Beitrag enthält diese Anwendung Meldungen für viele der zusätzlichen Schritte – insbesondere wenn Datenfehler vorliegen und/oder das Tag repariert oder initialisiert werden muss. Die Credits werden auch vor und nach einem Schritt des Inkrementierens/Dekrementierens angezeigt, damit Sie die Änderung der Werte sehen können.

Das war's für diesen Beitrag. Schauen Sie sich meine anderen Elektronikprojekte an: www.boomerrules.wordpress.com

Empfohlen: