Slovenské telefónne karty



Uvedené informácie sú voľne dostupné a boli zverejnené v tlači, alebo na internete

... a ešte ...
§ 249c - Neoprávnené obstaranie platobnej karty a telefónnej karty
  • (1) Kto si neoprávnene obstará platobnú kartu iného alebo neoprávnene vyrobí a obstará telefónnu kartu alebo predmet spôsobilý plniť ich funkcie, potresce sa odňatím slobody až na dva roky alebo peňažným trestom, alebo prepadnutím veci.
  • (2) Odňatím slobody na jeden rok až päť rokov sa páchateľ potresce, ak spôsobí činom uvedeným v odseku 1 značnú škodu.
  • (3) Odňatím slobody na dva roky až osem rokov sa páchateľ potresce,
    • a.) ak spôsobí činom uvedeným v odseku 1 škodu veľkého rozsahu alebo
    • b.) ak spácha taký čin ako člen organizovanej skupiny.
... to len pre informáciu /citát z trestného zákona 1999/
... a môžem pokojne začať ...

V A-Rádiu sa už dávnejšie objavilo pár článkov o telefónnych kartách. Takmer vždy sa jednalo o karty, používané v ČR, ktoré pracujú na úplne inom princípe ako slovenské. Pokúsim sa tu vysvetliť princípy práce so slovenskými telefónnymi kartami (a kompatibilnými) pomocou počítača.

1. Popis karty
2. Komunikačný protokol / len načítavanie /
3. Pripojenie k PC
4. Program
5. Použitie
6. Použitá literatúra


[ Popis karty ]

Slovenské telefónne karty pracujú podľa štandardu ISO 7816-2. Ide o 128-bitovú pamäť, ktorá je rozdelená približne takto:
 64 bitov EPROM  - len na čítanie (údaje výrobcu)
 40 bitov EEPROM - (5x8 bitov)
 24 bitov nastavených na "1"

Konektor karty vyzerá takto:

Konektor

Karta môže mať niekedy len šesť vývodov - vývody 4 a 8 sú vynechané (keďže sú aj tak nevyužité, tak na tom nezáleží). Napájacie napätie karty je 5V, takže je kompatibilná s logikou TTL. Bližšie detaily (rozmery, pracovné podmienky,...) popisuje norma ISO 7816.

[ Komunikačný protokol]

Nebudem popisovať všetky detaily kominikačného protokolu, zameriam sa hlavne na načítanie údajov z karty. Bližší popis komunikácie s kartou (zapisovanie a pod.)je v [ 2.].

[ Reset ]

Pred načítavaním údajov z karty treba kartu resetovať. Pri RESETe sa nastaví čítač adresy na "0".
Vyslanie signálu RESET je nasledovné:

Signál RESET

Samotný RESET nastane, ak je na vstupe RESET stav Log.1 a na vstupe CLOCK nastane zmena z Log.0 na Log.1. Vtedy sa vynuluje čítač adresy.

[ Read ]

Načítavanie údajov je pomerne jednoduché:

Signál READ

Na vstupe RESET je po celý čas Log.0, adresovanie sa robí jednoducho privádzaným impulzov na vstup CLOCK - koncovou hranou impulzu sa adresa zväčší o 1 a na výstupe OUT sa objaví logická hodnota práve adresovaného bitu. Pre načítanie bitu s adresou nižšou, ako má práve adresovaný bit, treba kartu resetovať a načítavať znova až po požadovanú adresu.

[ Pripojenie karty k PC ]

Pripojenie karty k PC je vcelku jednoduché ( aj vďaka kompatibilite s TTL ). Keďže má karta veľmi malý odber prúdu, môžeme ju napájať aj z výstupu paralelného portu. Výstupný signál karty (OUT) sa privádza na vstup PE (Paper End - Pin 12). V podstate je možné pripojiť výstup karty na ktorýkoľvek zo vstupov LPT, treba však brať do úvahy, že jednotlivé vstupy sú rôzne negované, čo treba zohľadniť aj v programe.

Pripojenie karty k PC

Na pripojenie karty je dobré urobiť si jednoduchú mechaniku (niekedy sa dá aj kúpiť). Ako kontakty sú vhodné napríklad kontakty zo slotu ISA. Neodporúčam spájkovať priamo kontakty karty - môže sa stať, že sa kontakty odtrhnú, prípadne stratia kontakt s EEPROM.

[ Program ]

Program je napísaný v Turbo Packale 7.0. Program po spustení začne načítavať údaje z karty, pripojenej na LPT port s adresou AdrOut (AdrIn). Nie je tu ošetrené zisťovanie prítomnosti karty, ani na ktorý vstupný pin LPT bol pripojený výstup karty. Údaje sú postupne načítavané do poľa Data a vypisované na obrazovku.

{------------ PROGRAM -------------}
Uses Crt;
Const AdrOut=$378;
      AdrIn =$379;
      Wait =10;  {ms}

Var x1,x2: byte;
    Data :
Array [1..16,1..8] of byte;

Procedure Reset;
 
Begin
  Delay(Wait);  Port[AdrOut]:=1;
{ Ucc }
  Delay(Wait);  Port[AdrOut]:=3; {Ucc + Res }
  Delay(Wait);  Port[AdrOut]:=7; {Ucc + Clk + Res }
  Delay(Wait);  Port[AdrOut]:=3; {Ucc + Res }
  Delay(Wait);  Port[AdrOut]:=1; {Ucc }
  Delay(Wait);
 
End;

Function Read:byte;
 
var b:byte;
 
Begin
  Delay(Wait);  Port[AdrOut]:=1; {Ucc }
  Delay(Wait);  Port[AdrOut]:=5; {Ucc + Clk}
  Delay(Wait);  Port[AdrOut]:=1; {Ucc }
  b:=Port[AdrIn];
  Read:=b;

 End;

Begin
 Port[AdrOut]:=1;
 Repeat
  ClrScr;
  Reset;

  For x1:=1 to 16 do
   Begin
    For x2:=1 to 8 do
     Begin
      Data[x1,x2]:=Read;
      Write(Data[x1,x2]:5);

     End;
   WriteLn;

  End;
 Port[AdrOut]:=1;

 Until ReadKey=#27;
 Port[AdrOut]:=0;

End.
{---------- PROGRAM END -----------}

[ Použitie ]

Telefónne karty je možné využiť ako elektronické kľúče, identifikáciu užívateľa, zabezpečenie programu pred spustením neoprávnenou osobou a podobne. Hlavička karty je pevne daná, takže môže byť programom pridelená jednotlivým užívateľom, zapisovateľná oblasť by sa dala v krajných prípadoch použiť ako počítadlo - pre obmedzenú dobu prístupu. Ak by bolo k dispozícii všetkých 128 bitov karty, znamenalo by to 3.403-E+38 kombinácií, čo je vcelku slušné. Pri využití len samotnej hlavičky je to 64 bitov, čo predstavuje 1.84-E+19 kombinácií, čo je väčšinou pri zabezpečovaní úplne postačujúce. Nevýhodou by bolo riziko skopírovania karty - to sem už ale nepatrí.

[ Použité súčiastky ]

Konektor Cannon 25M

[ Použitá literatúra/zdroje]

[ 1.] Když se řekne Smartcard,Chip 5/97 ( s.180-183)
[ 2.] What you need to know about electronics telecards, Stephane BAUSSON
[ 3.] ISO7816 asynchronous smartcard information, Stephane BAUSSON