Эмулятор чиповых карт и замена FIME SmartSpy
сколько всего за годы то накопилось. Даже не все в кадр влезло.
Разбирая различный «мусор» из тумбочки на на работе выгреб 2 кг чиповых карт. В том числе и перехватчик протокола чиповых карт «FIME SmartSpy».
Кто разрабатывает/тестирует банковские карты и POS/ATM, тот знает что это. Когда то, функциональность его меня не устроила. Для тестов/проверки уязвимостей нужно было еще вклиниваться/вносить изменения в ATR и поток APDU команд и ответов на них. Для этого сделал функциональный аналог SmartSpy на базе SM32F103 с поддержкой T0/T1. Сделал, по большей части, конечно из за «могу ли я такое сделать», ну из за того, что очень плотно занимался разработкой приложений для карт и пр.
После 2022 г получить что то от FIME (включая и SmartSpy) в России не возможно. Так что, выкладываю исходные коды на Github. Исходники без скриптов сборки. Не охота было подгонять древние скрипты под современные инструменты. Я уже давно не занимаюсь непосредственно чиповыми картами, но стало жаль, что работа пропадет.
Специально для «я у мамки хакер» и «ответственных работников МВД» — защита платежей по картам НЕ полагается на то, что протокол можно прослушать/подменить. Все «уязвимости» — это ошибки разработчиков ПО POS/ATM и вылавливаются махом на этапе сертификации ПО специальными инструментами. Но сертификация (и ее попытки) не дешева (а сейчас после 2022 и не тривиальна) и для поиска проблем, до сертификации, инструменты, типа этого, незаменимы.
Общая схема работы перехватчика проста.
STM32F103 работает по двум каналам:
STM32F103 обращается в RS232 за данным для APDU, ATR
Программа (java) получает запросы через RS-232 и либо формирует самостоятельно ответ (эмуляция) либо транслирует запрос в PC/SC ридер карте. Соответственно, весь трафик выводится в stdout в текстовом виде.
Из эпохи динозавров
Нашел в куче всего самые первые карты Gemplus c JavaCard. Еще с усеченной криптографией. Было время когда правительства боялись и даже DES был запрещен к «экспорту».
Попытка Microsoft сделать свою OS для чиповых карт закончилась едва начавшись. Победила JavaCard. Под впечатлением этой попытки, сделал приличное надгробие для этого проекта Microsoft (когда то давно…).