Хабрахабр

[Из песочницы] Использование карты «Тройка» в качестве полиса ОМС

Когда деревья были чуточку выше, трава зеленее, солнце ярче, а я учился в институте, у меня была социальная карта студента. Она мне нравилась своей функциональностью и продуманностью, но, как и все хорошее, срок действия её закончился и пришлось на неопределенное время забыть об этом благе московской цивилизации. На смену ей пришла Тройка, которая частично смогла вобрать в себя плюсы СКС, но далеко не все…

Тройка + полис ОМС=? или как все начиналось

Все началось с того, что я заболел и обнаружил, что потерял карточку ОМС. Несмотря на то, что номер я помнил наизусть, мне нужно было что-то, что можно приложить к зеленому инфомату в поликлинике, в противном случае, записаться к врачу и получить законный больничный не получится. Вариантов было много: восстановить полис (чтобы потом найти старый при первой же уборке); сгенерировать и распечатать штрих-код полиса (штрих-код на бумажке — несолидно), либо взять с собой свою старую социальную карту… Я остановился на последнем варианте. Если быть точнее, то я решил на нем не останавливаться, а записать на тройку свои полис аналогично тому, как он записан на социальной карте москвича.

Тюнингуем Тройку

Зная возможности Mifare Classic — совместимых карт, я решил объединить Тройку и старую студенческую карту ради удобства и просто из интереса к результату эксперимента.
Как мы знаем, карты Mifare Classic 1K и 4K вывели из оборота из-за уязвимостей в пользу более защищенных, но совместимых Mifare Plus S, Plus X 2k или Plus EV1 2k. Но суть осталась та же: как социальные, так и карты Тройка имеют одну и ту же начинку, с разницей лишь в объеме (количестве защищенных секторов, что в нашем случае абсолютно не играет значения).

Благодаря документу почти двадцатилетней давности я уже предполагал, что он будет в 5-м секторе карты, зарезервированном как медицинское приложение МГФОМС, что и подтвердилось на практике. Вооружившись статьями про исследования защищенности Тройки и Android приложением «Mifare Classic Tool», я решил заглянуть сначала внутрь социальной карты, чтобы найти место, где записан номер полиса ОМС.

Отлично, зацепка (а, точнее, зацепище есть)! Искомый номер полиса оказался в 5м секторе на второй строке со 2го по 9й байт, то есть, в данном случае "7700009016811218".

Ключи A и B отличаются от тех, которые на СКС, но это поправимо, их можно переписать такими же, как и там. Что касается карты Тройка, то там 5й сектор забит нулями, то есть, пока не используется.

Эксперименты

Помимо желанного номера полиса ОМС, в секторе присутствовали и другие данные, назначение которых мне неизвестно. Начитавшись статей про 8й сектор (электронный кошелек) и его защищенность имитовставками, я предположил, что здесь эти данные могут играть такую же роль имитовставки или контрольной суммы для проверки целостности данных в секторе. Поэтому я решил проверить это, переписав на одну Тройку весь сектор в точности, как на СКС, а на вторую — только номер полиса. Сказано — сделано!

Снял полный дамп с СКС, и записал на первую Тройку весь 5й сектор, а на вторую — записал отредактированный дамп 5го сектора, где фигурирует только номер полиса.

Результаты

Прогулявшись до поликлиники и проверив обе карты, я смог с обеих войти на инфоматы и записаться к врачу! Разумеется, в качестве способа аутентификации следует выбрать «Карта москвича» или «Социальная карта москвича» (работают оба способа) и приложить карту к считывателю.

Из этого следует, что инфоматам достаточно лишь номера полиса в отведенном для него месте и знакомых им ключей от пятого сектора.

И «Тройка» воистину становится ключом к городу, в частности, к поликлиникам. Теперь можно немало удивить работников поликлиники, продемонстрировав им использование Тройки в качестве полиса ОМС и проходить более удобную и современную бесконтактную аутентификацию, ибо даже современные полисы ОМС не поддерживают бесконтактный обмен информацией — их необходимо вставлять чипом в инфомат.

Как я уже писал выше, для этого отлично подходит утилита «Mifare Classic Tool» для Android.
Далее:
1. Update 1: По просьбам трудящихся, расскажу «на пальцах», как это сделать. Проверяем, чтобы были выбраны файлы ключей std.keys и extended-std.keys
3. Жмем «Read tag»
2. Телефон на некоторое время задумается, пока будет подбирать ключи.
4. Прислоняем тройку к телефону и жмем Start mapping and read tag. В нем нас интересует сектор номер 5. По завершении откроется дамп (карту можно убрать от телефона на время редактирования). Наша задача прямо там отредактировать этот сектор и привести его в такой вид:
00000000000000000000000000000000
00888888888888888800000000000000
00000000000000000000000000000000
186D8C4B93F908778F029F131D8C2057
Где 888... — Номер Вашего полиса ОМС. Выглядит он таким образом:
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
FBC2793D540B7C378800D3A297DC2698
Внизу находятся ключи A и B
5. Нажимаем на значок меню в правом верхнем углу и жмем Write Dump -> WRITE DUMP, выбираем только сектор 5 (остальные галки снимаем); прикладываем карту к телефону -> смотрим, чтобы стояли обе галки рядом с ключевыми файлами и жмем START MAPPING AND WRITE DUMP. Особое внимание обратите при переписывании ключей к секторам: если там будет опечатка, то Вы рискуете потерять полностью или частично доступ к сектору.
6. После чего на фоне дампа мы должны увидеть сообщение «Data successfully written»
Карта готова к походу в поликлинику!

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть