Эмулятор таксофонной карты (часть 4)

Ну а теперь перейдем от теории к практике. И первым нашим шагом будет сборка ридера карточки (card reader), т.е. считывающего устройства. Наиболее простым вариантом является сборка ридера для подключения его к LPT-порту компьютера. Схема элементарна. Дальше следует написать простейшую прогу, которая будет считывать с карточки инфу и выдавать ее в более или менее удобочитаемом виде. Пример такой программы приведен ниже.

program Phonecard_reader;
uses Crt;
const
LPT=$378; {Базовый адрес порта LPT}
del=1; {константа задержки в 1 мс}
procedure Clk(v:byte); {Clk(1) — устанавливает высокий уровень CLK
Clk(0) — устанавливает низкий уровень CLK}
var
tmp:byte;
begin
tmp:=Port[LPT];
if v=0 then
tmp:=tmp and $FE
else
tmp:=tmp or 1;
Port[LPT]:=tmp;
end;

procedure Reset(v:byte); {Reset(1) — устанавливает высокий уровень RST
Reset(0) — устанавливает низкий уровень RST}
var
tmp:byte;
begin
tmp:=Port[LPT];
if v=0 then
tmp:=tmp and $FD
else
tmp:=tmp or 2;
Port[LPT]:=tmp;
end;

function GetData:Byte;
var
tmp:Byte;
begin
tmp:=Port[LPT+1];
if tmp=120 then
GetData:=1
else
GetData:=0;
end;

procedure SetData(v:byte);
var
tmp:byte;
begin
tmp:=Port[LPT];
if v=0 then
tmp:=tmp and $FB
else
tmp:=tmp or 4;
Port[LPT]:=tmp;
end;

var
arr:array[0..1024] of byte;
idx:word;
f:text;
begin
assign(f,’con’); {По умолчанию вывод идет на экран. Вместо con
можно поставить имя файла, и вывод будет
направлен в него}
rewrite(f);
idx:=0;
textmode(Font8x8 or CO80);
clrscr;
Clk(0);Reset(0);delay(del);
Reset(1);delay(del);
Clk(1);delay(del);Clk(0);delay(del);Reset(0);delay(del);
repeat
begin
if (idx mod 8)=0 then
write(f,#13#10+’Byte ‘,(idx div 8):2,’ :’)
else
if (idx mod 4)=0 then
write(f,’ ‘);
Clk(1);delay(del);
arr[idx]:=GetData;
Clk(0);delay(del);
write(f,arr[idx]);
inc(idx);
end;
until idx=1024;
while keypressed do readkey;
writeln(#13#10’Press any key to exit …’);readkey;
close(f);
end.

Для тех, кто весьма ленив и не любит топтать клавиатуру, могу порекомендовать готовую прогу, называемую SmartLab. Комменты, как говорится, излишни. Вся дополнительная информация находится в help-файле этой проги. Ну, а теперь разберем, что же означают все эти байтики, болтики и винтики, которые мы выгребли из карточки. (Несущественные данные пропущены).

Байт
Биты
Значение/Описание
1
1-8
D8 старые карты
DD новыекарты
2
9-16
код страны
5
33-36
номинал карточки
5
37-40
последняя цифра
года выпуска
6
41-44
№ месяца выпуска
6-9
45-64
серийный номер
9
65-72
4096* NBS единиц
10
73-80
512* NBS единиц
11
81-88
64* NBS единиц
12
89-96
8* NBS единиц
13
97-104
1* NBS единиц (NBS-число установленных битов)
14-40
105-320
FF — проверочная область

Итак, можно выделить следующие информационные области на карте: заголовок, счетчик и фуфел. Заголовок содержит 40 бит информации, которые жестко программируются изготовителем карт. Обычно эта область содержит чисто служебные данные, которые в принципе нам нужны лишь для информативности. Следует иметь в виду, что некоторые производители в битах 36-64 пишут копию даты выпуска и серийного номера. Кроме этого, интересной фишкой является то, что первыми четыремя цифрами серийного номера всегда будет дата выпуска, т.е., 0600 будет означать июнь 2000 года. Назначение счетчика понятно: вначале все биты установлены в 00, потом как лишь таксофон «съедает» единицу времени, соответствующий бит принимает значение FF. Проверочная область — область, на которой производитель проверяет работоспособность чипа. И, наконец, все, что находится после 40 байта, не имеет для нас никакого значения. Последние две области и есть тот фуфел, который лишь мешает и вносит кучу неразберихи в этот вопрос.

Значение счетчика определяется по следующему принципу:

Байт   9   10   11   12   13

8-езначение 00000001 00011111 01111111 00000011 00011111

10-езначение   1   5   7   2   5

Переводим из 1*8^4 + 5*8^3 + 7*8^2  + 2*8^1  + 5*8^0

8-й СС в 10-ю 4096 + 2560 +   448   +  16   + 5   =7125

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

Читал, читал, прикольно, что дети в песочнице 😉 Эмулятор на PIC:) Может в этом регионе ещё «чугунки» висят. Скорее всего, в качестве проца 89С51 стоит с кварцем 4МГц. С этим тормозом вполне и ATiny справится на 1МГце. У нас (Украина) уже давно перешли на SLE4436 + используют алгоритм аутентификации SLE (посмотрю, как вы его обходить будете:). Странно, что в Москве ещё это не сделали. А может сделали, да господа фрицкеры-хацкеры не могут трафик карта-таксофон снять? Это же не журнал Phrack Magazine читать, верно? С теми скоростями, на которых «наши» «Телекарт-10…» работают с картой, PIC даже «турбированый» на 20МГц подохнет в момент — НЭУСПЭЕТ. Да он и по подаче питания завалится. Время внутреннего сброса после PowerUP, а ну, глянули в pdf. Пока очухался, а на экране надпись — ошибка чего-то там. Будешь ломиться дальше, достучится таксофон до «Сириуса» и заложит по V.23 — бац, милиция 🙂 А вот тов. Молот чего-то там грозился по поводу вашего метро (у вас чего — карточки одноразовые?). Господа, зайдите на http://www.geocities.com/phreak_ua и посмотрите на дату создания сайта. А лишь 3 дня назад Харьковсий метрополитен сменил алгоритм кодирования. 2 месяца все грамотные люди ездили на халяву. На метро никаких эмулей, сесть можно (условно). А вот тов. из Болгарии xakep_bg@xakep.com чего-то там считать не может. В Софии эмулятор стоил нашим 100$ и звонили земляки прямо с уличного таксофона на родину. В БулФон-овских картах используют лишь 16 байт без аутентификации чипа, если б я имел возможность снять трафик, то своим на халяву б сделал эмуль вечный 🙂 Тов.3st st3791305@yandex.ru «ищет программатор для таких (и похожих) карт (soft)» А сам написать не может. Крут однако:) Это чего — реликт I2C. Господа, нечего программировать!!! Счётчик разве что уменьшать, в документации на SLE (полной) указано, что после смены режима карты на «рабочий», счётчик уже не восстановить. Насчёт посветить ультрафиолетом. В далёком детстве пытались на I2Cшных. Всё байты 0xFF стали, и чего дальше — карта заблокирована. Не думайте, что в СИМЕНСе или ТОМСОНе дурачки сидят. Поверьте, эмуль пишется под конкретный таксофон, а не под стандарт передачи данных (ISO7816-2). У каждого таксофона (прошивки) свой вывих и универсальный эмуль для всех тяжко сделать. Смотришь на трафик и пишешь, пробуешь, не работает и т.д. Лана, пойду пивка ещё возьму, удачи вам. Oopser Jesus mailto:phreak_ua@yahoo.com

Очень интересно! Я пытался с этой чёртовой карты считывать, но предполагал, что у неё банальный I2C…. Кстати, в «Буром Медведе» валяются считыватели для телеф. карт!!! Очень удобно — не надо в процессе отладки удерживать провода на контактах!

Господин Reanimator, надеюсь вы предложите эмулятор не на -discrete elements-, а на однокристалке? Сам же я уже месяц юзаю собственный, собранный на F84 (прошивка для карт 3 поколения), помогло мне это собрать 2 вещи: book about F84 (Ormix) и номер журнала Phrack Magazine 48-10 & 48-11 (для карт 2 поколения). Да, кстати, как вы собираетесь обойти металлодетектор установленный в каждом карточном таксофоне (100%-я информация). Ответ в Phrack’e.

Что-то слабо верится, что в ISO 7816 так были записаны данные. В частности, в ST1305 всего 192 бита памяти.

тут есть один вопросик. Не так давно в Ростове н/Д поставили новые таксофоны, называется «таксофон универсальный телекарт — 101» такой железный, синенький. Так вот если во время того как на нем высвечивается надпись после поднятия трубки «Пожалуйста подождите» нажать 9 и после запроса о вводе кода ввести 999 он входит в тестовый режим.

Добавить комментарий

Ваш адрес email не будет опубликован.