Ковыряем метрошные Mifare Classic + небольшое дополнение по ультралайтам

Sep 12, 2008 01:44

Как я и обещал, я начал ковыряться с Классиками. Напомню, что это ученические, студенческие и пенсионные социальные карты, а также разные другие специализированные карты, о которых простой люд не в курсе (типа пропуска дружинника или сотрудника ГУВД).
Для хранения полезной информации, метрополитен использует сектор №1 (кому не понятно, почитайте как организована память классиков). Для справки, резиновые и рогатые используют сектор №4. Всякая информация от производителя, в частности, заводской серийный номер, хранится в секторе 0, блоке 0 (только чтение, остальные же два блока этого сектора доступны для полноценной работы пользователю). На каждый сектор назначается до 2-х ключей (у нас в метро обычно А для чтения и B для чтения/записи) и права доступа к каждому блоку сектора.
В общем взял я свой студенческий, и с помощью хитрого ключика (без наличия которого я бы и не взялся за классики) прочитал содержимое сектора 1. По структуре оно оказалось очень похоже на то, что записано в ультралайте, за исключением того, что добавились некоторые поля -- действителен от, действителен до, время последнего прохода (чтоб отсчитывать 7 минут) и еще несколько служебных полей. Зато здесь нет никаких хэшей. Вся безопасность (конечно, не считая ключей доступа) это CRC16 в конце каждого блока :) Видимо, эту технологию не обновляли с самого запуска в эксплуатацию, т.к. по сравнению с тем, что наворотили в ультралайтах с этими хэшами, разнообразием алгоритмов и централизованной сменой ключей, два байта CRC и ключи доступа, которые, походу, не меняли уже несколько лет, выглядят как-то смешно...
В общем, считал я этот первый блок, изучил, и начал думать, что бы такое сделать поганое. Так как чистых классиков у меня на данный момент нет, я начал думать, как же мне быть. Тут я и вспомнил про старый студенческий билет своей девушки, который отобрал у нее для экспериментов, когда она закончила учиццо (и, надо сказать, благополучно до сего дня про него забыл). Он был действителен до 06/2008, и по этому кассирши больше его не продлевали, а посылали нахуй. Ну я его и забрал себе.
В общем, я решил взять и сделать самую тупую вешь -- скопировать полностью сектор 1 со своего действующего студака на этот старый. Ну а что, защиты то нету...
И каково, блять, было мое удивление, когда я взял и прошел по нему в метро. Потом я, сцуко, сразу же вышел и еще раз прошел, только по своему реальному. Ну и поехал на работу, работу работать, охуевая от того, какую же здоровую дыру я обнаружил...
А после работы мы с товарищем пошли и сняли пару пруфвидео, чтоб мне не быть голословным. Не фонтан, конечно, но суть понятна:

image Click to view


image Click to view


Следующим этапом будет попытка скопировать первый сектор на пустую карточку (когда она у меня появится). Но с этим могут быть трудности. Дело в том, что в нулевом секторе, там, где, казалось бы, ничего записано не должно быть, я обнаружил какие-то непонятные мне пока-что данные. Почему-то мне кажется, что эти данные каким-то образом относятся к заводскому серийному номеру карты, и вписываются туда при выпуске билета. И есть мнение, что если эти данные не будут соответствовать заводскому серийнику карты, то валидатор завернет эту карту даже не начав читать заветный первый сектор. В общем, это надо будет проверить, когда у меня на руках появятся пустые Calssic 1K. Если же я ошибаюсь, и отсутствие этих данных не будет играть никакой роли при валидации билета, то это будет эпик вин.

Да, народ. Если у кого есть ридеры и студбилеты, не поленитесь, прочитайте содержимое вашего нулевого сектора и напишите мне его сюда. Ключ А для авторизации в нулевом секторе у вас будет 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5. Ключ для записи я не знаю, точнее тот, который я знаю (0xB0,0xB1,0xB2,0xB3,0xB4,0xB5), не подходит.
UPD: Извиняюсь за паранойю, просто я не знал, что этот ключ, в общем-то, открыт, общедоступен и описан в стандарте на MAD

Дополнение по ультралайтам:
В предыдущем посте я написал, что ключи в метро для ультралайтов меняют часто, и те, которые есть у меня, уже не актуальны. В общем, я был не совсем прав. Один из ключей продолжает работать до сих пор. С помошью него вычисляется хэш для так называемых Временных Единых Социальных Билетов. Это такие-же бумажные билеты ультралайт, как и остальные, только они оранжевого цвета. Выдаются пенсионерам, которые еще не успели получить свою социальную карту, но ездить желают. По сути, технически, это единый на месяц (может можно и больше написать).
Так вот, мне удалось удачно сфабриковать один такой. И, что самое интересное, он работал :) Только работал он недолго. Прошел буквально один день, как я получил отказ от валидатора, а терминал сказал "АННУЛИРОВАН". Я долго думал, как же это так, и тут меня осенило.
Все дело в том, что на все социальные билеты, которые выдаются на руки, ведется база данных. Т.е. выписывает тебе кассирша билетик, а вместе с тем, данные этого билетика (номер в частности) поступают в центр обработки данных и там хранятся. А я, когда генерил свой билет, номер написал от балды. Так вот, по всей видимости, когда я по нему ходил, его номер остался в памяти валидатора, затем, через некоторое время, поступил в центр обработки данных. Там, естественно, билетика с таким номером в базе не нашлось, и он благополучно залетел в хотлист. Потом хотлист разослали по валидаторам и мой билет, при попытке пройти, был аннулирован, пришлось его выкинуть.
И вот теперь я понял, почему метровцы не чешутся менять ЭТОТ ключ. Все просто -- нет никакого смысла, если билет все равно прибъют по стоплисту достаточно быстро. А для однопоездочных стоплист делать не имеет смысла, поэтому и ключи часто меняют :) Молодцы, что тут сказать. А так, если клепать такие "временные социальные единые" каждый день или два, то вообще встает вопрос выгоды этого занятия -- чистая карта ультралайт стоит рублей 50. Работает день-два, при аннулировании умирает. Вот и встает вопрос, не дешевле ли 2 поездки купить? :) Единственное, если за день надо смотаться куда-нить раз 10 на метро и еще на автобусах или электричках, но это скорее исключение, нежели чем правило.
Так что, с ультралайтами кому-то что-то химичить, это дохлый номер. Тут надо 1. доставать дешевые бумажные билеты, т.к. пластик это дорого и 2. постоянно где-то доставать свежие ключи и, возможно, всю программу, т.к. могут менять алгоритмы или таблицы. В общем, для "крупного бизнеса" (речь идет именно о "крупном бизнесе", т.к. индивидуумы никакого денежного вреда своими экспериментами не причинят) это дело не особо было бы выгодным, так что, можно считать, что с задачей защиты ультралайтов метрополитеновцы и смартек справились.
Да, специально для страждущих на днях пойду и сделаю пруфвидео, как работает сгенерированный билетик такого типа. Так, просто для галочки.

метро, хакинг

Previous post Next post
Up