Почти год назад на Хабрахабре появилась статья «Исследование защищенности карты Тройка», в которой было подробно описано устройство проездных билетов и векторы атаки на систему оплаты общественного транспорта в Москве. Ещё тогда, вдохновившись прочитанным, мне захотелось попробовать применить описанные в статье приёмы к петербургскому аналогу Тройки — карте Подорожник, которая используется для оплаты поездок в общественном транспорте города.

Как и в оригинальной статье, спешу предупредить читателей: Данная статья написана только для ознакомления, и ни в коем случае не призывает заниматься подделкой проездных билетов, так как это противоречит статье 327 УК РФ. Автор не несет ответственности за любые неправомерные действия совершенные людьми с использованием информации из данной статьи.

Описание носителя карты Подорожник и подбор ключей шифрования


Как и московский товарищ, Подорожник базируется на смарт-картах типа MIFARE. Такие карты используются во многих городах мира как для контроля оплаты проезда, так и в других целях, более подробно с применимостью данных карт можно ознакомиться тут.

В качестве стандарта носителя Подорожника выбран MIFARE Plus 4K, работающий в режиме совместимости с MIFARE Classic.

Данный стандарт является усовершенствованной версией MIFARE Classic: алгоритм шифрования был изменён на AES, что позволило закрыть известные на момент выхода уязвимости. Первые MIFARE Plus появились в 2009 году и до конца 2015 года в публичном доступе не было информации о каких-либо уязвимостях в данных носителях.

В октябре 2015 года вышла в свет работа "Ciphertext-only Cryptanalysis on Hardened Mifare Classic Cards", описывающая атаку на карты MIFARE, работающие в режиме совместимости с Mifare Classic. Именно работа Подорожника в режиме совместимости позволила получить дальнейший доступ к карте. Отдельно хочу отметить, что никаких приложений (мобильных или десктопных) позволяющих взаимодействовать с Подорожником не выпускалось, поэтому вариант извлечения ключей используя реверс-инжиниринг (как в случае с Тройкой) автоматически отпал.

Память MIFARE Plus 4K разбита на 40 секторов: первые 32 сектора содержат 64 байта информации, последние 8 — 256 байт, что в сумме и даёт 4096 байт, которые указаны в названии.

Для доступа к каждому сектору используется два ключа, KeyA и KeyB — они никак не зависят друг от друга и применяются для чтения/записи соответственно.

В апреле 2016 года на Github появился репозиторий aczid/crypto1_bs, содержащий реализацию атаки описанную в научной статье. Я не буду подробно останавливаться на процессе компиляции и запуска скрипта, лишь скажу, что для атаки достаточно использовать любой libnfc-ридер, например, известный в узких кругах ACR122U.


Таким образом были получены ключи A и B от всех 40 секторов карты Подорожник.

Анализ памяти карты


После получения ключей доступа к секторам, стало возможно чтение и запись любых данных на карту. После снятия первых дампов сразу бросилось в глаза, что большинство секторов (1-3, 6, 7, 13-39) забиты нулями и никак не используются: для чего в таком случае используется карта на 4 Кб (а не на 2, например) для меня осталось загадкой. Более того, после нескольких поездок было обнаружено, что данные меняются только в секторах 4, 5 и 9. Так же сразу стало очевидно, что сектор 9 содержит в себе только данные о числе поездок за текущий месяц: значения в некоторых блоках памяти только инкрементируются и соответствуют этому показателю.

Самое же интересное происходит в секторах 4 и 5 — привожу их значения до и после одной из поездок:

+Sector: 4				+Sector: 4
F02300000FDCFFFFF023000000FF00FF	E01500001FEAFFFFE015000000FF00FF
F02300000FDCFFFFF023000000FF00FF	E01500001FEAFFFFE015000000FF00FF
FC00D11439014D04204E0001371E8066	FC00D11439014D04204E0001371E8066
E56AC127DD4548778B0019FC84A3784B	E56AC127DD4548778B0019FC84A3784B

+Sector: 5				+Sector: 5
94293901C532100E0000000000009E39	102B3901851E100E000000000000AF9B
030094293900B96D0690000000000000	0400102B3900386D9A9A000000000000
030094293900B96D0690000000000000	0400102B3900386D9A9A000000000000
77DABC9825E17F0788009764FEC3154A	77DABC9825E17F0788009764FEC3154A

Легко заметить, что первый и второй блоки в секторе 4 всегда совпадают, точно так же ведут себя блоки 2 и 3 в пятом секторе. Экспериментируя с различными балансами, валидаторами в метро и наземном транспорте и интервалами между поездками удалось выяснить следующее:

  • Первые 2 байта первого (или второго) блока четвёртого сектора хранят в себе информацию о балансе электронного кошелька карты в виде целочисленного числа, последние 2 разряда которого содержат информацию о копейках.
  • Первые 4 байта первого блока пятого сектора хранят количество минут, прошедших с 1 января 2010 года. Таким образом, информация о последней поездке хранится на карте с точностью до минуты.
  • Следом за минутами, два байта выделено для идентификатора валидатора: эти идентификаторы отличаются даже в пределах одной станции метро и получить одинаковое значение можно лишь пройдя через тот же турникет.
  • Первый байт второго (или третьего) блока пятого сектора хранит в себе информацию о кол-ве поездок в текущем месяце, аналогично той, что записана в девятом секторе.

Кроме этого, в 5-м секторе находится имитовставка: результат хеш-функции от каких-то хранящихся на данных карте. Возможное её расположение — последние 2 байта первого блока и, возможно, середина второго (третьего) блока. Имитовставка используется в качестве дополнительной защиты и не позволяет менять баланс (и любые другие критичные для оплаты данные) на произвольные значение, тем самым сильно уменьшая возможности для атаки. Тем не менее, имитовставка не является преградой, если речь идёт об атаке повторного воспроизведения.

Атака повторного воспроизведения


Атака повторного воспроизведения (replay) — атака на систему аутентификации путём записи и последующего воспроизведения ранее посланных корректных сообщений или их частей.
Данный тип атаки можно применить как раз в этом случае: так как возможность генерировать имитовставку под нужные данные отсутствует (по причине неизвестного алгоритма её формирования), остаётся лишь вариант полного сохранения состояния карты после пополнения баланса и возврат к нему при необходимости.

Тестирование атаки производилось по следующим схемам:

  1. Пополнение баланса, сохранение дампа, трата доступных средств, восстановление дампа и попытка пополнить баланс через автомат, результат — мгновенная блокировка карты.
  2. Пополнение баланса, сохранение дампа, трата доступных средств, восстановление дампа и последующий проход в метро, результат — успешный проход в метро, блокировка карты спустя 2 часа после прохода.
  3. Пополнение баланса, сохранение дампа, трата доступных средств, восстановление дампа и последующие поездки только в наземном транспорте, результат — никаких блокировок, удалось повторить несколько раз.
  4. Пополнение баланса, сохранение дампа, трата доступных средств, восстановление дампа, поездка в наземном транспорте, поездка в метро, результат — успешный проход в метро, блокировка карты спустя 2 часа после прохода.

После блокировки карты в метро, её все ещё можно использовать в наземных видах транспорта довольно продолжительное время: внесённый в стоп-лист Подорожник работал ещё минимум 2 недели, после чего тестирование было прекращено.

Таким образом, данная атака позволяет бесплатно и без каких-либо ограничений пользоваться любыми наземными видами транспорта: карта Подорожник принимается к оплате в автобусах, троллейбусах, трамваях и маршрутных такси.

С метрополитеном ситуация не такая: турникеты синхронизируются очень оперативно и любые попытки обойти защиту заканчиваются блокировкой карты в кратчайшие сроки. Пассажиропоток петербургского метрополитена составляет около 5 млн человек в день, поэтому меня приятно удивил тот факт, что несмотря на большую нагрузку, система защиты в метро работает без нареканий.

Мобильное приложение Plantain


Для ускорения процесса тестирования, я написал простое приложение, способное считывать информацию с Подорожника, а так же сохранять и восстанавливать его состояние.

Для работы потребуется телефон с ОС Android 4.2+ с NFC-модулем производства NXP. Работа приложения протестирована на Yotaphone 2 и планшете Google Nexus 7.

Я занимаюсь веб-разработкой и до этого не имел дела с разработкой под Android, поэтому код может быть написан не по гайдлайнам и с использованием bad practices.

Ссылка на Github: (раньше ссылка была тут, но вынужден убрать)






Заключение


В заключении хочу сказать, что описанные в данной статье уязвимости являются следствием ошибок, допущенных ещё при создании первых версий Подорожника. Используемые носители MIFARE Plus могут работать в режиме с использованием криптографически безопасного AES, и с какой целью на картах включена совместимость со старым, уязвимым стандартом, сказать сложно. Для исправления уязвимости необходимо значительно участить сбор и анализ данных на валидаторах наземного транспорта (по тому же принципу, как это сделано в метрополитене), усовершенствовать методы хранения данных на памяти карты, или идти в ногу со временем и обновлять аппаратные и программные составляющие компоненты под современные реалии информационной безопасности.
Поделиться с друзьями
-->

Комментарии (136)


  1. PastorGL
    16.03.2017 01:57

    > для чего в таком случае используется карта на 4 Кб (а не на 2, например) для меня осталось загадкой

    В мае московскую тройку и питерский подорожник собираются объединить, вот зачем.

    Сделали бы уж сразу единый проездной для всей страны (это я вздыхаю как провинциал, далёкий от обеих столиц).


    1. Acuna
      16.03.2017 03:16

      Сам как житель «одной из столиц» еще больше подогрею Ваш интерес тем, что его даже во всех маршрутках принимают (!) )))


      1. AleXP3
        16.03.2017 15:51

        В маршрутках больше любят наличку. Ее потом, на конечной, водители и перебивают в безнал через «подорожник» как раз.


        1. Acuna
          16.03.2017 19:31

          Вполне возможно, однако берут в любом случае всегда без проблем, однако с другой стороны их заинтересованность должна быть больше: на конечной перебивать меньше надо будет.


          1. AleXP3
            16.03.2017 20:14

            Они «перебитое» себе в карман кладут — это я точно знаю (приятель есть из автопарка). Так что наличка им больше по нраву всегда. Другое дело, что не борзеют и рожи не корчат.


            1. Acuna
              18.03.2017 20:41

              Ахах, ясно, в карман, в общем, перебивают!) Век живи — век учись) Ну рожи, кстати, не корчат хотя-бы потому, что процент подорожников крайне мал, я сколько не езжу (езжу немного, только по делу, но все же), только у пары раз буквально видел, хотя вереница людей проходит приличная, особенно если маршрут длинный.

              P. S. А вообще, зря я это узнал, мне уже даже самому неловко, они останавливаются в любом месте, где руку выставил, хоть из парадной выходи и сразу голосуй, аварийку включают чтобы виднее быть другим в потоке, так удобно, а я им подорожник за все заслуги вместо мелочи) Как говорится, «Почему-то танцуют они, а стыдно мне»))


      1. DjOnline
        16.03.2017 21:47

        Очень не хватает этого в Москве. Замучился мелочь носить на всякий случай.


        1. Acuna
          18.03.2017 20:34

          Огого! Вот это поворот! Я думал у вас там все в облаках давно, а вы тут с мелочью до сих пор ходите :DD Ну а в метро у вас, кстати, как, все те же пластиковые жетоны по-прежнему? И вообще какая у вас система оплаты транспорта на данный момент присутствует? У нас-то электронные проездные на все виды транспорта уже были когда я еще в школе учился (в прямом смысле), то есть лет десять назад минимум…


          1. DjOnline
            19.03.2017 13:14

            Причём здесь метро? Я про оплату в обычных маршрутках. Бывают конечно государственные маршрутки с турникетами и карточками тройки, но это редкость.


            1. soniq
              19.03.2017 16:54
              +1

              Так в Москве как раз все маршрутки и стали «государственными», с турникетами и соответствующим расписанием. Маршрутки в область пока остались на старой схеме, но скоро это обещали «исправить».


            1. Acuna
              19.03.2017 16:58

              Я понимаю, что речь идет о маршрутках, ибо сам и начал эту тему. Про метро я просто спросил, пользуясь случаем.


        1. dimas
          21.03.2017 13:34

          Эт для каких маршруток в марте 2017 мелочь носить приходится? :) Разве что только для областных…


          1. DjOnline
            21.03.2017 13:47

            Да, Реутов, Новокосино-2, 100м от Москвы :)


            1. dimas
              21.03.2017 13:50

              Ну так административно область. Зато можно порадоваться что нормальные маршрутки остались, а не оленеводный бардак…


              1. DjOnline
                21.03.2017 14:16

                Почему бардак? :)
                Впрочем кажется я видел на маршрутке поддержку карты Стрелка, просто пока ей не пользовался.


                1. dimas
                  21.03.2017 14:23

                  Потому что маршрутки вырезали, а график автобусов до сих пор не пересчитали… В результате мне приходится к соседней станции метро ездить, если не хочется стоять по пятнадцать минут в ожидании и изображать шпрот в банке…


    1. bromium
      16.03.2017 03:26

      В мае московскую тройку и питерский подорожник собираются объединить, вот зачем.


      И что? В тройке используется два сектора, в подорожнике, как пишет автор, 3. Т. е карты на 1кб (16 секторов) было бы достаточно.

      А т. н. «объединение» — это просто запись данных разных систем в соответствующие сектора памяти карты.

      А единый проездной невозможен (в разных городах разные тарифы и разные проездные), да и не нужен: я слабо верю, что есть люди, которые регулярно утром ездят из Ижевска в Питер на работу, а вечером обратно.

      Просто разгадка в другом: карта Подорожник основана на самом дорогом чипе семейства Mifare Plus, хотя, как видим, подошел бы самый дешевый (потому что возможности самого дорогого попросту не используются), например, Mifare Plus S1K (SE 1 k).

      Разница в цене чипов — процентов 40%, если не больше. А карты закупаются за счет средств бюджета…


      1. SyrexS
        16.03.2017 09:03
        +3

        В кассе карта стоит 50 рублей, так что за карту все таки платит пользователь


      1. Pakos
        16.03.2017 09:13

        А единый проездной невозможен
        Тарифы не беда — на карте хранится сумма (в одном из режимов).


        1. M_AJ
          16.03.2017 09:45

          А как быть с ключами? Никто не даст чужой системе свои ключи. Короче, проще везде внедрить оплату через PayPass


          1. Kriger91
            16.03.2017 10:32
            -2

            Так уже везде внедрена.


            1. M_AJ
              16.03.2017 10:50

              В смысле? В Питер нельзя расплатиться PayPassoм в наземном транспорте в регионах наверное тем более.


              1. sleeply4cat
                16.03.2017 11:47

                А в метро можно?
                Я месяца два назад пытался пройти, турникет показал «красный глаз».


                1. M_AJ
                  16.03.2017 12:17

                  Можно. Нужно проходить через самый первый турникет, прикладывая карту к правой (это важно) его тумбе.


                  1. ingumsky
                    16.03.2017 14:26

                    К левой же.


                1. kerberos464
                  16.03.2017 12:22

                  В метро давно уже можно (год, как минимум), но проходить надо через турникет, ближайший к будке охраны, и прикладывать карту нужно к валидатору, который тоже расположен ближе к будке охраны.


                  1. KestL
                    16.03.2017 12:50

                    Неа, валидатор всегда слева для PayPass, справа для транспортных карт.


                1. M_AJ
                  16.03.2017 12:33

                  Извиняюсь, к ЛЕВОЙ а не правой.


                  1. sleeply4cat
                    16.03.2017 12:56

                    а, ну тогда я всё делал правильно. Надо будет попробовать ещё раз, когда в метро буду.


                    1. Andrusha
                      16.03.2017 14:01

                      Её чуть дольше держать нужно, чем проездной, ещё иногда подвигать туда-сюда. У меня точно работали Тинькофф и Русский Стандарт.


                      1. sleeply4cat
                        17.03.2017 15:17

                        не-а, вчера потыкался — карта считывается, турникет светит красным, деньги не снимает.
                        правда, использовал телефон с HCE, но не думаю, что разница существенна, PayPass — он и в Африке PayPass.


                        1. kicum
                          17.03.2017 21:45

                          Если пробовал ApplePay — не получится, но есть куча сторонних приложений, к которым можно приявзать карту — они работают. Просто выбери в сторе, насчет Android- хз


                          1. sleeply4cat
                            18.03.2017 23:53

                            Ведроид, SecureElement'а нет, так что карты не привязываются, только через посредников с виртуальными.


                        1. Andrusha
                          18.03.2017 23:59

                          А, ну с телефона я не пробовал, только карты. У меня телефон и в магазинах иногда не срабатывал.


                        1. dezconnect
                          20.03.2017 12:00

                          Все работает отлично и через телефон и через карты с paypass (Тиньков, Альфа)


                          1. sleeply4cat
                            20.03.2017 12:11

                            Nexus 5x, виртуальная карта Тиньков, «Кошелёк».


                      1. Acuna
                        18.03.2017 20:50

                        На самом деле тот же подорожник часто нужно немного подержать, иногда подвигать туда-сюда. Часто показывает красный. Хотя для меня это всегда было загадкой, ибо если он и показывает красный, значит саму карточку он определяет как таковую, а не просто как кусок пластика, однако возможно не успевает считать информацию с нее. То есть типа как «Да, я понимаю, что это какая-то информация, но мне нужно время, чтобы ее прочитать»)


                        1. Andrusha
                          18.03.2017 23:57

                          Может, конкретная карта глючная? У меня подорожник идеально отрабатывает: прикасаюсь коротким ребром к кругу, если записаны «40 поездок на 30 дней», то моментально; если деньги, то чуть дольше, но ничего двигать не надо. Вот считыватели банковских карт это да, аттракцион.


                          1. Acuna
                            20.03.2017 22:28

                            Хм… Вот дела… Ребром — это прям вообще торцом? Я ее как-бы свайпаю тремя пальцами по датчику, чтобы была максимальная площадь охвата, где-то секунду-две примерно… Думал этого более чем достаточно. И кстати такое только в метро, в маршрутках все нормально. Возьму у знакомой ее подорожник, проверю если вдруг в метро окажусь, самому даже уже интересно.


                        1. sleeply4cat
                          19.03.2017 20:23

                          Странно, ни разу такого не встречал. Вероятно, у вас дефектная карта.


                          1. Acuna
                            20.03.2017 22:29

                            Вот дела… Никогда-бы не подумал, если бы не спросил) Возьму у знакомой ее подорожник, проверю как-раз, когда буду в метро в ближайшее время.


                1. Pakos
                  16.03.2017 13:03

                  Там есть какая-то несогласованность между банками и метро, в метро карта может быть в стоп-листе после первой попытки прохода, но почему — никто не знает. Потом само рассасывается. Банк отсылает к метро, метро — к банку. У меня нет такой карты. потому со слов коллеги, когда-то пытавшегося.


                  1. Alexandr_c
                    16.03.2017 14:04

                    У меня еще более интересная ситуация, плачу через Apple Pay. На часах карта походу находится в стоп-листе после нескольких поездок. А на телефоне все работает нормально. Видимо id карты отличается даже не разных устройствах.


                  1. dezconnect
                    20.03.2017 12:02

                    Могу предположиить что не у всех банков номера карт соответствуют алгоритму Луна (Привет Райфайзен!)


                  1. Asaelko
                    21.03.2017 15:25

                    Есть волшебная официальная ссылка, по которой можно проверить последние платежи и разрешить стоп-конфликты (если с карты в последний раз списались деньги «в долг», например, то есть проход был разрешен, но снять не получилось)

                    http://metrospb.uniteller.ru/auth/login


              1. GerrAlt
                16.03.2017 17:43

                Не совсем так, можно расплатиться карточкой как минимум на автобусном маршруте до Пулково (если не ошибаюсь PayPass не обязателен).

                Также можно купить билет на электричку с оплатой по карте через автомат.


            1. Syrex
              16.03.2017 10:57

              В Москве она внедрена ну оооочень условно, оплатить проезд можно картой PayPass в основном в центре, и то чаще всего только на одном входе станции из нескольких, в наземном транспорте — так вообще нигде, оплата возможна только тройкой или единым.
              В Питере она внедрена на всех станциях метро (было приятным сюрпризом во время поездки в Питер), но в наземном транспорте получилось воспользоваться только в автобусе от Пулково до Питера, в остальных автобусах либо подорожником оплата, либо вообще только наличными


              1. ingumsky
                16.03.2017 14:28

                Сейчас ещё по Невскому ходит несколько маршрутов, работающих с PayPass, а вообще тут на днях Газпромбанк выиграл конкурс на оборудование всех автобусов валидаторами для PayPass.


                1. 23rd
                  16.03.2017 20:23

                  А есть ссылка?


                  1. ingumsky
                    16.03.2017 20:27

                    Первая ссылка в Гугле:
                    http://www.the-village.ru/village/city/transport/258466-karty-avtobusy-gazprombank


    1. osipov_dv
      16.03.2017 09:07

      Вы хотите за поездку платить 50 рублей, вместо 7 (или сколько там в регионах)?


      1. Pakos
        16.03.2017 09:34

        Почему 50? У меня поездки стоят 34, 33, 32 и т.д. в зависимости от её номера, кладу сумму — на карте сумма, никакого количества поездок. В чём проблема снять 7 рублей?


        1. SyrexS
          16.03.2017 09:38

          Потому что на карту можно положить не только деньги, но и проездной на количество поездок.
          А вот что спишется при наличии и денег и поездок на карте — непонятно


          1. kloppspb
            16.03.2017 10:09

            Так о том речь и идёт: разруливается же как-то ситуация, в которой на разных видах транспорта разная стоимость поездки. И ещё интересней: у нас есть автобусы, на которых поездка в пределах одной части маршрута стоит N, а если заехал в соседнюю зону — уже 2N. И снимают оплату сразу, а не 2 раза. Значит, проблема как-то решаема.

            Впрочем, приём оплаты с обычных карт, как это уже сделано в метро, может свести проблему на нет.


            1. osipov_dv
              16.03.2017 11:34

              Даже на наземном транспорте и метро цена поездок различается, в случае с электронным кошельком будет списываться корректная сумма. Но это не самый популярный вариант, так как заметно дороже абонемента. А в абонементе все поездки стоят одинаково, что метро, что наземка.


              1. kloppspb
                16.03.2017 12:21

                При нерегулярных поездках может быть как раз наоборот. Если покупать мало поездок, то выгода почти никакая, но есть шанс нарваться на необходимость докупать, причём в самый неподходящий момент. А если много, то пропадут. Поэтому и сам кошельком пользуюсь, и знаю много людей, которые тоже.
                Но ведь подорожников и так много, если верить сайту (раздел «Виды электронных карт», чем отличаются не вникал), может имеет смысл разделить карты с кошельком и поездками?


                1. osipov_dv
                  16.03.2017 13:39

                  Ага, разделить, потом выяснить что кто-то пользуется только наземным или только метро… и вернуть обратно билеты на каждый вид транспорта.


                  1. kloppspb
                    16.03.2017 14:14

                    Так, стоп. А в чём, собственно, проблема? Если я кладу деньги на кошелёк, то с него и списывается. Пополнение на той же карте поездок — другой юзкейс, и после такого пополнения поездки и списываются. Получается, что там какой-то переключатель режима стоит, что ли? Который дёргается при пополнении.


                    1. osipov_dv
                      16.03.2017 14:32

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

                      PS: я не про подорожник, я про тройку говорю.


                      1. kloppspb
                        16.03.2017 14:48

                        В подорожнике при пополнении кошелька на терминале кассира высвечивается и сумма на кошельке, и количество поездок, соответствующее этой сумме. А вот когда проверяю вручную в аппарате, то поездки уже не показываются вообще.


                        1. osipov_dv
                          16.03.2017 14:50

                          в приложении тройка показывается все, не знаю, работает ли оно с подорожником.


                      1. luxeon8
                        16.03.2017 18:27

                        В подорожнике такая же система. Сам храню на карте поездки для метро (часто езжу) и деньги для наземного транспорта (редко).


          1. Pakos
            16.03.2017 12:58

            Выход — «электронный кошелёк», где стоимость различная а на счету — внесённая сумма денег. Даже не пользуясь наземным транспортом (но имея варианты, а не фиксировано «40 поездок в месяц») оно выгоднее.


            1. DjOnline
              16.03.2017 21:58

              Раньше, года 4 назад, когда только начали появляться банковские карты с чипом метром, например Транспортная от Русского Стандарта, была прогрессивная цена поездки, чем больше ездиешь, тем дешевле каждая. Не было никакого смысла покупать обычные 60 поездок. Затем, с запуском Тройки, сделали такие же тарифы, и теперь на Тройке и на банковской карте единая цена за поездку всегда 35, без прогрессивной шкалы. Пропал всякий смысл этим пользоваться, если хоть иногда, но ездиешь, потому что проще купить 60 поездок, которые действуют 3 месяца, и стоят 28.3р за поездку.

              Вот если бы сохранилась прогрессивная шкала, и она автоматически действовала бы в каждом городе страны (путь даже индивидуально) — вот это было бы удобно. В Питере вообще странная система — туристу в Питере даже на неделю нет смысла покупать Подорожник и платить ещё за сам пластик, цена за поедку практически такая же как и поштучно покупать жетоны. И да, это удивляет, т метро в Питере дороже Москвы.


              1. M_AJ
                16.03.2017 22:21

                С января 2017 Подорожник для туриста имеет смысл, так как жетоны поштучно теперь по 45 рублей, против 36 по Подорожнику (с 11 поездки 35, с 21 — 34 и так до 32).


          1. sw0rl0k
            19.03.2017 07:06

            Ну с Тройкой всё понятно. Если есть и деньги и поездки, то будут списываться сначала все поездки, а потом деньги.


    1. Animegravitation
      16.03.2017 12:08

      А вы не вздыхайте а используйте правовое поле. Соглас ЗоЗПП и закона о национальной платежной системе предприятия с выручкой более 120 миллионо в год обязаны принимать национальные платежные средства — в частности карты МИР.
      Мне неизвестен ни один терминал который бы принимал только карты мир но не принимал бы карты Visa и Master Card и Samsung Pay.
      Пишите претензию в транспортное предприятие города с требование предоставить возможнос оплаты картой МИР. Если город более 200 000 то наверняка выручка главного перевозчика более 120 миллионов.
      Если вам отказывают — пишите обращение в Роспотребнадзор и прикладывает ответ перевозчика.
      Штраф для юр лиц от 30 до 50 тысяч рублей. плюс предписание выпишет Роспотребнадзор
      Шевелимся граждане — шевелимся :)


      1. bromium
        16.03.2017 13:07
        +5

        Вы уже написали, или только подстрекаете?

        Обыватели забывабт, что платежные системы и банки берут за эквайринг процент (в районе 2%) — плюс нужно оборудование соответствующее (прошедшее сертификацию платежных систем). Кто за это заплатит? В конечном итоге, конечно же пассажир (ведь на него перенесут эти затраты).
        Кто выиграет: платежные системы и вендры оборудования.

        Достаточно задать простой вопрос людям, для которых общественный транспорт — основное средство передвижения: что вы выберете — оплату paypass, но тариф вырастет, или все-таки оплату транспортной картой, но тариф не вырастет (при этом будут такие виды абонементов, которые позволяют платить меньше при покупке большего количества поездок). И вдруг большинство начинает выбирать второй вариант.

        Или такой вопрос: на что важнее потратить деньги — на возможность оплаты paypass или на кондиционеры? Я Тройку и так пополняю банковской картой, так что paypass мне не особо и нужен.

        А упомянутый Вами закон, по сути, лоббирует интересы банков и платежных систем (в т. ч. зарубежных) — они получает увеличение своих обротов просто так, потому что так всех обязали. Заметьте, в законе ничего не сказано об ограничении и регулировании эквайринговых комиссий, которые в нашей стране запредельны.

        Вот и получается очередной «Платон 2.0» или ЭРА-ГЛОНАСС: новый вид дани без положительных результатов взамен (нам обещали, что с вводом Платона средства от него пойдут на ремонт дорог. Ну что, дороги лучше стали?).

        Как легко же манипулировать людьми: создали им некое «удобство», но содрали за это деньги:

        за обслуживание карты — плати, за смс- информирование плати.

        расплатился картой — торговая точка платит банку, соовтественно, в цену товара включает комиссию.

        захотел снять свои же деньги выше некоего лимита — плати.

        Вот так и появился завуалированный налог на безнал. Теперь понимаете, почему заинтересованные лица все про него постоянно твердят?

        Да, удобство бесспорное, но почему в европе за эквайринг дебетовых карт комиссия 0,2%, а у нас в 10 раз больше?

        ps понимаю, что навлеку на себя «праведный гнев», правда — болезненная штука. Но молчать больше не могу


        1. pfzim
          16.03.2017 14:49

          Полностью согласен!


        1. Animegravitation
          16.03.2017 18:49
          +2

          Уже написал :)
          Успокойтесь — 2% от платежа ничто в сравнении какие %ты тупо разворовываются или тратятся не по целевому направлению.
          Тем более есть закон и его надо соблюдать.
          Почему в метро можно оплатить поездку картой а в автобусе нельзя?
          И да мне надоело таскать вечно «железо» и мелочь
          По поводу стоимости эквайринга это вам к банкам и МПС — потребитель тут никак повлиять не может
          А нал по вашему не надо обслуживать?
          А стоимость инкассации равна 0?
          Или минусы вы видите только в безнале а у нала сплошные плюсы?
          СМС прошлый век -когда есть ИБ и push уведомления

          Зато при наличии кредитки — ты всегда можешь оплатить покупку, а не ой извинте я забыл деньги дома в нужном количестве.
          Или у меня размена нет.
          И если у вас украдут наличку то вы её потеряете навсегда а при утере или краже карты её можно быстро заблокировать
          Так что везде есть плюсы и везде есть минусы


  1. habrahabr
    16.03.2017 02:08
    +11

    Комментарий для СМИ, которые завтра напишут у себя «Программист нашёл уязвимость в карте Подорожник» и по традиции забудут ссылочку на Хабр — вы это, не забывайте! )

    А статья отличная!


    1. kolayuk
      16.03.2017 08:53
      +3

      Не программист, а "русские хакеры" (с)


    1. SravniRu
      16.03.2017 11:41
      +1

      А мы вот обошлись без «хакеров» в заголовке, например. Правда, и без «программистов».
      И ссылочку поставили)
      https://www.sravni.ru/novost/2017/3/16/iz-za-ujazvimosti-po-transportnoj-karte-podorozhnik-mozhno-ezdit-besplatno/


    1. leshakk
      16.03.2017 18:18

      «В Москве хакер взломал «Тройку» и две недели бесплатно катался в общественном транспорте»
      … Потом программист написал приложение, чтобы все пассажиры могли обманывать турникеты на входе…
      http://www.msk.kp.ru/daily/26531/3551729/
      Ждём продолжения от самых «компетентных» журналистов…


      1. Busla
        17.03.2017 11:58

        заголовок:

        Юный петербуржец взломал «Подорожник» и бесплатно ездил по городу

        https://life.ru/t/life78/986299/iunyi_pietierburzhiets_vzlomal_podorozhnik_i_biesplatno_iezdil_po_ghorodu


        1. leshakk
          17.03.2017 12:36

          Эх, засудить бы разок такую вот "акулу пера"....


          Известный комикс про учёного и журналиста...
          image


  1. KonstantinSpb
    16.03.2017 02:59

    Совпадающие блоки это скорей всего хэш от данных, а два их скорей для надежности.
    А т.к. делалась перезапись дампа в лоб, то логично, что карта блокировалась очень быстро, т.к. было несовпадение по метке времени.


    1. bromium
      16.03.2017 03:41
      +1

      Дамп ни чем не отличается от оргинала, в этом суть replay атаки. О какие несовпадения по метке Вы говорите?
      Просто в метро турникеты работают в режиме онлайн (ну, обмен с сервером происходит в пределах 2-х часов, как видим) — и там, как вариант, отслеживают по остаткам балансов карты.

      А наземный транспорт в оффлайне — выгрузка, скорее всего, раз в день вечером. Ну и, похоже, мониторинга мошеннической активности не делают.

      Возможно, после выхода статьи, начнут делать


      1. Jef239
        16.03.2017 04:37

        Насколько я слышал, турникеты в Питере всегда работали в полном онлайне. 2 часа — это период запуска задачи, производящей контроль транзакций.


        1. M_AJ
          16.03.2017 09:39
          +1

          Обычно онлайн, но есть и автономный режим. Вообще, дежурный увидев, что турникет отвалился обычно вызывает механика.


      1. KonstantinSpb
        16.03.2017 10:05
        +4

        Несовпадение по метке времени следующее, на карте записана временная метка Т1, с этой меткой вы сохранили дамп, потом прошли через турникет и помимо списания баланса, изменилась метка времени на более новую Т2 > T1. Потом снова записываем дамп, проходим и система прочитала временную метку для вашей карты, сохранила. Потом при передаче этих на данных на сервер, будет видно, что последняя метка использования больше сохраненной, карта блокируется.


        1. antoo
          16.03.2017 15:56

          Именно такой логикой я и руководствовался перед тем, как решил попробовать 4-й способ из статьи. Наземные валидаторы не синхронизируются (или делают это очень долго), но обновляют временные метки и делают правильные имитовставки с балансом. Способ не сработал, поэтому можно сделать вывод, что проверяется всё-таки не только временная метка, но и вся история пополнений подорожника.


    1. v0s
      16.03.2017 12:13
      +2

      Те совпадающие блоки
      F0230000 0FDCFFFF F0230000 00FF00FF
      F0230000 0FDCFFFF F0230000 00FF00FF

      — это формат value-блоков в Mifare, они хранят по одному 4-байтовому числу каждый.
      Структура такая: N, ~N, N, 00 ff 00 ff

      Порядок байт little endian, значит тут число 0x23f0 = 9200 = 92 руб 00 коп.
      Ну и соответственно 0x23f0 = ~ 0xffffdc0f

      А именно value-блоки выбраны, потому что их можно уменьшать специальным запросом к карте: вместо того чтобы давать турникету ключ на запись, ему выдается ключ на чтение+уменьшение. Украдешь ключ из турникета — сможешь только списывать деньги с карточек :-)


  1. bromium
    16.03.2017 03:37
    +8

    Автор забыл упомянуть, что эксплуатация упомянутой уязвимости возможна лишь при условии, что ключи к одному из секторов карты должны быть известны. К «счастью», один из секторов Подорожника имеет стандартные ключи (FFFFFFFFFFFF).

    Но даже если бы это было не так, то все равно, криптопротокол Mifare Classic взламывается за секунды с использованием простейшего сниффера. Обэ том известно в узких кругах еще с 2008 (!) года. Кстати, вот почему Mifare Plus появился в 2009 году (проиводитель «закрыл уязвимость» — вернее, добавил поддержку AES).

    Почему не используется AES — тоже объяснимо. Mifare Classic можно было взламывать буквально за секунды, используя card only attack (там были проблемы с предсказуемым датчиком случайных чисел).

    В Mifare Plus эту аппаратную ошибку пофиксили. Ну а интеграторы и успокоились — ведь чтобы поддержать AES надо переписывать ПО и в ряде случаев делать аппаратный апгрейд инфраструктуры. А это дорого, гораздо проще под хорошим предлогом закупать более дорогие карты и использовать их в небезопасном режиме (т. е. ничего не менять в системе): чиновники ведь все равно ничего не понимают (или делают вид, что не понимают)


    1. bromium
      16.03.2017 04:02
      +4

      В подтвержение слов вот такой ответ чиновника можно найти на просторах интернета. Понятно, что он подписал бумагу, ничего не понимая в нем, полагаясь на компетентность своих исполнителей.

      Забавно читать про AES и криптостойкость, когда понимаешь, как все обстоит на самом деле


      1. amf3tam1n
        16.03.2017 14:44

        Да там еще все более запущено.
        Основной недостаток «Тройки» — организация хранения данных на карте (фиксированные сектора) вместо использования описания приложений через MAD. Отсутствие диверсификации и AES. Подозреваю что в «Подорожнике» все те же самые болячки. Такое ощущение, что при разработке системы документация от NXP не читалась совсем.
        Из-за отсутствия заголовка вылезают разные проблемы. Например невозможность расширить карту для использования другими поставщиками услуг. При этом есть куча зарезервированных секторов которыми никто и никогда не воспользуется.
        Невозможность чтения списка приложений (т.к. его нет). Соответственно теряется гибкость работы системы. Например, если у человека соцкарта и на ней кошелек тройки, то можно было бы при чтении только одного сектора можно было бы разделить логику выполнения чтения с карты (сначала сектор соцкарты, потом сектор электронного кошелька) и т.д.
        При наличии MAD, можно было бы использовать текущий носитель для расширения функционала, например записать кошельки других транспортных систем или данные СКД, при этом не важно какие сектора уже заняты.


        1. bromium
          24.03.2017 11:46

          В целом, все верно. Только Вы не учитываете, что с учетом уязвимостей Mifare, MAD — это прямой путь к вскрытию карты, сидя дома на диване. Поскольку ключи для сектора с MAD должны быть известны и они прямо прописаны в спецификации. А наличие одного известного ключа — прямой путь к вскрытию всех ключей на карте


          1. a1ien_n3t
            24.03.2017 13:01

            Берем mifire plus в sl3 делаем MAD -> Профит.


  1. aamonster
    16.03.2017 08:10
    +2

    Может, кто-нибудь воспользуется этим знанием "в мирных целях" и напишет прогу, собирающую логи с подорожника?
    Ну, чтобы после оплаты поездки приложил карту к карману с телефоном — запустилось приложение (привязанное к данной карте штатными настроцками) и сохранило в лог баланс и время поездки (с карты + текущее с телефона) и т.п..


    А потом просмотрел. А то недоступность логов карты раздражает.


    1. difiso
      16.03.2017 09:14

      Кстати да, полезная вещь. Такое есть в Лондоне с их OysterCard. Подходишь к терминалу, и вперед: узнать баланс, пополнить, посмотреть историю. Можно посмотреть на каком автобусе ехал, узнать где, когда и во сколько проходил турникеты метро, есть и цена каждой поездки. Правда там это все имеет смысл, т.к. у них цена поездки на метро зависит от того где зашел и где вышел, а также от дня недели и от времени входа (час пик, день или ранее утро). У нас не так все хорошо, но тоже было бы полезно.


      1. Antelle
        16.03.2017 09:46
        +1

        Но оно из онлайна берётся, не с карточки.


      1. GamePad64
        16.03.2017 10:10
        +1

        Карта Стрелка в Московской области умеет это всё: пополнение баланса с банковской карты (без дальнейшей записи балансе на карту через терминал), просмотр истории поездок и баланса через мобильное приложение, sms (или push) о новых поездках
        Имхо, самая удобная карточка из трёх.


        1. n_demitsuri
          16.03.2017 11:18

          Справедливости ради надо заметить, что Стрелка — самая ненадежная из трех. Даже сейчас проблемы с работой карты бывают, а уж на этапе внедрения их было совсем полно. Было бы очень интересно, если бы кто-нибудь оттуда рассказал про внутреннее устройство.


    1. g13serj
      16.03.2017 12:08

      Тоже давно искал такое приложение, но всегда только находил для карт Москвы и удивлялся, почему ещё нет подобного для карт Питера, может после этой статьи всё таки найдутся умельцы.


  1. nerudo
    16.03.2017 09:07
    +1

    Автор ведь помнит, что в общественном транспорте имеется видеонаблюдение?


    1. PEgorov
      16.03.2017 19:52

      Там, насколько я помню, весьма хреновенькие камеры, которые в случае чего позволят искать автора по приметам уровня «мужчина средних лет, среднего роста, одет в джинсы и черную куртку», которым соответствуют пару миллионов москвичей.


  1. QtRoS
    16.03.2017 09:07

    Эх, жалко, что статья не такая полная получилась. От захватывающей истории исследования «Тройки» я лично до сих пор в восторге, помнится даже под впечатлением (будучи в отпуске на отдыхе) хотел так же разобрать по косточкам билет на какой-то аттракцион, но под рукой девайсов не было…


  1. Anisotropic
    16.03.2017 09:16

    Milfare classic? Понятно почему оно не взлетает на моих телефонах, тут NFC его не поддерживает


    1. frog
      16.03.2017 21:29

      На всякий случай — если телефон Android, то в xml файлике для android.nfc.action.TECH_DISCOVERED должны быть перечислены все стандарты. Метки/карты неупомянутых там стандартов будут игнорироваться. Просто народ регулярно в сети удивляется, почему одни метки приложением видятся, а другие нет.


  1. DrZlodberg
    16.03.2017 09:17

    Стоит напомнить, что в метро у турникетов дофига камер и, вроде, тех кто светится в одном и том же месте с подозрительными картами могут и на беседу позвать. В автобусах (по крайней мере в мск) кстати тоже, но там некому ловить.


    1. M_AJ
      16.03.2017 09:29

      Через турникет больше одного раза не пройдешь, карта попадет в ЧС. Ну разве что повезет и он будет в офлайне, и ЧС выгрузится с задержкой.


      1. DrZlodberg
        16.03.2017 09:46

        Это не важно. Смысл в том, что палится (сразу или постфактум) попытка прохода (как минимум в процессе экспериментов) с не валидной картой, а по камерам и меткам времени легко получить картинку. Дальше дело внимательности местной охраны.


        1. M_AJ
          16.03.2017 09:55

          Когда автор прикладывал карту, и обнаруживал, что она заблокирована, "мужик в будке" должен был увидеть это на терминале, так что камеры и не нужны. Другое дело, что им обычно нет до этого дела, хотя иногда бывают облавы.


          1. DrZlodberg
            16.03.2017 10:14

            Мужик в будке мог просто отвлечься или просто некого позвать было. Но вообще метробабки — это отдельный крайне злобный подвид человечества, и просто так они обычно никого не отпускают. Ну и в автобусе мог спалиться. Вероятность попасться минимальная, но если много раз и в одном районе — могут и подрядить местных.


            1. TerminusMKB
              16.03.2017 10:24
              +2

              «Дальше ваши рыжие кудри примелькаются, и вас просто начнут бить» © Остап Бендер


        1. ebragim
          16.03.2017 12:09
          +1

          Да кому это надо? Вашу карту просто банят, закупать карты сотнями для одноразового использования слишком затратно и не окупает затрат.


          1. DrZlodberg
            16.03.2017 12:14

            Да тут дело скорее не в выгоде, а в поимке таких эксперементаторов. Пока они ещё палятся. А то потом сообразят генератор номеров и ищи… Просто у некоторых иногда с карт будут пропадать 1 поездка, мало кто даже заметит.
            Хотя это лишь мои соображения. Может и действительно пофиг.


            1. M_AJ
              16.03.2017 12:26

              Там же еще номер чипа учитывается


              1. DrZlodberg
                16.03.2017 13:15

                Если так, то да, сложнее и дороже. Тут уже эмулятор нужен. :(


      1. Mimizavr
        16.03.2017 12:09

        Лично знаю людей, которые ездят так уже полгода на одной и той же карте и пока не заблокировали. Самому удивительна такая дыра.


        1. nipponspb
          16.03.2017 13:22

          Да, подтверждаю, такое ощущение, что в ПО для наземного транспорта вообще какой-то косяк, и карты на валидность в принципе не проверяется.
          Знакомый инвалид потерял карту, льготную, сделал дубликат, исходную вроде «заблокировали». Потом нашел первую, оказалось, она спокойно работала в наземном траспорте. И какое-то время у него было две карты на наземный транспорт. Пока он по ошибке не прошел с невалидной в метро, и ее заблокировали по-настоящему. Второй раз он такой дубликат сделал сознательно, и в метро с ним не ходит, но иметь две карты ему довольно удобно в некоторых случаях.
          Как я понимаю, так может поступить любой обладатель права льготного проезда.
          Возможно сейчас эту дырку прикроют, увы.


  1. VBKesha
    16.03.2017 11:50

    Вопрос немножко не в тему но какие ещё бываю карты кроме MIFARE а то купил как то ради интереса модуль Mifare RC522 те две карты что шли вместе с ним читаются нормально. Всё остальные беспроводные карты что у меня были (ключи от офисов, разные скипасы) не читаются хоть убейся. Вот интересно что бывает ещё и как можно определить тип попавшейся беспроводной карты.


    1. a1ien_n3t
      16.03.2017 15:47
      +1

      От оффиса и вские скипасы скорее всего EM-Marin.


  1. envtmp
    16.03.2017 12:09

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


  1. sotnikdv
    16.03.2017 12:09
    -3

    Я хочу только сказать, что то, что сделал автор абсолютно незаконно и будет являться в лучшем случае административным правонарушением. При этом, как уже здесь указали, сопоставить по нескольким временным отметкам снимки с камер и найти нужного человека на камере — элементарно. Как и во многих случаев отследить чья карта по пополнениям и т.д.

    Тема старая, тема интересная. Мы делали подобное для метрополитена еще лет 15 назад. Мне было просто интересно (я это не эксплуатировал, смысла не было), знакомые решили сэкономить на поездках, еще некоторые знакомые решили составить конкуренцию кассам метрополитена. Третьи сели в вульгарнейшем смысле этого слова, вторые получили хорошие штрафы, я получил хорошее понимание, что исследование это классно, но когда идешь тестировать, даже интереса ради, нужно хорошо понимать, что в этот момент ты ничем формально не отличаешься от злоумышленника.

    Поэтому вы бы ваши испытания в поле проводили бы как нибудь или совершенно легально или (не рекомендуется) максимально анонимно.

    Просто взгляд со стороны.


  1. Bismuth208
    16.03.2017 12:09

    Поразительно, что данные хранятся в настолько открытом виде!
    Жаль, что как написали выше, движок нашей реальности быстро найдет вмешательство такого ArtMoney.


  1. NAI
    16.03.2017 12:10
    +1

    Году в 2008 были уже статьи на тему БСК. С тех пор известно что:
    Количество поездок (баланс) в петрбурге хранится в двух местах — на карте и в БД (метрополитена?). При разнице данных, карта блокируется. Метрополитен подключен напрямую, транспорт синхронизируется раз в сутки (когда транспорт приходит в автопарк).

    Эта та причина, по которой при пополнении карты через интернет, перед использованием ее необходимо приложить к валидатору. Если пополнить баланс и попытаться пройти с несинхронизированными данными — карта лочится.


    1. TeddyJack
      16.03.2017 18:04

      По идее, если в БД баланс больше, а на носителе меньше, то тогда надо при первом контакте перезаписывать носитель в большую сторону. А если на носителе больше, чем в БД, значит был взлом и карту надо блочить.
      А почему карту не использовать просто как идентификатор, а баланс хранить только в БД? Очень медленное к БД обращение?


      1. NAI
        16.03.2017 18:21

        Баланс хранится на карте для наземного транспорта. Если автобус не оснащен интернетом, то как проверять БСК? Скорее всего это некоторый аварийный режим работы (возможно просто пережиток прошлого). В моем первом сообщении конечно же содержится ошибка — карта блокируется только если баланс в БД меньше чем баланс на карте.


      1. Leeb
        16.03.2017 18:23

        В метро очень жёсткие тайминги на работу с картами. ЕМНИП, около 200мс. Сделано для того, чтобы перед турникетами не скапливались очереди.


  1. PEgorov
    16.03.2017 19:44

    А вот давно интересно было, я правильно понимаю, что сейчас возможно склонировать тройку? И ее даже не забанят до тех пор, пока вы не будете делать что-то странное, типа прохода на ВДНХ по оригиналу и проходу на Парке Культуры по клону?


    1. a1ien_n3t
      16.03.2017 20:22

      Нет клонировать не получится. Так-как есть UID карты он прошивается при изготовлении, и не подлежит изменению.
      А от UID рассчитывается имитовставка.


      1. Zolg
        17.03.2017 00:13

        В принципе есть китайские клоны mifare с перезаписываемым нулевым сектором (не баг, а фича)
        Но не факт, что они достаточно клоны с точки зрения турникета метро


      1. BasilioCat
        17.03.2017 00:22

        Не понятно, почему до сих пор никто не сделал эмулятор самой карты Mifare. И почему не отреверсили валидатор из наземного транспорта (они десятками ломаются, наверняка можно найти) для получения алгоритма генерации имитовставки?


        1. Zolg
          17.03.2017 01:30

          Что значит «эмулятор mifare»? Клоны той, или иной степени совмстимости китайцы и не только штампуют многомиллионными тиражами. Думаю, что большинство типа mifare карт внутри содержат чип производства не nxp. Но у 99.9+% этих клонов сектор 0, как и положено, не перезаписываемый.
          «Найти» валидатор из наземного транспорта ?!?!? А зачем ?!?!? Это крайне сомнительное с правовой точки зрения действо выходит далеко за пределы удовлетворения любопытства и имеет смысл только, если вы решили конкурировать с кассами метро, а не просто just for fun разобраться «где лажанули разработчики“. Такие “конкуркнты“ может и “находили» валидаторы, но врядли выложат результаты исследований на гитхаб.
          И, кстати, вам приходилось считывать защищенную от считывания прошивку мк? Не самая простая процедура.


        1. antoo
          19.03.2017 07:17
          +1

          1. KonstantinSpb
            19.03.2017 16:23

            Интересные девайсы, как говорится, всё уже придумано до нас


        1. Konachan700
          21.03.2017 12:35

          В валидаторе чип с аппаратным AES256 на прошивку, типа этого. Ключ внутри чипа, WriteOnly, OTP. JTAG выключен. Оперативка встроена. Что и как там можно реверсить? Даже в условиях крутой лаборатории это сверхсложная и крайне дорогая задача.
          Карты же китайцы худо-бедно отреверсили и продают, специально для копирования, с изменяемым нулевым сектором.


    1. Zolg
      17.03.2017 00:20

      Не совсем. Даже если ее склонировать (о трудностях — в комментариях выше), для использования и оригинала и клона нужно синхронизировать их содержимое после каждого прохода.


  1. kerberos464
    17.03.2017 11:42

    Не знаю, почему, но программа Plantain у меня работает странно — все три имеющихся подорожника опознаёт, показывает их UID, но «почти» не показывает баланс и инфу о последней поездке.
    Говорю «почти» — потому что прикладывал карты сотню раз, а то и больше, но инфу показало только два раза.
    Телефон — Samsung Galaxy S3/747, прошивка — цианоген мод 5.1.1, одна из стабильных.


  1. VereVa
    19.03.2017 13:15

    автор удалил приложение с github :)



  1. Mayflower
    19.03.2017 17:38

    Автор удалил приложение с github, думаю его использование действительно незаконно. Я знаю, что многие хабраюзеры заинтересовались приложением (лично у меня в почте уже 2 письма о нем за последний час). В связи с этим предложение к хабрасообществу: создать на основе текущего кода приложение только с функцией чтения информации (только с ключами A4 и A5), я думаю многим этого очень не хватает.


  1. tech42
    21.03.2017 12:21

    На текущий момент найти выгрузить приложоление можно. Рекомендую автору с концами удалить репозиторий.


    1. Dimchansky
      21.03.2017 13:47

      На github уже 16 форков. Наглядный пример эффекта Барбары Стрейзанд.


  1. KonstantinSpb
    24.03.2017 13:05

    Уже на Фонтанке отметилась новость
    http://www.fontanka.ru/2017/03/23/133/