Путешествуя по
рунету в поисках любой информации об
эмуляторах смарт карт синхронного режима
стандарта ISO7816 заметил интересную
особенность: информации почти нет, а то что
можно найти списано с одного источника (Phrack
Magazine
48 выпуск) в разных вариациях. И ни
слова я не нашел об авторизации смарт карт в
таксофоне. На самом деле, любой кто
подумывал о создании эмулятора карты
должен был задуматься об этом вопросе.
Давайте рассмотрим алгоритм работы на
примере таксофона МГТС. Вставим пустую
карту. Таксофон пишет, что «Кредит
исчерпан». Каким образом происходит
чтение карты? Вот пример работы таксофона:

Reset
11101000 00110000 11001111 00001001 
00000000 11001010 01001010 10000110 
00000000 00000000 00000000 00000000 
00000000 11111111 01010110 00000100 
(128 bits read)
Reset
11101000 00110000 11001111 00001001 
00000000 11001010 01001010 10000110 
(64 bits read)
Bit written at address 64
00000000 00000000 00000000 00000000 

В приведенном
примере цифры означают состояние (0 или 1) на
контакте карты ввода/вывода (I/O), текстовые
комментарии без скобок — соответствующие
операции с картой (в соответствии со
стандартом), комментарии в скобках —
суммарная статистика считанной информации…
Представленный лог сформирован программой
SCALA (Smart CArd Logic Analizer). Получить программу и
другие разности и вкусности можно по адресу
http://www.gsho.de/phonecard
Там же можно почитать на тему работы со
смарткартами в Германии и Швейцарии. 😉 Итак,
вернемся к нашим баранам. Что мы видим? Из 512
бит карты считываются только первые 128 бит,
далее карта ресетится и читаются первые 64
бита, другими словами перемещается
указатель на 64 позицию, затем выполняется
операция Write (см.стандарт) и читаются
старшие 4 байта восьмеричного счетчика
кредита карты. На основании полученной
информации делается заключение о том, что
карта пуста и выдается соответствующее
сообщение.
Зачем в данном случае делается попытка
записи 64 бита — мне не известно. Вероятнее
всего, это одна из простейших проверок на
соответствие алгоритму. Если у кого-то есть
информация о действительном назначении
этого события — напишите мне, а я поделюсь
информацией с нашими читателями. 😉

Теперь, пожалуй,
перейдем к самому интересному. А что
происходит когда кредит не равен нулю? И
здесь любителей халявы ждет горькое
разочарование. Почему? Сейчас объясню.
Приводить алгоритм чтения карты с кредитом
я не буду, он длинный и труден в чтении.
Попытаюсь рассказать на пальцах. Итак,
начнем с подачи питания на карту. Далее
карта ресетится, читаются первые 128 бит.
Потом снова Reset, чтение 64 бит (установка
адреса), попытка записи 64 бита (зачем — не
знаю, но об этом я говорил выше), далее
чтение кредита карты. (кажется всего 39 бит,
но это не важно) И вот самое интересное:
далее опять Reset, чтение 110 бит (установка
адреса) и запись! (операция Write) по 110 адресу,
чтение 177 бит и далее происходит вот что.
Карта переходит в режим чтения. Таксофон на
ножке I/O выставляет уровни, используя ногу
Clock, продолжает переключать адрес карты.
Всего записывается 48 бит. (6 байт) Далее
карта возвращается в режим выдачи
информации. Адреса продолжают меняться, а
на выходе карты появляется информация
ответа. Каждые 160 тактов выдается ровно один
бит информации. Всего таких битов будет 16. 6
байт запроса формируются таксофоном
случайным образом, ответ зависит от многих
параметров, например от серийного номера
карты, остатка кредита (вероятно),
пользовательской области….. Таксофон
параллельно вычисляет по тому
же
самому алгоритму ответ карты и сравнивает
два числа. На основании совпадения или
различия делается заключение о валидности
карты. Вот так все просто. А теперь о
грустном — алгоритм не известен. По крайней
мере мне. 😉

В кратком виде алгоритм выглядит следующим образом:

1. Сброс карты (Reset)
2. 110 пульсов на выводе Clock (Установка адреса 110)
3. Запись бита по адресу 110 (Write)
4. 177 пульсов на выводе Clock
5. Установка первого бита на выводе I/O
6. 1 пульс на выводе Clock
7. Повторить пункты 5,6 для записи битов со 2 по 48
8. 160 пульсов на выводе Clock
9. Прочитать первый бит на выводе I/O
10.Повторить пункты 8,9 для чтения битов со 2 по 16

Какие выводы
можно сделать из всего вышесказанного? У
меня вызывают огромные сомнения слова
отдельных личностей, которые заявляют о том,
что им удалось создать эмулятор
таксофонной карты МГТС. Здесь возможны два
варианта — либо им известен алгоритм, либо
они слегка преувеличивают. 😉 Возникает
вопрос — можно ли вскрыть алгоритм? Можно, но
сложно. 😉 Хотите попытаться? Если у вас есть,
что сказать по этому поводу — добро
пожаловать в мыло. Только одна просьба, не
надо писать что-нибудь типа: «Skin tipa na mylo
shemu emulatora dla novourupinska a to ochen nado….» Пишите с
конкретными предложениями о
сотрудничестве. Если у кого-то есть
алгоритм формирования ответа — поделитесь с
общественностью. Или хотя бы намекните путь
вычисления… У меня пока все. Ждите
продолжения банкета… 😉

Оставить мнение

Check Also

Страдания с ReactOS. Почему в заменителе Windows работают трояны, но не работает Word

Сегодня в нашей кунсткамере демонстрируется необычайный организм — двадцатилетний зародыш …