Давно планировал написать что-то подобное на Хабре, вынашивал идеи для всяких статей на очень умные темы.
Но вместо этого я сейчас опишу один автобиографический эпизод, которым технически я очень горжусь, но о котором глубоко сожалею морально.
Не буду скрывать имена и подробности, потому что, во-первых, дело произошло очень давно, а во-вторых, закончилось вполне логично и не думаю, что кто-то из участников тех событий до сих пор относится к ним как к чему-то иному, как к поучительной истории.
из своей боевой юности.
Кроме того, технические подробности давно устарели и вряд ли кому-то пригодятся (да и, собственно, ни исходный код, ни готовые продукты не сохранились, по причинам, описанным ниже).
Итак, это было в 1997 году, когда я учился на втором курсе петербургской «Корабелки» (СПбГМТУ).
В Петербург я приехал в сознательном 21 году из Калининградской области, где до этого прожил всю жизнь.
Я понаехал уже с сильным IT-бэкграундом, потому что.
Я фанатично программирую лет с 13 (чтобы вы имели представление о масштабах фанатизма - я написал две игры и графическую редактор для УКСК непосредственно в восьмеричных машинных кодах, используя только отладчик процессора ).
Я учился в одной группе с человеком, который столь же фанатично интересовался электроникой, абсолютным мастером паяльника Кириллом.
Как-то так получилось, что точкой совместного приложения наших усилий стал реверс-инжиниринг платежной системы петербургских таксофонов.
Ну ты понимаешь, родители далеко, надо позвонить, денег нет, но есть свободное время и две дурные головы.
В Питере тогда компания занималась таксофонами (и занимается до сих пор, но по понятным причинам не очень успешно) ППП — Таксофоны Санкт-Петербурга.
По всему городу установлены вполне современные по тем меркам устройства.
Номер модели сразу не нашел, выглядели они вот так (картинка тоже была не самого лучшего качества):
Принимают ли эти таксофоны стандартные чиповые карты? ИСО-7816-2 емкостью от 25 до 1000 единиц (одна единица — это минута местного разговора или несколько секунд междугороднего).
Собрав всю имевшуюся на тот момент информацию в ФИДО и скудном Интернете о типах и протоколах карт, мы приступили к работе.
Довольно скоро мы собрали ридер, подключаемый к LPT-порту компьютера.
Также была написана программа, считывающая содержимое карт. Карта представляет собой небольшую память, одна часть которой содержит информацию об остальных блоках и может быть изменена (только в меньшую сторону), вторая часть содержит сервисную информацию: производитель, серийный номер, что-то еще.
Накопив достаточный объем знаний о протоколе обмена таксофона на карту и собрав небольшую коллекцию дампов карт, мы начали реализовывать программу-максимум, то есть создавать эмулятор карты, который вел бы себя как обычная карта, но область единиц будет доступна для записи любых чисел.
В качестве мозга эмулятора был выбран микроконтроллер.
PIC16F84a , его программа была написана на языке C в среде Borland C 3.0. Я занимался программной частью, то есть писал программу для микроконтроллера и утилиты для компьютера, Кирилл был повелителем микроконтроллера и монстром паяльника.
Процесс сборки и отладки первой версии эмулятора был настоящим адом.
В аппаратном плане первая версия была весьма неказистой и представляла собой плату с выфрезерованными оригинальными мозгами, из которых торчал жгут проводов, на котором висела плата с контроллером и жгутом.
К синей плате была прикручена квадратная батарейка, разумеется, изолентой.
Причем из-за отсутствия полной информации мы многое делали наугад (тайминги протокола приходилось подбирать методом проб и ошибок), но и представьте себе процесс проверки следующего билда прошивки: «итак, мы поменяли цифру 10 на 12 вот, пройдемся пару километров по морозу до ближайшего таксофона, подождем, пока вокруг не останется любопытных граждан, подключим аппарат к таксофону, в сотый раз увидим надпись «Ошибка 8», тихо ругаемся и возвращайся обратно».
А теперь представьте нашу радость, когда эмулятор в сто первый раз частично сработал и таксофон показал долгожданные «25 единиц».
Этот этап занял у нас около полугода.
Далее последовали еще полгода совершенствования железа, были выпущены две промежуточные версии эмулятора и бесчисленное количество сборок прошивок.
Финальная версия железа показалась мне тогда просто верхом инженерной мысли: мастер Кирилл смог избавиться от внешнего питания (для этого мне также пришлось радикально оптимизировать прошивку, так как предыдущие версии не успевали запускаться, питание был поставлен слишком незадолго до начала обмена данными) и тоже перешёл с DIP-пакетов на SOIC. В результате эмулятор выглядел точно так же, как обычная карта, без торчащих из таксофона проводов.
Корпус микроконтроллера был спрятан в небольшом утолщении, залитом эпоксидной смолой, в том месте, где картридер таксофона имел выемку для пальцев.
К сожалению, фотографировать в то время было нечего, поэтому шедевр электроники потерян для потомков.
При каждом включении эмулятора он вел себя как чистая карта того номинала, который был помещен в него при прошивке.
Здесь мы впервые столкнулись с техническими мерами безопасности, встроенными в программу таксофона.
Меры, надо сказать, были очень слабыми.
Дамп карты, вставленный в эмулятор, перестал работать через пару дней после начала использования.
За эти пару дней мне удалось несколько раз обнулить карту (само собой разумеется, все время, с того момента, как я получил первую полностью рабочую версию эмулятора, я использовал ее для звонков домой).
Точных деталей реализации я не знаю, но выглядело это так, будто центр анализировал трафик, добавляя номер карты в какой-то черный список, который затем рассылался по всем таксофонам и сохранялся там локально.
Более того, задержка в два-три дня намекала, что это делается вручную.
Вторая мера безопасности заключалась в том, что неперезаписываемая часть памяти карты содержала код, сгенерированный на основе серийного номера и исходного номинала карты (возможно, чего-то еще).
Алгоритм генерации этого кода остается для нас загадкой.
Этот код не позволял нам добиться полного совершенства и каждый раз на лету генерировать в микроконтроллере свежие дампы; пришлось прошивать дампы с реальных б/у карт. Тогда мы надеялись, что, собрав достаточное количество дампов памяти карт, сможем разобраться в алгоритме хеширования.
Но, как я уже писал, этим надеждам не суждено было сбыться.
В поисках доноров мы случайно встретили «Коллекционера» (открытки имели очень разный дизайн, постоянно выпускались разные серии, посвященные праздникам и событиям, так что нашлись даже люди, собиравшие использованные открытки).
Мы просто увидели на трамвайной остановке парня со стопкой карточек в руках, разговорились и попросились в гости к читателю.
Таким образом мы получили около сотни свежих дампов карт. Это также стало началом конца истории, поскольку «Коллекционер» оказался связан со службой безопасности таксофонной компании.
Он познакомил нас с неким гражданином, который якобы был готов за немаленькую сотню долларов приобрести чудо-прибор для студентов в те кризисные времена.
Мы забыли о всякой конспирации и, польщенные легкой наживой, встретились с покупателем, показали ему безупречную работу эмулятора.
Техническая часть этой истории закончилась фразой «поехали, полиция», после чего совсем другое , началась вполне предсказуемая история, о которой я вам расскажу очень кратко, без подробностей.
Итак, нас поймали, по питерскому телевидению показали захват века, в Интернете еще хранится парочка новости о нас .
Был суд, мы получили два года условно, чего оказалось достаточно, чтобы навсегда сделать из меня сугубо положительного айтишника, чего я всем и советую.
Теги: #фрикинг #таксофон #телефонные карты #информационная безопасность
-
Андорра
19 Oct, 24 -
Как Вести Блог, Зарабатывающий Деньги
19 Oct, 24 -
Кофе`н`код. Первый Блин.
19 Oct, 24 -
Ddos Уходит В Оффлайн
19 Oct, 24 -
Опубликован Роман, Состоящий Из Смс.
19 Oct, 24