Cuprins:

Portofel electronic: 3 pași
Portofel electronic: 3 pași

Video: Portofel electronic: 3 pași

Video: Portofel electronic: 3 pași
Video: Portofele CRYPTO - Diferența între HOT și COLD - Cum ții în siguranță - #CryptoPentruToti 015 2024, Iunie
Anonim
Portofel electronic
Portofel electronic

NOTĂ: Acum am instrumente care oferă cod Arduino pentru RC522 și PN532.

În postarea mea anterioară am detaliat elementele de bază pentru comunicarea cu modulele RFID MFRC522 și PN532 pentru a citi / scrie date din etichetele Mifare Classic 1k. În această postare fac un pas mai departe și arăt cum să folosesc aceste module pentru a crea un portofel electronic din etichete. La fel ca în postarea anterioară, aceasta este prezentată ca o implementare de bază, dar ar trebui să ofere o bază pentru o varietate de aplicații care necesită funcții de creștere / descreștere sau de contorizare.

Pasul 1: Integritatea datelor

Pentru un portofel electronic există întotdeauna îngrijorarea că cineva poate adăuga credite fără a plăti pentru ele. Există, de asemenea, îngrijorarea că creditele de pe etichetă pot fi corupte în mod accidental în timpul unei scrieri de date. Accesul la date necesită utilizarea cheii de etichetă, deci este necesar să schimbați cheia implicită atunci când eticheta este inițializată pentru prima dată. Există articole online care vorbesc despre cum să hackezi o etichetă, chiar dacă nu știi cheia, dar tehnica nu este banală. Nu aș recomanda utilizarea acestor etichete pentru contul dvs. bancar, dar sunt suficient de bune pentru multe aplicații mai puțin riscante.

Probabilitatea corupției datelor este relativ mică, dar software-ul ar trebui să fie capabil să gestioneze cel puțin cazul de bază. Acest proces implică doi pași cu primul pas pentru a detecta pur și simplu corupția. În acest proiect, care este gestionat prin stocarea atât a valorii creditului, cât și a unui complement 1 al valorii creditului. Aceasta permite o comparație simplă a valorilor. Al doilea pas este stocarea unei versiuni de rezervă atât a valorii creditului, cât și a complementului acestuia. Aceasta permite o operațiune de recuperare dacă primul set de credite este deteriorat. Dacă ambele seturi sunt corupte, software-ul încearcă să reinitializeze eticheta, ceea ce duce la pierderea tuturor creditelor.

Pasul 2: Hardware

Hardware
Hardware

Conexiunile hardware sunt prezentate în diagrama de mai sus. Aceasta este aceeași configurație ca postarea anterioară, cu adăugarea a două comutatoare și a unui rezistor de tragere. Un comutator nu necesită un rezistor pull-up, deoarece este pe o intrare PIC care are o capacitate slabă de pull-up încorporată. În practică, ambele switch-uri ar fi ascunse deoarece sunt utilizate pentru adăugarea de credite și pentru inițializarea unei etichete. Comutatorul de inițializare este opțional (pentru a efectua reducerea manuală a creditului), deoarece software-ul poate detecta și inițializa singură o nouă etichetă. Știfturile de jumper ar putea fi utilizate în locul întrerupătoarelor.

Pasul 3: Software

Adăugări la bucla principală din software au fost făcute pentru a permite citirea celor două comutatoare și pentru detectarea unei condiții care necesită inițializarea etichetei. După cum sa menționat în secțiunea hardware, inițializarea etichetei poate fi comandată manual cu un comutator. De asemenea, software-ul poate comanda o inițializare a etichetei în alte două cazuri. În primul rând, dacă detectează o nouă etichetă sau un sector de date și, în al doilea rând, dacă ambele seturi de date de credit sunt corupte.

Autentificarea etichetelor necesită utilizarea „cheii A” pentru sectorul de date țintă. Cheia implicită pentru etichetele Mifare Classic 1k este „FF FF FF FF FF FF”, dar ar trebui modificată pentru aplicația dvs. Software-ul oferă definiții atât pentru cheia implicită, cât și pentru o nouă cheie („My_Key”). Conectați valorile dorite la „Cheia_Mea”. Software-ul încearcă întotdeauna să autentifice mai întâi eticheta folosind „My_Key”. Dacă acest lucru eșuează, atunci se apelează rutina de inițializare a etichetei și se utilizează cheia implicită pentru autentificare. Rutina de inițializare schimbă cheia în „My_Key” și setează creditele la zero. Dacă aveți o etichetă cu o cheie non-implicită și nu știți ce este, atunci eticheta nu poate fi autentificată. Dacă se întâmplă acest lucru, vă recomandăm să verificați alte sectoare de date folosind cheia implicită pentru a vedea dacă este disponibilă una. Blocul Trailer, blocul de date și blocurile de rezervă sunt toate definite la începutul listării software-ului, astfel încât să le puteți schimba cu ușurință.

Formatul pentru datele stocate în eticheta pentru această aplicație folosește doar numere pozitive (nu sunt permise deficite), iar valorile sunt stocate ca patru octeți de BCD (zecimal codat binar). Acest lucru permite un interval de credit de la 0 la 99, 999, 999 (două cifre pe octet). Valoarea creditului și complementul său 1 utilizează doar 8 din cei 16 octeți într-un singur bloc de date, iar restul sunt umplute cu zerouri. Există spațiu în același bloc de date pentru copia de rezervă, dar am decis că ar fi mai sigur să pun copie de rezervă într-un bloc de date separat. Blocul de rezervă se află în același sector cu blocul de date, deci nu este necesară o autentificare separată. Pentru a fi și mai sigur, ați putea lua în considerare plasarea copiei de rezervă într-un sector de date diferit, dar ar fi necesar un pas de autentificare separat pentru a accesa aceste date.

Când se face o citire a creditelor, se citește și valoarea completată și apoi cele două sunt comparate una cu cealaltă. Dacă există o nepotrivire, atunci setul de rezervă al valorii / complementului este citit și comparat. Dacă se potrivesc, backupul se presupune că este corect și este utilizat pentru a repara datele corupte. Dacă copiile de rezervă nu se potrivesc, eticheta este considerată a fi proastă și se încearcă reinicializarea acesteia.

Valorile de creștere și descreștere sunt definite în partea din față a listei și se așteaptă să fie în BCD ambalat. Rutinele care fac incrementarea și decrementarea efectiv fac acest lucru pe un număr de 32 de biți. Matematica este foarte simplă, dar necesită utilizarea rutinelor pentru a ajusta rezultatele pentru transporturile din fiecare octet BCD ambalat și de la un octet la următorul. Acest lucru se realizează prin utilizarea macrocomenzilor DAA (Adăugare Ajustare Zecimală) și DAS (Sumare Ajustare Zecimală). Aceste macrocomenzi se asigură că fiecare cifră BCD de 4 biți rămâne întotdeauna în intervalul 0-9.

În plus față de mesajele afișate în postarea anterioară, această aplicație conține mesaje pentru mulți dintre pașii suplimentari - mai ales dacă există erori de date și / sau eticheta trebuie reparată sau inițializată. Creditele sunt, de asemenea, afișate înainte și după un pas de creștere / descreștere, astfel încât să puteți vedea schimbarea valorilor.

Gata pentru această postare. Consultați celelalte proiecte electronice ale mele la: www.boomerrules.wordpress.com

Recomandat: