Фрикинг таксофонных карточек
Не так давно на Российского потребителя обрушился целый поток новых платежных средств: таксофонные карты, магнитные карты метро, банковские карты. Коснемся пока только таксофонных карт. Наверное, каждый задавался вопросом, как же устроена и как работает таксофонная карта, и можно ли ее обмануть. Ответ на второй вопрос пока умолчим, а вот на первый попробуем ответить в доступной и популярной форме. Разговор пойдет конкретно про таксофонные карты компании «Санкт-Петербургские таксофоны». Для других карт приведенная информация может не соответствовать действительности.
Таксофонная карта соответствует международному стандарту ISO 7816 в части 1 и 2.
ISO 8716-1:1987 Карточки идентификационные.
Карточки на интегральных схемах с контактами.
Часть 1. Физические характеристики.
СТК 1 код В 4 с. изд.1
ISO 8716-2:1988 Карточки идентификационные.
Карточки на интегральных схемах с контактами.
Часть 2. Размеры и расположение контактов.
СТК 1 код D 7 с. изд.1
Кристалл на карте представляет собой электрически программируемое ПЗУ с последовательным побитным выводом информации, изготовленное по технологии NMOS. В этом ПЗУ используется 128 бит. Для того, чтобы перепрограммировать карту, нужно стереть информацию из ПЗУ, но чип защищен от ультрафиолетового облучения специальной смолой. Даже если вам удастся стереть чип, то нужно будет перепрограммировать специальную область производителя — первые 64 бита, а она защищена от записи плавким предохранителем, который пережигается на фабрике при производстве чипа. Основной способ обмана таксофонов — изготовление эмуляторов, то есть устройств", эмулирующих работу настоящей карты. Это довольно легко сделать на современных однокристальных микроЭВМ. Основной способ защиты таксофонов от таких эмуляторов — измерение межэлектродных сопротивлений, емкостей и сравнение их с номинальными, что позволяет таксофону отличить эмулятор от настоящей карты.
Внутри карточки находится счетчик адреса разрядностью 9 бит. То есть после чтения каждых 512 бит все начинается сначала. Счетчик может быть только увеличен. В случае, если вы хотите считать бит с адресом меньше текущего, то счетчик нужно сбросить в 0, а затем увеличить до необходимого значения. Операция сброса выглядит так: Надо установить высокий уровень сигнала Reset (2 контакт карты), а затем установить и сбросить сигнал Clk. После сброса сигнала Reset на выходе (7 контакт карты) будет доступен бит с адресом 0.
Теперь нужно подавать тактовые импульсы на вход Clk (3 контакт карты). По фронту импульса происходит увеличение на единицу внутреннего счетчика адреса. По спаду тактового импульса следующий бит данных появляется на выходе. Обычно удобнее представлять информацию в виде байтов. Для этого каждые 8 считанных бит группируют в байт, считая, что первым считывается наименее значащий бит. В итоге, последовательно считывая 1,0,0,1,0,1,1,1, получим байт ОхЕ9.
Чтение через параллельный порт компьютера
Поскольку все сигналы соответствуют уровню ТТЛ, то логично использовать для чтения информации обыкновенный принтерный порт. Не думаю, что надо приводить здесь полное техническое описание работы параллельного порта, назначение контактов и описание портов ввода-вывода — это все можно найти в специальной технической литературе.
Аппаратные средства представляют собой ответную часть разъема параллельного порта, кусок монтажного провода и считывающее устройство, которое может представлять собой обыкновенный кусок текстолита с отверстиями, в которые вставлены штырьки. Правда, в этом случае карточку надо будет прижимать руками.
Используем портЬРТІ. Запись в принтерный порт осуществляется через порт 0x378. Записанный байт появляется на выходных контактах. Мы используем бит 0 для сигнала Reset и бит 1 для сигнала Clk. Чтение выполняется через порт 0x379. В самом старшем бите появится инвертированное значение с входного контакта 11 (Busy).
Теперь мы и подошли к самому интересному месту — назначению каждого бита, записанного на карте. Естественно, что на картах других городов это назначение будет другим, но мы, как обещали, говорим о питерских карточках. На карточке используются только 16 байт. Всеосталь - ные равны OxFF. В процессе исследований было проанализировано около 300 карточек.
• Эта карта на 50 единиц закончилась. Номер0050415503. Годна до 30.09.98
Е9, 30, FF, 01, F1, Е2, 80, СО 00, 00, 00, 00, 00, FF, 18, ЕА
• Эта карта на 400 единиц также пуста. Номер 0400155921. Годна до 30.09.98
Е9, 30,- FF, 01, 88, А7, 9В, Е8 00, 00, 00, 00, 00, FF, D9, 79
• Вот карта на 1000 единиц. Осталось 998. Номер 1000013039. Годна до 31.12.99
Е9, 30, FF, 01, F7, 3F, 59, DC 00, 01, 7F, OF, 3F, FF, 68, 6В
• Потом я позвонил по этой карте. Осталось 6 единиц. Е9, 30, FF, 01, F7, 3F, 59, DC
00, 00, 00, 00, 3F, FF, 68, 6В
• Наконец, она закончилась.
Е9, 30, FF, 01, F7, 3F, 59, ОС 00, 00, 00, 00, 00, FF, 68, 6В
Ф Первые 4 байта — какой-то идентификатор. На всех картах Е9, 30, FF, 01.
• Следующие 4 байта — серийный номер карты. Расположив биты в байтах в обратном порядке, а затем и сами байты, получим 32 разрядное целое без знака. К примеру, байты F7, 3F, 59, DC с обратным порядком бит выглядят как EF, FC, 9А, 3В. Получим номер карты Ox3B9AFCEF или 1000013039 в десятичном виде. Нетрудно заметить, что номер, напечатанный на карте, всегда состоит из 10 цифр, а первые 4 цифры — емкость карточки.
• Следующие 5 байт — количество единиц, оставшихся на карточке. Формат хранения очень интересный: используется количество единичных битов в байте, начиная с младшего. Соответственно значение байта 07 соответствует 3 единицам, значение 1F — пяти, a 7F — семи единицам. Максимальное количество единиц, хранящихся в байте — семь. Соответственно используется восьмеричная система
Счисления. В итоге, байты 00, 01, 7F, OF, 3F соответствуют 01 746 в восьмеричной системе или 998 единиц в десятичной системе. Максимальное количество единиц может выражаться числом 77777 в восьмеричной или 32767 в десятичной системе.
• Следующий байт всегда равен FF. Похоже, он не используется.
Ф Два последних байта, по-видимому, выражают CRC или
Другой контрольный код для первых 8 постоянных байт, так как при расходовании единиц они не меняются, но на каждой карточке они свои. Пока их назначение не ясно.
Обнаружилось, что срок годности не записан на карте. По всей видимости, он как-то связан с номером карты. Возможно, каждому сроку годности соответствуют определенный диапазон номеров.
Как уже говорилось, из 10 цифр номера первые 4 выражают емкость карты. Оставшиеся 6 не идентифицируют карту однозначно, так как уже выпущено более миллиона карт. Всего при подобной системе нумерации может существовать 6 миллионов карт:
На 25 единиц с номерами от 0025000000 до 0025999999
На 50 единиц с номерами от 0050000000 до 0050999999
На 100 единиц с номерами от 0100000000 до 0100999999
На 200 единиц с номерами от 0200000000 до 0200999999
На 400 единиц с номерами от 0400000000 до 0400999999
На 1000 единиц с номерами от 1000000000 до 1000999999
Устройство для чтения/записи магнитных карточек
Для изготовления устройства, которое, разумеется, можно применять не только для чтения, но и записи магнитных карточек, удобно использовать готовый лентопротяжный механизм магнитофона или плейера. Карточка при этом протягивается также как и лента, междутонвалом и тонроликом. Но надо иметь в виду — металлический тонвал проскальзывает по пластиковой поверхности телефонной карточки. Автор одел на тонвал тонкую ПВХ трубочку от изоляции импортного экранированного провода, предварительно окунув ее в ацетон. После высыхания ацетона можно включить моторчик ЛПМ и подшлифовать внешнюю поверхность трубки мелкой паждачкой. Подготовка приводного вала — очень важный момент! Именно от вала в основном зависит равномерность скорости подачи карточки. Впрочем, остальные узлы тоже требуют аккуратности. Несмотря на это, устройство полностью можно изготовить за пару выходных дней.
После подготовки вала нужно изготовить направляющий тракт. Его конструкция зависит от конкретного ЛПМ. В качестве исходного материала можно использовать двухсторонний фольгированный стеклотекстолит. Его легко обрабатывать и соединять детали пайкой, без дополнительных крепежных деталей. В конструкции используется пара светодиод-фотодиод для регистрации моментов начала и окончания прохождения карточки через ЛПМ. Необходимо учитывать, что запись начинается примерно в 3 мм от края карточки и располагать головку так, чтобы тонвал успел захватить и начать протаскивать карточку до того, как начало записи окажется в рабочей зоне головки. Примерно в этот же момент должен срабатывать и огітодатчик. У меня карточка после прохождения ЛПМ по инерции проскакивает дальше и открывает оптодатчик снова. Но лучше поставить второй оптодатчик на окончание карточки, чуть правее оси магнитного зазора головки.
Особую сложность представляет только узел крепления головки, так как надо прижимать головку к карточке, а не наоборот. Площадка с прикрепленной к ней головкой равномерно прижимается четырьмя пружинками. Прижимное усилие должно быть небольшим, так как магнитный слой намагничен очень сильно. Сохранена возможность регулировки азимута головки. Провода, идущие от головки — тонкие неэкранирован - ные, не должны мешать смещению площадки с головкой. Они подведены к контактным площадкам недалеко от головки. Далее идут экранированные провода. Моторчик питается непосредственно от 5-вольтового напряжения питания всей схемы. Моторчик от плейера обеспечивает при этом необходимую скорость движения карточки. Помехи легко шунтируются керамическим конденсатором, расположенным на выводах Моторчика.