ZPĚT

PANDA ELEKTRONIK

Znak projektu "Panda ELEKTRONIK"


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:

1Vcc – napájení +5V
2R/W – přepínání zápis(0) / čtení(1)
3CLOCK – hodinový signál
4RESET – resetovací vývod (aktivní v 0)
5Gnd – zem napájení
6Vpp – vstup programovacího napětí (21V)
7OUT – výstup dat
8FUSE – 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ý
nov_zden@seznam.cz