Table des matières:

Portefeuille électronique : 3 étapes
Portefeuille électronique : 3 étapes

Vidéo: Portefeuille électronique : 3 étapes

Vidéo: Portefeuille électronique : 3 étapes
Vidéo: Portefeuille Metamask ? trois étapes pour Créer un Portefeuille sur metamask !! 2024, Juin
Anonim
Portefeuille électronique
Portefeuille électronique

REMARQUE: j'ai maintenant des Instructables qui offrent le code Arduino pour le RC522 et le PN532.

Dans mon article précédent, j'ai détaillé les bases de la communication avec les modules RFID MFRC522 et PN532 pour lire/écrire les données des étiquettes Mifare Classic 1k. Dans cet article, je vais encore plus loin et je montre comment utiliser ces modules pour créer un portefeuille électronique à partir des balises. Comme pour le post précédent, ceci est présenté comme une implémentation de base mais devrait fournir une base pour une variété d'applications qui nécessitent des fonctions d'incrémentation/décrémentation ou de comptage.

Étape 1: Intégrité des données

Pour un portefeuille électronique, il y a toujours un souci que quelqu'un puisse ajouter des crédits sans les payer. Il existe également un risque que les crédits sur l'étiquette soient corrompus par inadvertance lors d'une écriture de données. Les accès aux données nécessitent l'utilisation de la clé de la balise, il est donc nécessaire de changer la clé par défaut lors de la première initialisation de la balise. Il existe des articles en ligne qui expliquent comment pirater un tag même si vous ne connaissez pas la clé mais la technique n'est pas anodine. Je ne recommanderais pas d'utiliser ces balises pour votre compte bancaire, mais elles sont suffisantes pour de nombreuses applications moins risquées.

La probabilité de corruption des données est relativement faible, mais le logiciel devrait au moins pouvoir gérer le cas de base. Ce processus implique deux étapes avec la première étape pour simplement détecter la corruption. Dans ce projet, cela est géré en stockant à la fois la valeur du crédit ainsi qu'un complément à 1 de la valeur du crédit. Cela permet une comparaison simple des valeurs. La deuxième étape consiste à stocker une version de sauvegarde à la fois de la valeur du crédit et de son complément. Cela permet une opération de récupération si le premier ensemble de crédits est corrompu. Si les deux ensembles sont corrompus, le logiciel tente de réinitialiser l'étiquette, ce qui entraîne la perte de tous les crédits.

Étape 2: Matériel

Matériel
Matériel

Les connexions matérielles sont illustrées dans le schéma ci-dessus. Il s'agit de la même configuration que le post précédent avec l'ajout de deux commutateurs et d'une résistance de rappel. Un commutateur ne nécessite pas de résistance de rappel car il se trouve sur une entrée PIC dotée d'une faible capacité de rappel intégré. En pratique, les deux commutateurs seraient masqués car ils sont utilisés pour ajouter des crédits et pour initialiser une étiquette. Le commutateur d'initialisation est facultatif (pour effectuer une remise à zéro manuelle du crédit) car le logiciel peut détecter et initialiser un nouveau tag par lui-même. Des broches de cavalier pourraient être utilisées à la place des commutateurs.

Étape 3: Logiciel

Des ajouts à la boucle principale dans le logiciel ont été effectués pour permettre la lecture des deux commutateurs et la détection d'une condition nécessitant l'initialisation de l'étiquette. Comme mentionné dans la section sur le matériel, l'initialisation des balises peut être commandée manuellement à l'aide d'un commutateur. Le logiciel peut également commander une initialisation de balise dans deux autres cas. Premièrement, s'il détecte une nouvelle étiquette ou un nouveau secteur de données et deuxièmement, si les deux ensembles de données de crédit sont corrompus.

L'authentification des balises nécessite l'utilisation de la « clé A » pour le secteur de données cible. La clé par défaut des balises Mifare Classic 1k est « FF FF FF FF FF FF » mais doit être modifiée pour votre application. Le logiciel fournit des définitions à la fois pour la clé par défaut et une nouvelle clé (« My_Key »). Branchez simplement les valeurs que vous voulez dans « My_Key ». Le logiciel tente toujours d'authentifier d'abord la balise à l'aide de « My_Key ». Si cela échoue, la routine d'initialisation de la balise est appelée et la clé par défaut est utilisée pour l'authentification. La routine d'initialisation change la clé en "My_Key" et met les crédits à zéro. Si vous avez une balise avec une clé autre que celle par défaut et que vous ne savez pas ce que c'est, la balise ne peut pas être authentifiée. Si cela se produit, vous voudrez peut-être vérifier d'autres secteurs de données à l'aide de la clé par défaut pour voir s'il en existe une. Le bloc de remorque, le bloc de données et les blocs de sauvegarde sont tous définis au début de la liste des logiciels afin que vous puissiez facilement les modifier.

Le format des données stockées dans la balise pour cette application utilise uniquement des nombres positifs (aucun déficit autorisé) et les valeurs sont stockées sous forme de quatre octets de BCD compacté (décimal codé binaire). Cela permet une plage de crédit de 0 à 99, 999, 999 (deux chiffres par octet). La valeur de crédit et son complément à 1 n'utilisent que 8 des 16 octets dans un seul bloc de données et le reste est complété par des zéros. Il y a de la place dans le même bloc de données pour la copie de sauvegarde, mais j'ai décidé qu'il serait plus sûr de placer la sauvegarde dans un bloc de données séparé. Le bloc de sauvegarde se trouve dans le même secteur que le bloc de données, une authentification distincte n'est donc pas requise. Pour être encore plus sûr, vous pouvez envisager de placer la sauvegarde dans un secteur de données différent, mais une étape d'authentification distincte serait alors nécessaire pour accéder à ces données.

Lorsqu'une lecture des crédits est effectuée, la valeur complémentée est également lue, puis les deux sont comparées l'une à l'autre. En cas de non-concordance, le jeu de sauvegarde de valeur/complément est lu et comparé. S'ils correspondent, la sauvegarde est supposée correcte et est utilisée pour réparer les données corrompues. Si les copies de sauvegarde ne correspondent pas, la balise est considérée comme mauvaise et une tentative de réinitialisation est effectuée.

Les valeurs d'incrément et de décrément sont définies près du début de la liste et devraient être en BCD compacté. Les routines qui effectuent l'incrémentation et la décrémentation le font effectivement sur un nombre de 32 bits. Le calcul est très simple mais nécessite l'utilisation de routines pour ajuster les résultats des retenues dans chaque octet BCD compacté et d'un octet à l'autre. Cela est accompli par l'utilisation des macros DAA (Decimal Adjust Addition) et DAS (Decimal Adjust Soustraction). Ces macros garantissent que chaque chiffre BCD de 4 bits reste toujours dans la plage 0-9.

En plus des messages d'affichage dans le message précédent, cette application contient des messages pour de nombreuses étapes supplémentaires - en particulier s'il y a des erreurs de données et/ou si la balise doit être corrigée ou initialisée. Les crédits sont également affichés avant et après une étape d'incrémentation/décrémentation afin que vous puissiez voir les valeurs changer.

C'est tout pour ce post. Découvrez mes autres projets électroniques sur: www.boomerrules.wordpress.com

Conseillé: