НА ЧТО ГОДИТСЯ ТЕЛЕФОННАЯ КАРТОЧКА?


А.ФИЛЮТИЧ
220056, г.Минск, ул.Лесная, 1 — 22

Раньше использованные карточки можно было обменять на почте, но теперь, с введением в оборот одноразовых карточек, все изменилось

После того как карточка закончилась, ее можно только выбросить или положить в коллекцию. Но не спешите выбрасывать использованную карточку. Она еще может послужить в качестве электронного ключа или пароля для ваших программ

Микросхема в телефонной карточке имеет 8 выводов, но реально используются только 5. Однако можно обойтись только четырьмя

Посмотрите на микросхему: самый большой по площади контакт — "земля"

Расположение остальных выводов показано на рис.1. Как уже упоминалось, один из контактов можно не использовать. Этот контакт — питание +5V. Используются только контакты Reset, Clock, Data и Gnd

card

Саму микросхему подключаем к ПК при помощи параллельного порта. Для этого требуется переходник, схема которого показана на рис.2. Подавая необходимые данные в порт 378h (базовый адрес LPT1), можно прочитать данные", записанные в микросхему. Это делается через бит 7 порта 379h. Нас интересуют только первые четыре байта данных, т.к. остальные содержат OOh. Первый прочитанный байт должен быть равен 7Вh. Три следующих — различны для разных карточек. Следует заметить, что информация, записанная в микросхему, постоянна и никогда не изменяется, т.е. не зависит от оставшегося количества минут

Ниже приведен текст программы, читающей информацию из карточки. Program TeleCard;
uses crt;
Const;
Copyright=;'(С) Филютич Алексей, 1997';
Var;
i,j,dat: byte;
Data: array [0..3] of byte;
{————————};
Function ReadCard:byte;
var;
S:byte;
begin;
asm ;
mov dx,379h ;
in a1,dx ;
mov c1,7 ;
shr a1,c1 ;
mov S,a1 ;
end;;
ReadCard:=S;
end;;
{——————————————};
Procedure WriteData (A: byte) ;assembler;
asm;
mov a1,A;
mov dx, 37Bh;
out dx,a1 ;
end;;
{————————————};
Procedure Next; {Увеличить адрес};
begin;
Delay (1) ;
WriteData (0);
WriteData (2) ;
WriteData (0);
end;
{——————————————}
Procedure Reset;
{Сброс микросхемы в исходное состояние}
var
A:byte;
begin
WriteData (0); {Сброс}
WriteData (1);
WriteData (3);
WriteData(l);
WriteData (0);
for a:=0 to 9 do
Next
WriteData(0); {Сброс}
WriteData(1);
WriteData (3);
WriteData (1);
WriteData (0);
end;
{-------------------}
Function Dec2Hex (value:byte): string;
Function d2h (value:byte): char;
begin
case value of 0..9 : d2h:=chr(value+$30);
10..15 : d2h:=chr(value+$37);
end;
end;
begin
Dec2Hex:=d2h(value diy $10) + d2h (value and $0F)
end;

Begin
Reset
{Читаем первые четыре байта}
for i:=0 to 3 do begin
dat:=0;
for j:=0 to 7 do begin
dat:=dat+(ReadCard sh1 (7-j));
Next;
end;
Data[i] :=dat;
end;
Reset;
If Data(0]<>$7B then begin
writeln('Карточка повреждена');
Halt;
end;
write('Данные из карточки:') ;
for i:=0 to 3 do begin
write(Dec2Hex(Data[i]:3);
end;
writeln;
End.

Электронный ключ, сделанный из карточки, можно использовать в качестве пароля в системах шифровки данных, ключа для запуска программ и т.д.

Всех заинтересовавшихся данным вопросом автор приглашает к диалогу.


РАДИОЛЮБИТЕЛЬ 11/97, с.9