Obsah:

Elektronická peněženka: 3 kroky
Elektronická peněženka: 3 kroky

Video: Elektronická peněženka: 3 kroky

Video: Elektronická peněženka: 3 kroky
Video: Mobilní Bitcoin peněženka Mycelium | Bitcoin krok za krokem jednoduše a lidsky #5.3 2024, Červen
Anonim
Elektronická peněženka
Elektronická peněženka

POZNÁMKA: Nyní mám Instructables, které nabízejí kód Arduino pro RC522 a PN532.

Ve svém předchozím příspěvku jsem podrobně popsal základy komunikace s moduly RFID MFRC522 a PN532 pro čtení/zápis dat ze značek Mifare Classic 1k. V tomto příspěvku to posouvám o krok dále a ukazuji, jak pomocí těchto modulů vytvořit ze značek elektronickou peněženku. Stejně jako v předchozím příspěvku je to prezentováno jako základní implementace, ale mělo by to poskytnout základ pro řadu aplikací, které vyžadují funkce přírůstku/snižování nebo sčítání.

Krok 1: Integrita dat

U elektronické peněženky vždy existuje obava, že někdo může přidat kredity, aniž by za ně zaplatil. Existuje také obava, že kredity na štítku se mohou při zápisu dat neúmyslně poškodit. Přístupy k datům vyžadují použití klíče tagu, takže je nutné výchozí klíč změnit při první inicializaci značky. Na internetu jsou články, které hovoří o tom, jak hacknout značku, i když neznáte klíč, ale tato technika není triviální. Nedoporučoval bych používat tyto značky pro váš bankovní účet, ale jsou dost dobré pro mnoho méně rizikových aplikací.

Pravděpodobnost poškození dat je relativně malá, ale software by měl být schopen zvládnout alespoň základní případ. Tento proces zahrnuje dva kroky, přičemž prvním krokem je jednoduše detekovat poškození. V tomto projektu je řešeno ukládáním kreditní hodnoty i doplňku kreditní hodnoty 1. To umožňuje jednoduché srovnání hodnot. Druhým krokem je uložení záložní verze kreditní hodnoty a jejího doplňku. To umožňuje operaci obnovení, pokud dojde k poškození první sady kreditů. Pokud jsou obě sady poškozené, software se pokusí značku znovu inicializovat, což vede ke ztrátě všech kreditů.

Krok 2: Hardware

Hardware
Hardware

Hardwarová připojení jsou uvedena na obrázku výše. Toto je stejné nastavení jako v předchozím příspěvku s přidáním dvou přepínačů a výsuvného odporu. Jeden přepínač nevyžaduje pull-up rezistor, protože je na vstupu PIC, který má vestavěnou slabou schopnost pull-upu. V praxi by byly oba přepínače skryté, protože se používají pro přidávání kreditů a pro inicializaci tagu. Inicializační přepínač je volitelný (ruční nulování kreditu), protože software dokáže sám detekovat a inicializovat nový tag. Místo přepínačů lze použít propojovací kolíky.

Krok 3: Software

Byly provedeny dodatky k hlavní smyčce v softwaru, aby bylo možné číst dva přepínače a detekovat stav vyžadující inicializaci tagu. Jak je uvedeno v části hardwaru, inicializaci značky lze ručně zadat pomocí přepínače. Software může také inicializovat inicializaci tagu ve dvou dalších případech. Za prvé, pokud detekuje nový tag nebo datový sektor, a za druhé, pokud jsou poškozeny obě sady kreditních dat.

Ověřování značek vyžaduje použití „klíče A“pro cílový datový sektor. Výchozí klíč pro tagy Mifare Classic 1k je „FF FF FF FF FF FF FF“, ale měl by být pro vaši aplikaci změněn. Software poskytuje definice jak pro výchozí klíč, tak pro nový klíč („My_Key“). Do „My_Key“jednoduše připojte požadované hodnoty. Software se vždy pokusí nejprve ověřit značku pomocí „My_Key“. Pokud se to nezdaří, zavolá se rutina pro inicializaci značky a pro ověření se použije výchozí klíč. Inicializační rutina změní klíč na „My_Key“a nastaví kredity na nulu. Pokud máte značku s jiným než výchozím klíčem a nevíte, co to je, značku nelze ověřit. Pokud k tomu dojde, možná budete chtít zkontrolovat jiné datové sektory pomocí výchozího klíče a zjistit, zda je k dispozici. Bloky Trailer, Data block a Backup jsou definovány na začátku výpisu softwaru, takže je můžete snadno změnit.

Formát dat uložených ve značce pro tuto aplikaci používá pouze kladná čísla (nejsou povoleny žádné deficity) a hodnoty jsou uloženy jako čtyři bajty zabaleného BCD (binární kódovaný desetinný). To umožňuje rozsah kreditu od 0 do 99, 999, 999 (dvě číslice na bajt). Kreditní hodnota a její doplněk 1 používají pouze 8 ze 16 bytů v jednom datovém bloku a zbytek je vyplněn nulami. Ve stejném datovém bloku je místo pro záložní kopii, ale rozhodl jsem se, že by bylo bezpečnější dát zálohu do samostatného datového bloku. Záložní blok je ve stejném sektoru jako datový blok, takže není vyžadováno samostatné ověřování. Abyste byli ještě bezpečnější, můžete zvážit vložení zálohy do jiného datového sektoru, ale pak bude k přístupu k těmto datům zapotřebí samostatný ověřovací krok.

Po přečtení kreditů se přečte také doplněná hodnota a poté se obě porovnají. Pokud dojde k neshodě, pak se načte a porovná záložní sada hodnota/doplněk. Pokud se shodují, záloha se považuje za správnou a slouží k opravě poškozených dat. Pokud se záložní kopie neshodují, je značka považována za špatnou a pokusí se ji znovu inicializovat.

Hodnoty přírůstku a úbytku jsou definovány v přední části seznamu a očekává se, že budou v zabaleném BCD. Rutiny, které efektivně zvyšují a snižují, to dělají na 32bitovém čísle. Matematika je velmi jednoduchá, ale vyžaduje použití rutin pro úpravu výsledků pro přenosy v každém zabaleném BCD bajtu a od jednoho bajtu k druhému. Toho je dosaženo použitím maker DAA (Decimal Adjust Addition) a DAS (Decimal Adjust Subtraction). Tato makra zajišťují, že každá 4bitová číslice BCD vždy zůstane v rozsahu 0-9.

Kromě zobrazených zpráv v předchozím příspěvku má tato aplikace zprávy pro mnoho dalších kroků - zejména pokud se vyskytnou chyby dat a/nebo je třeba značku opravit nebo inicializovat. Kredity jsou také zobrazeny před a po kroku přírůstku/úbytku, abyste viděli, jak se hodnoty mění.

To je k tomuto příspěvku. Podívejte se na mé další projekty v oblasti elektroniky na: www.boomerrules.wordpress.com

Doporučuje: