Эссе об авторизации таксофонных карт
Путешествуя по рунету в поисках любой информации об эмуляторах смарт карт синхронного режима стандарта 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 Какие выводы можно сделать из всего вышесказанного? У меня вызывают огромные сомнения слова отдельных личностей, которые заявляют о том, что им удалось создать эмулятор таксофонной карты МГТС. Здесь возможны два варианта - либо им известен алгоритм, либо они слегка преувеличивают.
Читайте далее: КР174УН31 - низковольтный усилитель мощности звуковой частоты, Некоторые применения операционного усилителя типа 741 (140УД7), Изготовление трансформаторов, Защита СВЧ транзисторов, Механическое ускорение травления, Изготовление корпуса за 5 минут, Серебрение проводников, Канифоль из смолы, Разъем для батарей, Диаметр по линейке, Хранение радиодеталей,
|