Zpět na seznam článků     Číst komentáře (13)     Verze pro tisk

Homemade čtečka telefonních karet

Autor: Bystroushaak   
15.6.2009

Text pojednává o konstrukci čtečky karet pro telefonní automaty (ISO 7816-2) z běžně dostupných materiálů.


Verze textu: 1.0.2 (15.06.2009)

Licence: CC by-nc-sa (http://creativecommons.org/licenses/by-nc-sa/3.0/cz/)

thx to Joenash & (#freedom99, irc.c0renet.sk:6667)

Obsah


Deklarace

Tento text pojednává o konstrukci čtečky karet pro telefonní automaty (ISO 7816-2) z běžně dostupných materiálů. Čtečku si samozřejmě můžete koupit hotovou, ale podle mě to za ty peníze nestojí.

V textu není řešen protokol kterým karta komunikuje - to už popsali jiní a lépe než bych to zvládl já. Pokud Vás protol zajmá, na konci dokumentu jsou odkazy na články, které se problematice věnují.

Tento text nepojednává o zápisu na kartu, protože mi to přišlo zbytečné (z části paměti kde jsou uchovány informace o kreditu Vám karta povolí jen odečítat a těch pár bitů co můžete v ostatních sekcích paměti změnit na 0 nestojí za námahu).

Zde je několik obrázků výsledného díla.

Potřeby

  • Nářadí:
    • Trafopájka
    • Tavná pistole
    • Kleště štípací
    • Nůž (nejlépe odlamovací - je ostrý)
    • Miniaturní šroubovák
    • Multimetr

    • Telefonní karta
    • Arduino diecimilia

  • Suroviny:
    • Pouzdro na kartu (často ho dávají ke kreditkám, nebo seženete v papírnictví)
    • Rozvírací čtečka SIM ze starého mobilu (seženete i s mobilem za max 50kč ;)
    • Kus síťového (UTP) kabelu
    • 3-5 KOhm rezistor (takzvaný pull-up rezistor)

    • Cín
    • Kalafuna
    • Silikonová tyčinka pro tavnou pistoli

Výroba čtečky:

Nejdříve je nutné nachystat si všechny nástroje a suroviny, které jsou zapotřebí k výrobě čtečky. Je také vhodné si udělat místo na stole atp..

1) Příprava pouzdra

V pouzdru na kartu musíme vyříznout díru, ke které bude později přidělána upravená čtečka SIM karet. Provedeme to tak, že vložíme kartu do pouzdra, označíme si kde se nachází kontaktní plošky čipu a po vyndání karty díru odlamovacím nožem (pokud se vám zdá tupý, odlomte z něj kus) vyřízneme. Doporučuji vyříznout díru do obou stran pouzdra - ulehčí Vám to práci s přizpůsobováním nožiček čtečky jeho přilepení.

2) Příprava čtečky SIM karet

Dál je na řadě úprava čtečky SIM karet; Štípačkami z ní odštípejte všechny nepotřebné kusy plastu tak, aby šla přiložit nožičkami těsně k pouzdru. Tuto činnost si radši dopředu promyslete, ať se nestane že odstřihnete něco, po čem se čtečka rozpadne. S ohýbáním nožiček aby pasovaly na piny karty se prozatím nezabývejte - jelikož drží v tenkém kousku plastu, dokud čtečku nezalepíte silikonem, lehce se utrhnou.

3) Přidělání čtečky SIM karet k pouzdru

Jakmile budete mít čtečku upravenou, je načase dát žhavit tavnou pistoli (nezapomeňte si pod ní dát kus papíru, lepidlo z ní často vytéká permanentně). Až bude pistole rozehřátá, vložte do pouzdra kartu a umístěte čtečku tak, aby se její pacičky dotýkaly plošek na kartě. Následně čtečku po stranách opatrně zafixujte a vyčkejte, dokud silikon (nebo co to je) neztuhne. Poté opatrně zohýbejte výstupní dráty co z ní vedou (nikoliv kontaktní pacičky!) vždy jeden dolu a jeden nahoru.

4) Příprava UTP kabelu

Nyní je vhodné připravit si kabel. Já jsem zvolil klasický UTP kabel, který by nemělo být problém sehnat (v prodejně počítačů, v elektro prodejně atp..). Je dobré si jednu stranu kabelu zafixovat (např. peanem, nebo na ní udělat uzel), aby se vodiče uvnitř nepohybovaly.

Na volné (nezafixované) straně odstraňte krytí a následně i bužírku ze třech párů vodičů. Jeden zbývající pár (např. hnědý) odstřihněte, protože není zapotřebí a v konečném důsledku by jen překážel. Je vhodné si všechny odizolované konce sestřihnout na stejnou velikost (já jsem nechal asi 3mm) a drátky pocínovat - to Vám velmi usnadní práci během připajování drátů ke čtečce.

5) Připájení pull-up rezistoru a kabelu ke čtečce

Pokud máte konce drátků pocínované, tak je čas na pájení. Jestliže jste dosud nikdy nic nepájeli, doporučuji Vám najít si nějaký návod na netu a zkoušet to podle něj tak dlouho, dokud se to nenaučíte opravdu dobře. Jakmile budete mít jistotu že pájení není problém, lokalizujte pomocí multimetru výstup z UCC a I/O plošky (viz diagram u části 9) a přidělejte mezi ně (samozřejmě na výstup - tam co budete pájet dráty) pull-up rezistor (bez něj čtečka nebude fungovat) a poté připájejte ke každému výstupu jednotlivé dráty UTP kabelu.

6) Izolace připájených drátů

Jakmile všechny dráty připájíte, tak je nutné zalepit spoje (a celkově celou vnější část čtečky kromě děr nad pacičkami) silikonem. Dávejte si přitom dobrý pozor aby se Vám kabely nedotýkaly odizolovanými částmi!

Je dobré si lepení rozložit na několik kroků a vždy počkat až předchozí strana zaschne.

7) Kontrola zkratu

Teď, když máte hlavní konstrukci hotovou, je nutné odizolovat UTP kabel i z druhé strany a proměřit (samozřejmě s vyndanou kartou) jestli někde mezi spoji nemáte zkrat.

Pokud jste pečlivě dodržovali návod, žádný tam nebude. Když by se přeci jen stalo že měřák ukáže zkrat (nulový odpor - nikoli odpor pull-up rezistoru!), je nutné nahřát šroubovák a zkratované vodiče zalepené silikonem od sebe oddělit.

8) Ohýbání nožiček čtečky

Jestliže máte vše úspěšně proměřené, je načase opatrně (!) zohýbat pacičky čtečky tak, aby dosahovali na kartu. Díky tomu že jste pouzdro (doufám) prořízli i z druhé strany, je to poměrně snadná záležitost. Dávejte si pozor na počet ohnutí - pacičky nevydrží moc pohybů a pokud s nimi budete kroutit déle než je nezbytně nutné, tak prostě upadnou.

!!! Dbejte na zachování obloukového tvaru paciček, jinak se po vložení/vysunutí karty utrhnou/ohnou (vím o čem mluvím, jednu čtečku jsem takhle zničil) !!!

9) Mapování kabelů

Vložte do čtečky kartu a zjistěte kam jste který drát připájeli. Měření provádějte tak, že z vrchní strany čtečky (dírou nad pacičkama) prostrčíte hrot měřáku, přiložíte ho na plošku karty (nikoliv na pacičku čtečky - takto zjistíte jestli má pacička správný dotek ke kartě) a pak hledáte který drát k ní pasuje.

Výsledky je dobré si někam zapsat - například takto:

Číslování pinů karty:

     ________________________
    |          |             | 
    | 1 UCC    |      4 GND  | 
    |_______   |  ___________|
    |       \ /   \          |                                     
    | 2 RST  |     |  5 VPP  | 
    |_______/ \   /._________| 
    |          | |           |
    | 3 GND    | |    6 I/O  |
    `----------^-^-----------'

Zapojení drátů k mojí čtečce:

    1 - UCC == Oranžovo-bílá
    2 - RST == Zelená
    3 - CLK == Zeleno-bílá
    4 - GND == Modrá
    5 - VPP == Modro-bílá       // tento kontakt je běžně nevyužit
    6 - I/O == Oranžová

Pokud jste k dané plošce nenašli odpovídající kabel, je nutné více ohnout pacičku čtečky - samozřejmě s vysunutou kartou. Jakmile budete mít zjištěno kam patří který drát, je možné stavbu prohlásit za hotovou.


Čtení

Ke čtení jsem napsal program pro Arduino diecimilia, který umí přečíst paměť telefonní kartu a zobrazit o ní pár drobností (sériové číslo, počet jednotek na kartě). Pokud by měl někdo zájem vytvořit vlastní, v odkazech na konci článku jsou linky na články popisující protokol.

Připojte čtečku k arduinu. RST na dig. port 10, CLK na 11 a I/O na 12. K portu 13 můžete připojit tlačítko, které spustí načítání ze čtečky do interní EEPROM paměti arduina - to se hodí napřiklad když nemáte po ruce PC, ale pouze arduino a čtečku.

Program komunikuje (jak je u arduina zvykem) pomocí sériové komunikace. Ovládání můžete provádět pomocí software k arduinu, nebo vlastním programem či pomocí sériového terminálu připojeného na dig. pin 0 a 1.

Ukázka menu

    Prikazy:
        r - Nacist dump z ctecky
        n - Nacist dump z EEPROM
        u - Ulozit dump do EEPROM

        d - Zobrazit dump
        a - Zobrazit alternativni (zjednoduseny) dump

        i - Zobrazit info o karte

Ukázka dumpu

    Byte  Index    DEC  HEX     BIN
      0  000-007:  161   A1  1010 0001 
      1  008-015:   43   2B  0010 1011 
      2  016-023:   99   63  0110 0011 
      3  024-031:    0   00  0000 0000 
      4  032-039:   70   46  0100 0110 
      5  040-047:  205   CD  1100 1101 
      6  048-055:  151   97  1001 0111 
      7  056-063:   35   23  0010 0011 
      8  064-071:    0   00  0000 0000 
      9  072-079:    0   00  0000 0000 
     10  080-087:  127   7F  0111 1111 
     11  088-095:   63   3F  0011 1111 
     12  096-103:    1   01  0000 0001 
     13  104-111:  254   FE  1111 1110 
     14  112-119:   34   22  0010 0010 
     15  120-127:   97   61  0110 0001

Ukázka alternativního dumpu

    A1 2B 63 00 46 CD 97 23 00 00 7F 3F 01 FE 22 61 
    unsigned char dump[]= {0xA1, 0x2B, 0x63, 0x00, 0x46, 0xCD, 0x97, 0x23, 0x00, 0x00, 0x7F, 0x3F, 0x01, 0xFE, 0x22, 0x61};  // C array
    dump= [0xA1, 0x2B, 0x63, 0x00, 0x46, 0xCD, 0x97, 0x23, 0x00, 0x00, 0x7F, 0x3F, 0x01, 0xFE, 0x22, 0x61]  # python array

Ukázka informací o kartě

    Pocet impulzu: 49 (nikoli korun!)
    Seriove cislo: 0004640151

Zdrojový kód

Nové verze

Novější verze bude s trochou štěstí (uvědomuji si, že nic netrvá věčně a co se týče internetu, platí to dvojnásob..) možné sehnat na http://kitakitsune.org (tedy pokud bude nějakých nových verzí potřeba..)


Zajímavé odkazy


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 2/2

1  2  3  4  5    
(známkování jako ve škole)