Программирование таксофонных карт. — HackZona.Ru

Программирование таксофонных карт.

Программирование таксофонных карт.

Тип статьи:
Со старой ХакЗоны.
Источник:
Открытая информация и коммерческие секреты

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


Попробуем рассказать в популярной форме «о действительно работающем и проверенном» способе обмана таксофонов в Санкт-Петербурге, опуская ключевые технические детали, чтобы не вступать в конфликт с законом.

В конце 20 столетия компьютерная техника, цифровая электроника и интегральная оптика прочно вошли в обиход, как в свое время электрическая лампочка, автомобиль или радио. Соответственно, растет количество людей, для которых общение с техникой не ограничивается нажиманием кнопок. Они хотят знать и уметь все, часто затрачивая на добывание этих знаний все свободное время и все имеющиеся деньги в ущерб личной жизни и здоровью. Обычно такие люди придерживаются «принципа нераспространения», то есть делятся полученной информацией только в собственном узком кругу, поскольку только специалист достаточно высокой квалификации понимает истинную цену подобной информации и осознает ответственность за ее использование в своих целях. Человек, обладающий знаниями и опытом, чтобы бесплатно звонить по телефону или проходить в метро, просто не будет этого делать с подобными знаниями люди имеют престижную работу с оплатой в несколько сотен долларов. Кроме того, воровать нехорошо, независимо от того, Российская это компания или зарубежная. Там тоже работают люди и они должны получать зарплату за свою работу.

Эта статья не будет исключением из правила. Тот, кто всерьез занимается подобными вещами, не найдет для себя ничего интересного. Любители «халявы» также не обнаружат здесь подробных инструкций, как звонить по телефону бесплатно и безнаказанно. Для тех, кто все-таки попытается, хочется напомнить статью 187 УК РФ «Изготовление или сбыт поддельных кредитных либо расчетных карт и иных платежных документов».

Особо отметим, что приведенная в этой статье информация не может являться коммерческой тайной, как она определяется в статье 139 ГК РФ, и ее разглашение не является ущемлением чьих-либо прав, т.к. это всего лишь перевод на русский язык и выжимка из открытых международных стандартов, а также описание конкретных принципов работы отдельно взятой таксофонной карты. Для получения этой информации никаких внутренних служебных документов компании «Санкт-Петербургские Таксофоны» (http://www.spt.ru) не использовалось.

В чем суть проблемы?

Не так давно на российского потребителя обрушился целый поток новых платежных средств: таксофонные карты, магнитные карты метро, банковские карты, и т.д. Наверное, каждый задавался вопросом, как же устроена и как работает таксофонная карта, и можно ли ее обмануть. Ответ на второй вопрос умолчим, а вот на первый попробуем ответить в доступной и популярной форме. Поскольку при желании наиболее общую информацию можно найти в Интернете, то разговор пойдет конкретно про таксофонные карты компании «Санкт-Петербургские таксофоны» (СПТ). Для других карт приведенная информация может не соответствовать действительности. Если вы захотите разобраться в работе таксофонных карточек в своем городе, то желательно сначала прочитать документ «What you need to know about electronics telecards», самый свежий вариант которого можно найти по ссылке perso.wanadoo.fr/telecard/download/phonecards.txt. Там описаны наиболее часто встречающиеся в мире карточки. Первая версия этого документа появилась еще в 1993 году. Приведенная в статье информация базируется в основном на одной из последних его версий — 2.02. Таксофонная карта соответствует международному стандарту ISO 7816 в части 1 и 2. Кристалл на карте представляет собой электрически программируемое ПЗУ с последовательным побитным выводом информации, изготовленное по технологии NMOS. В этом ПЗУ используется 128 бит. Чтобы перепрограммировать карту, нужно стереть информацию из ПЗУ, но чип защищен от ультрафиолетового облучения специальной смолой. Даже если вам удастся стереть чип, то нужно будет перепрограммировать специальную область производителя первые 64 бита, а она защищена от записи плавким предохранителем, который пережигается на фабрике при производстве чипа. Применяются и другие технологии производства чипов. Иногда ходят разные шутки о том, что, якобы, достаточно положить карточку на час в морозильную камеру или замазать пластилином один из контактов. К сожалению, в реальности не все так просто. Если не будет контакта с карточкой, то таксофон просто сообщит об ошибке и не примет карту. Карточки, которые применяются в Санкт-Петербурге, являются одноразовыми и после окончания кредита годятся лишь для коллекционеров. Подобные карточки изготавливают такие известные компании как Schlumberger и Gemplus.

Основной способ обмана таксофонов изготовление эмуляторов, т.е. устройств, эмулирующих работу настоящей карты. Это довольно легко сделать на современных однокристальных микроЭВМ, которые обычно представляют собой маленькую микросхему. Внутри корпуса подобной схемы расположен микропроцессор, постоянная память, в которой хранится программа, оперативная память, тактовый генератор, несколько портов ввода-вывода для обмена информацией с внешними схемами и другие устройства. Таким образом, мы имеем целый компьютер размером с монету. Написав программу для такого миниатюрного компьютера, можно заставить его работать вместо таксофонной карты. Достаточно удобными для такой цели являются микросхемы PIC 16F84 производства компании Microchip. Полное техническое описание их работы и методов программирования можно найти в Интернет на сайте www.microchip.com. Эмулятор представляет собой печатную плату по размерам таксофонной карты, на которой находится схема PIC 16F84, кварцевый резонатор, несколько конденсаторов и разведена контактная площадка в соответствии с площадкой настоящей карты.

Основной способ защиты таксофонов от таких эмуляторов измерение меж-электродных сопротивлений, емкостей и сравнение их с номинальными, что позволяет таксофону отличить эмулятор от настоящей карты. В некоторых таксофонах устанавливают специальные металлодетекторы, которые обнаруживают посторонние предметы, вставляемые в щель таксофона, и способны подать сигнал на пульт оператору. В Санкт-Петербурге используются таксофоны GNT-807 производства датской фирмы Ascom Nordic A/S. Эти таксофоны обладают способностью запоминать, какие карточки в них вставляют, когда и куда с них звонят. Затем накопленная информация периодически передается на некий центральный компьютер.

Немного помечтаем, и представим, что нам удалось сделать точную фальшивую копию таксофонной карты, на которой 100 «единиц». Все дело в том, что каждая карта имеет уникальный серийный номер, который на ней написан. Мы звоним по настоящей карте и тратим все свои «единицы». Центральный компьютер запоминает, что на карте с данным номером осталось 0 «единиц». Затем мы вставляем фальшивую карту, на которой по прежнему 100 «единиц» и снова звоним. Даже, если таксофон не распознает подделку и позволит позвонить по этой карте, то он уже после звонка передаст информацию в центральный компьютер. Вот тут-то и обнаружится, что на карте с данным номером должен быть совсем не такой остаток. Значит карта с этим номером фальшивая. Центральный компьютер может разослать на все таксофоны команду не принимать больше к оплате карточку с данным номером. При этом можно будет найти информацию о том, по каким телефонам звонили с фальшивой картой и с каких таксофонов. Это позволит службе безопасности компании легко выйти на незадачливого любителя «халявы».

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

Расположение и назначение контактов на карте

Все сигналы соответствуют стандартам, принятым в транзисторно-транзисторной логике (ТТЛ). Здесь напряжение 5В соответствует логической «1», а отсутствие напряжения логическому «0». Подобная логика используется и в компьютерах IBM PC, что дает возможность довольно легко вводить информацию с карты в компьютер. Обратите внимание, что центральная пластинка соединена с землей (общей шиной). Встречаются карты, на которых имеется только 6 контактных площадок. В таких картах просто отсутствуют площадки 4 и 8, которые все равно не используются.

Протоколы обмена информацией с картой

Чтение информации с карты
Внутри карточки находится счетчик адреса, который хранит в себе адрес ячейки памяти карты, которая считывается в данный момент. Он имеет разрядность 9 бит, то есть хранит адреса от 0 до 511. После 511 значение счетчика адреса опять обращается в 0. То есть, после чтения каждых 512 бит выдача информации циклически повторяется. Счетчик может быть только увеличен. Если вы хотите считать бит с адресом меньше текущего, то счетчик нужно сбросить в 0, а затем увеличить до необходимого значения.


Назначение полей в памяти карты Теперь мы и подошли к самому интересному месту назначению каждого бита, записанного на карте. Естественно, что на картах других городов это назначение будет другим, но мы говорим о питерских карточках. На карточке используются только 16 байт (128 бит). Все остальные равны 0xFF.

1. Первые 4 байта идентификатор. Вероятнее всего, он определяет производителя чипа. Пока обнаружено 4 типа карт:
E9, 30, FF, 01 8 серебристых контактов.
E8, 20, FF, 01 8 золотистых контактов. Круглая центральная площадка.
E8, 2B, FF, 01 6 золотистых контактов. Круглая центральная площадка.
E8, 30, FF, 01 6 золотистых контактов. Многоугольная центральная площадка.
2. Следующие 4 байта серийный номер карты. Расположив биты в байтах в обратном порядке, а затем и сами байты, получим 32-разрядное целое число без знака. К примеру, байты F7, 3F, 59, DC с обратным порядком бит выглядят как EF, FC, 9A, 3B. Получим номер карты 0x3B9AFCEF или 1000013039 в десятичном виде. Нетрудно заметить, что номер, напечатанный на карте, всегда состоит из 10 цифр. Это поле изменить нельзя.
3. Следующие 5 байт количество единиц, оставшихся на карточке. Формат хранения очень интересный: используется количество единичных битов в байте, начиная с младшего. Значение байта 07 соответствует 3 единицам, значение 1F пяти, а 7F семи единицам. Максимальное количество единиц, хранящихся в байте семь. Старший разряд имеет специальное назначение и должен быть нулем. Соответственно используется восьмеричная система счисления. Таким образом, байты 00, 01, 7F, 0F, 3F соответствуют 01746 в восьмеричной системе или 998 единиц в десятичной системе. Максимальное количество единиц может выражаться числом 77777 в восьмеричной или 32767 в десятичной системе. Это поле можно изменить, но только таким образом, чтобы уменьшить остаток на карте. Увеличить остаток невозможно.
4. Следующий байт всегда равен FF. Похоже, он не используется. Его изменить нельзя.
5. Два последних байта цифровой сертификат. Он представляет собой основу защиты таксофонных карт от подделки. Сертификат связан с номером карты и вычисляется на основе специальных алгоритмов. Эти алгоритмы являются коммерческой тайной компании и охраняются законом. Таксофон проверяет соответствие цифрового сертификата номеру карты. Как уже говорилось, если есть 2 карты с одним номером, то они будут быстро обнаружены. Знание алгоритма вычисления сертификата дает возможность генерировать в эмуляторе любые случайные номера карт и вычислять для них правильные сертификаты. Это поле может быть обнулено. То есть все «1» можно превратить в «0». Однако, обратного сделать нельзя. Обычно по окончании кредита на карте таксофоны обнуляют это поле, чтобы не дать возможности хакеру собрать много использованных карт и найти алгоритм путем анализа соответствия между номером и сертификатом. Питерские таксофоны это поле не обнуляют.
Обнаружилось, что срок годности не записан на карте. По всей видимости, он как-то связан с номером карты. Возможно, каждому сроку годности соответствует определенный диапазон номеров.


Примеры дампов памяти карт
1. Вот карта на 1000 единиц. Осталось 998. Номер 1000013039. Годна до 31.12.99
E9, 30, FF, 01, F7, 3F, 59, DC
00, 01, 7F, 0F, 3F, FF, 68, 6B
2. Потом по этой карте позвонили. Осталось 6 единиц.
E9, 30, FF, 01, F7, 3F, 59, DC
00, 00, 00, 00, 3F, FF, 68, 6B
3. Наконец, она закончилась.
E9, 30, FF, 01, F7, 3F, 59, DC
00, 00, 00, 00, 00, FF, 68, 6B

Запись информации на карту

Внутренняя схема карт разработана так, что счетчик «единиц» можно только уменьшить. Если бы его можно было легко увеличить, карты не были бы одноразовыми, а эта информация уже давно была бы широко известна, так как таксофонные карты используют в Европе уже не первый десяток лет. Как было указано, счетчик единиц занимает 40 бит. Каждый бит может находиться в «стертом» (erased) состоянии и читаться как «1», или в «записанном» (programmed) состоянии и читаться как «0». Существует два типа операций записи на карту: Write и WriteCarry.

Команда Write используется для записи «0» в нужный разряд. Операция записи WriteCarry записывает «0» в разряд с одновременным стиранием (установкой в «1») всех восьми разрядов в младшем байте. То есть, производит запись с переносом.

Принцип работы таксофона

Как мы уже знаем, количество оставшихся «единиц» хранится на карте в восьмеричной системе. Количество единичных бит в байте умножается на соответствующую степень восьмерки. Посмотрим, как таксофон отнимает «единицы» с карточки: Допустим, сначала на карте было 962 «единицы». Выполнив операцию Write над битом с адресом 102 мы получим «0» по этому адресу. В результате остаток составит 961 «единицу» (рис. 2а). Выполнив операцию Write над битом 103, получим остаток в 960 «единиц» (рис. 2б). Видно, что в младших разрядах больше ничего не осталось. Теперь необходимо уменьшить старший разряд, но восстановить при этом младшие разряды. Аналогично школьников учат вычитанию в столбик. К примеру, для вычитания десятичного числа 31 из 122 необходимо сначала сделать перенос из разряда сотен в разряд десятков. Таксофону для дальнейшего уменьшения остатка на карте необходимо выполнить операцию WriteCarry над битом 81, затем над битом 88, потом операцию Write над битом 96. Получим остаток в 959 «единиц» (рис. 2в).

Обратите внимание, что для этого надо выполнить довольно сложную последовательность команд. Если пользователь выдернет карточку в процессе исполнения этой последовательности, то на карте останется некорректная запись. То есть, не все старшие разряды в байтах будут обнулены. Однако, когда карта будет вставлена в другой таксофон, он обнаружит, что операция не завершена, и сможет успешно закончить работу предыдущего таксофона. Допустим, после операции WriteCarry над битом 81 пользователь выдернул карту. Потом он вставил ее в другой таксофон. Если бит 88 равен «1», то этот таксофон завершит всю последовательность операций. Если бы такой схемы не использовалось, и бит 88 был равен «0», то следующий таксофон просто решил бы, что на карте 952 «единицы». То есть пользователь потерял бы «единицы», не дав завершить операцию. Но, поскольку «клиент всегда прав», даже если он хочет забрать свою карточку в самый неподходящий момент, и были использованы старшие разряды в каждом байте для «защиты от выдергивания». Их называют флагами антитиринга (anti tearing flags). Видно, что не существует способа увеличить количество единиц на карте путем комбинации этих двух операций.

Приступим к практическому изучению работы карт

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

Аппаратные средства

Аппаратные средства представляют собой ответную часть разъема параллельного порта, несколько кусков монтажного провода и считывающее устройство, которое может быть просто куском текстолита с отверстиями, в которые вставлены штырьки. Правда, в этом случае карточку надо будет прижимать руками. Соединим контакты параллельного порта с контактами карточки в соответствии с приведенной таблицей:
параллельный порт карточка
2: D0 (выходной) 2: Reset
3: D1 (выходной) 3: Clk
11: Busy (входной) 7: I/O
25: Gnd 5: Gnd
Здесь не указан контакт «1» карточки питание +5В. Его можно взять, к примеру, с разъема клавиатуры, но проще подключить батарейку на 4.5 или 5 Вольт выводом "+" к контакту «1» карточки и выводом "-" к контакту «5» карточки.

Программные средства

Полный листинг программы, диаграммы сигналов и другие технические детали приведены на сайте private.peterlink.ru/dimik/telecard/. Программа позволяет как читать карты, так и выполнять операции Write и WriteCarry над любым заданным битом, что дает возможность экспериментировать. Вы сможете снимать «единицы» со своей карточки, если не жалко, сможете обнулить поле цифрового сертификата. Одна убедительная просьба — никогда больше не пользуйтесь карточкой, если вы произвели какие-либо изменения в ее памяти. И помните, без глубоких знаний пытаться «взломать» таксофонную карту — пустая затея. А специалисты, которые могут это сделать, подобными глупостями не занимаются.
Нравится
Не нравится

3 комментария

18:30
Фигня!!!!!!(полная)
;))
03:39
Отстой полнейший!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
19:01
Чушь полная, попробовал - ни фига!!!!!