Telefonní karty
Předem článku bych chtěl všechny upozornit, že zde nenajdete návod na stavbu tzv. „věčných“ karet. Zato je zde podrobně popsána funkce tel. karty a návod na její čtení v amatérských podmínkách.
Všechny níže uvedené informace se týkají českých telefonních karet (slovenské mají jen 128 bitů a jsou jinak kódované) a jsou běžně dostupné, takže žádný "tajný materiál".
Telefonní karta není nic jiného než jen 256 bitová sériová paměť EPROM. Jak jistě víte, tyto paměti se programují zvýšeným programovacím napětím (21V) a smazat se dají jedině infračerveným zářením (pokud mají průhledné okénko), nebo Rentgenovým zářením (pokud jsou celé zalité).
Na obrázku je zapojení vývodů spolu s popisem jejich funkce:
1 – Vcc – napájení
+5V 2 – R/W – přepínání zápis(0) / čtení(1) 3 – CLOCK – hodinový signál 4 – RESET – resetovací vývod (aktivní v 0) 5 – Gnd – zem napájení 6 – Vpp – vstup programovacího napětí (21V) 7 – OUT – výstup dat 8 – FUSE – pojistka, která zabraňuje přepsání „systémových“ dat |
Co se
děje při telefonování
Po zvednutí sluchátka telefonního přístroje a vsunutí
karty, automat přečte její obsah (viz
níže - popis bitů) a podle prvních 95 bitů pozná
jestli se skutečně jedná a telefonní kartu, maximální počet
jednotek a další věci (níže).
Za těmito bity informací je dalších 159 bitů, kde každý
bit odpovídá jedné jednotce. Jak jsem se již zmínil, na kartě
je také zapsána hodnota maximálního počtu
jednotek a automat se tím následujících krocích řídí. Je-li
karta jen 50 jednotková, zapíše automat jen 50 jednotek a pak
oznámí, že je karta již prázdná. Proč je tam tedy zrovna
160 jednotek ? Je to proto, že mezi kartami s 50, 100, nebo 150
jednotkami není žádný rozdíl. A automat její velikost pozná
jen podle toho, co je na kartě napsáno v prvních 95 bitech (viz. skutečný obseh karty).
Kdyby se tedy teoreticky změnila hodnota bitů v první části
karty, tedy konkrétně těch které určují počet jednotek,
dala by se z 50 jednotkové karty udělat třeba 150 jednotková
karta.
A ještě něco. Při výrobě karty například se 100
jednotkami se na kartu zapíše jako maximální počet jednotek
číslo vždy o dvě jednotky větší, tedy 102 a první dvě
jednotky jsou jako test vymazány přímo u výrobce.
Začnete-li tedy z automatu někam telefonovat, začne se v paměti
místo s jednotkami postupně progamovat, a za každou
provolanou jednotku se zapíše jedna 1.
Postup
komunikace s kartou
Na dalším obrázku je graf kominukace s kartou a
tady je podrobnější popis:
Čtení
Po připojení napájecího napětí se karta nejprve resetuje.
To se provede vývodem RESET
připojeným na zem a přivedením jednoho impulsu (i více, ty už nic nedělají)
na hodinový vstup CLOCK.
Tím se vnitřní čítač adresy (který
adresuje paměť) nastaví na první adresu. Poté se
resetovací vstup připojí na +5V
(napájecí napětí) a na
výstupu OUT se
objeví hodnota prvního bitu (u mých
karet byl vždy 1). Čtení dalších bitů karty je
už velice jednoduché, stačí na vstup CLOCK
přivádět další impulsy a na výstupu OUT
číst logickou hodnotu. Tím se přičítá jednička vnitřnímu
čítači, který paměť adresuje. Tímto způsobem je možné přečíst
celý obsah paměti (256 bitů).
Po dočítání na konec se čítač resetuje a data pokračují
znovu od začátku.
Délka jednotlivých kroků by měla být větší než 40ms, ale
jejich hodní hranice není nijak omezena, proto je možné kartu
přečíst „ručně“.
Zápis
Zápis do karty je možné provést podobným způsobem. Jen je
potřeba signálem CLOCK
„dokrokovat“ až k místu, kde končí protelefonované
jednotky a začínají samé 0 (dříve
je zakázán zápis). Zde se vývod R/W nastaví na +5V a vývod VPP (programovací napětí)
se z 5V zvýší
na 21V. Poté se na
vstup CLOCK přivede
signál a před jeho koncem (jinak to
nefunguje !!!) se opět sníží hodnota na VPP a poté R/W. Tím jsme zapsali
jednu 1 do
právě naadresovaného bitu.
Tímto způsobem je možné programovat pouze prostor, kde jsou
volné jednotky. Prostor s informacemi o kartě je proti zápisu
blokován ve výrobně přepálenou pojistkou na vývodu FUSE.
Význam jednotlivých
bitů
Je patrný z této tabulky.
Prvních 8 bitů je
kontrolní součet.
V další 12 bitech
je zapsáno číslo 831h (hexadecimálně), to je označení
telefonních karet.
Dalších 12 bitů
značí počet jednotek na nové kartě.
Kód výrobce je v dalších 8
bitech, 00h -
Schlumberger, 40h - Gemplus
Poté následuje 40 bitové
sériové číslo karty (je vždy jiné).
V dalších 8 bitech
je další stálé číslo tel. karet – 11h.
Dalších 8 bitů
značí zemi, ve které je možné tuto kartu používat, 55h - Česká
republika
Zbývajících 160 bitů
je bitové pole, kde každy bit patří jedné jednotce.
Převod
binárních čísel na hexadecimální
To je potřeba znát před dekódováním jedniček
a nul, které se z paměti získají.
Tak tady je postup: Nejprve se všechny jedničky a nuly rozdělí
do oddílů po čtyřech bitech. A poté se každá takováto
"čtyřka" dekóduje zvlášť podle následujícího
obrázku. Nad každý bit z jedné čtyřky se napíše jeho
hodnota. První číslo má nejvyšší hodnotu – 8, další má 4, pak 2 a poslední 1. No a poté se sečtou
ty čísla, pod kterými je jednička. A za výsledek se napíše
malé "h", aby bylo vidět, že výsledek je v
hexadecimální soustavě.
Pokud výsledek vychází jedno číslo (1,2,3…),
není to problém, pokud ale vychází 10
a výše, zapíše se místo tohoto dvojčísla jedno písmeno z abecedy:
10 = A, 11 = B, 12 = C, 13 = D…
Skutečný
obsah jedné 100 jednotkové karty
S pomocí čtecího zařízení (uvedeno
dole) byla přečtena "prázdná" 100
jednotková karta a byli z ní získány následující bity. Pro
lepší orientaci jsem je rozdělil po čtyřech a oddělil pomlčkami
(pro převod na hexadecimální číslo). Pro lepší přehlednost
je mezi bity, které spolu něco znamenají, pomlčka červená.
Podle tabulky, uvedené výše si jednotlivé hodnoty můžete
sami rozkódovat a zjistit co znamenají.
1011-0111-1000-0011-0001-0001-0000-0010-0100-0000-0011-0011-
0010-1000-1111-1011-0110-0100-1001-0011-0001-0001-0101-0101-
1111-1111-1111-1111-1111-1111-1111-1111-1111-1111-1111-1111-
1111-1111-1111-1111-1111-1111-1111-1111-1111-1111-1111-1111-
1111-1100-0000-0000-0000-0000-0000-0000-0000-0000-0000-0000-
0000-0000-0000-0000
Ruční čtečka
telefonních karet
V poslední části této stránky je popsán „ruční“
způsob čtení telefonních karet.
Podle schéma zapojení je vidět, že způsob čtení je velice
jednoduchý. Stačí ke kartě připojit dvě tlačítka (CLOCK, RESET) a na vývod OUT připojit logickou
sondu, nebo dvě LED diody, podle nichž se pozná logická
hodnota. Tlačítko na vývodu CLOCK
by mělo být nějaké lepší, nebo zrovna tzv. „bezzákmitové“.
Postup čtení karty byl již popsán výše, tak jen stručně.
Po zapnutí se stiskne tlačítko RESET
a poté i CLOCK.
Poté se pustí nejprve CLOCK
a až poté RESET.
V tu chvíli již máme na výstupu hodnotu prvního bitu. K hodnotám
dalších bitů se dostaneme s dalšími stisky tlačítka CLOCK.
Pokud nechcete pracně dělat nějakou čtečku, stačí izolepou
přilepit na kontakty karty drátky. Případně je možné na nějakou
starší je i připájet, ale jedině mikropájkou a rychle,
jinak kontakty z karty upadají.
Závěr
Tak to je asi všechno co jsem zde chtěl uvést. Podle tohoto návodu
již není problém zhotovit si třeba s mikroprocesorem PIC přístupový identifikační systém
pracující na principu čtení sériového čísla karet.
Prodej elektroniky i ZDE. Článek pochází z adresy http://panda.unas.cz ZPĚT |
Zdeněk
Novotný |