Inhoudsopgave:

Elektronische portemonnee: 3 stappen
Elektronische portemonnee: 3 stappen

Video: Elektronische portemonnee: 3 stappen

Video: Elektronische portemonnee: 3 stappen
Video: So löst du deinen Zauberwürfel mit nur 2 Schritten 😍 2024, Juni-
Anonim
Elektronische portemonnee
Elektronische portemonnee

OPMERKING: ik heb nu Instructables die Arduino-code bieden voor de RC522 en PN532.

In mijn vorige post heb ik de basis uitgelegd voor communicatie met de MFRC522 en PN532 RFID-modules om gegevens van Mifare Classic 1k-tags te lezen/schrijven. In deze post ga ik nog een stap verder en laat ik zien hoe je die modules kunt gebruiken om een elektronische portemonnee te maken van de tags. Net als bij het vorige bericht, wordt dit gepresenteerd als een basisimplementatie, maar zou het een basis moeten bieden voor een verscheidenheid aan toepassingen die functies voor het verhogen/verlagen of tellen vereisen.

Stap 1: Gegevensintegriteit

Voor een elektronische portemonnee is er altijd een zorg dat iemand credits kan toevoegen zonder ervoor te betalen. Er is ook bezorgdheid dat de tegoeden op de tag per ongeluk beschadigd kunnen raken tijdens het schrijven van gegevens. Toegang tot gegevens vereist het gebruik van de tag-sleutel, dus het is noodzakelijk om de standaardsleutel te wijzigen wanneer de tag voor het eerst wordt geïnitialiseerd. Er zijn online artikelen die vertellen hoe je een tag kunt hacken, zelfs als je de sleutel niet kent, maar de techniek is niet triviaal. Ik zou het gebruik van deze tags voor uw bankrekening niet aanraden, maar ze zijn goed genoeg voor veel minder risicovolle toepassingen.

De kans op datacorruptie is relatief klein, maar de software zou in ieder geval in staat moeten zijn om het basisgeval aan te kunnen. Dit proces omvat twee stappen met de eerste stap om eenvoudig de corruptie te detecteren. In dit project wordt dat afgehandeld door zowel de kredietwaarde als een 1-complement van de kredietwaarde op te slaan. Dat maakt een eenvoudige vergelijking van de waarden mogelijk. De tweede stap is het opslaan van een back-upversie van zowel de kredietwaarde als het complement ervan. Dat zorgt voor een hersteloperatie als de eerste set tegoeden beschadigd raakt. Als beide sets beschadigd zijn, probeert de software de tag opnieuw te initialiseren, wat resulteert in verlies van alle credits.

Stap 2: Hardware

Hardware
Hardware

De hardware-aansluitingen worden weergegeven in het bovenstaande diagram. Dit is dezelfde opstelling als de vorige post met de toevoeging van twee schakelaars en een pull-up-weerstand. Eén schakelaar heeft geen pull-up-weerstand nodig omdat hij op een PIC-ingang zit die een zwakke pull-up-mogelijkheid heeft ingebouwd. In de praktijk zouden beide schakelaars verborgen zijn omdat ze worden gebruikt voor het toevoegen van credits en voor het initialiseren van een tag. De initialisatieschakelaar is optioneel (om handmatig krediet op nul te zetten) omdat de software zelf een nieuwe tag kan detecteren en initialiseren. Jumper-pinnen kunnen worden gebruikt in plaats van schakelaars.

Stap 3: Software

Er zijn toevoegingen aan de hoofdlus in de software gedaan om het lezen van de twee schakelaars mogelijk te maken en voor detectie van een voorwaarde die tag-initialisatie vereist. Zoals vermeld in de hardware-sectie, kan tag-initialisatie handmatig worden uitgevoerd met een schakelaar. De software kan ook in twee andere gevallen een tag-initialisatie opdragen. Ten eerste, als het een nieuwe tag of datasector detecteert en ten tweede, als beide sets kredietgegevens beschadigd zijn.

Authenticatie van tags vereist het gebruik van "sleutel A" voor de doeldatasector. De standaardsleutel voor de Mifare Classic 1k-tags is "FF FF FF FF FF FF", maar moet voor uw toepassing worden gewijzigd. De software biedt definities voor zowel de standaardsleutel als een nieuwe sleutel (“My_Key”). Sluit gewoon de gewenste waarden aan op "My_Key". De software probeert de tag altijd eerst te verifiëren met behulp van "My_Key". Als dat niet lukt, wordt de routine om de tag te initialiseren aangeroepen en wordt de standaardsleutel gebruikt voor authenticatie. De initialisatieroutine verandert de sleutel in "My_Key" en stelt de credits in op nul. Als je een tag hebt met een niet-standaardsleutel en je weet niet wat het is, dan kan de tag niet worden geverifieerd. Als dit gebeurt, wilt u misschien andere gegevenssectoren controleren met behulp van de standaardsleutel om te zien of er een beschikbaar is. Het Trailer-blok, Data-blok en Back-up-blokken worden allemaal gedefinieerd aan het begin van de softwarelijst, zodat u ze gemakkelijk kunt wijzigen.

Het formaat voor gegevens die zijn opgeslagen in de tag voor deze toepassing gebruikt alleen positieve getallen (geen tekorten toegestaan) en waarden worden opgeslagen als vier bytes verpakte BCD (Binary Coded Decimal). Dat zorgt voor een kredietbereik van 0 tot 99, 999, 999 (twee cijfers per byte). De kredietwaarde en het 1-complement gebruiken slechts 8 van de 16 bytes in een enkel datablok en de rest is opgevuld met nullen. Er is ruimte in hetzelfde datablok voor de back-up, maar ik besloot dat het veiliger zou zijn om de back-up in een apart datablok te plaatsen. Het back-upblok bevindt zich in dezelfde sector als het datablok, dus een afzonderlijke authenticatie is niet vereist. Om nog veiliger te zijn, kunt u overwegen de back-up in een andere gegevenssector te plaatsen, maar dan is een afzonderlijke authenticatiestap nodig om toegang te krijgen tot die gegevens.

Als de credits worden gelezen, wordt ook de gecomplementeerde waarde gelezen en worden de twee met elkaar vergeleken. Als er een mismatch is, wordt de back-upset van waarde/complement gelezen en vergeleken. Als ze overeenkomen, wordt aangenomen dat de back-up correct is en wordt deze gebruikt om de beschadigde gegevens te herstellen. Als de back-upkopieën niet overeenkomen, wordt de tag als slecht beschouwd en wordt geprobeerd deze opnieuw te initialiseren.

De toename- en afnamewaarden worden vooraan in de lijst gedefinieerd en zullen naar verwachting in een verpakt BCD zijn. De routines die het verhogen en verlagen effectief doen, doen dit op een 32-bits getal. De wiskunde is heel eenvoudig, maar vereist het gebruik van routines om de resultaten voor carry's binnen elke verpakte BCD-byte en van de ene byte naar de volgende aan te passen. Dat wordt bereikt door het gebruik van macro's DAA (Decimal Adjust Addition) en DAS (Decimal Adjust Subtraction). Deze macro's zorgen ervoor dat elk 4-bits BCD-cijfer altijd binnen het bereik van 0-9 blijft.

Naast de weergaveberichten in de vorige post, bevat deze applicatie berichten voor veel van de extra stappen - vooral als er gegevensfouten zijn en/of de tag moet worden gerepareerd of geïnitialiseerd. De credits worden ook weergegeven voor en na een stap van verhogen/verlagen, zodat u de waarden kunt zien veranderen.

Dat was het voor dit bericht. Bekijk mijn andere elektronicaprojecten op: www.boomerrules.wordpress.com

Aanbevolen: