Записать карту тройка на кольцо nfc

Записать карту тройка на кольцо nfc Подорожник СПБ

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

Рассказываем, как она устроена, и что с ней можно сделать.

Содержание
  1. Зачем нужна карта «Тройка»
  2. Что внутри карты
  3. Какие бывают «Тройки»
  4. Сколько стоит карта «Тройка»
  5. Принцип работы и тарифы
  6. «Кошелек»
  7. «Единый»
  8. «ТАТ»
  9. «90 минут»
  10. Как пополнить карту «Тройка»
  11. Как платить «Тройкой» со смартфона
  12. Где можно платить «Тройкой», кроме транспорта
  13. А ещё «Тройку» можно подарить на новый год
  14. Можно ли ездить по «Тройке» бесплатно?
  15. Карту «Тройка» даже встраивали под кожу
  16. Ксения Шестакова
  17. Записать пополнение баланса на карту «Тройка» с помощью смартфона с NFC и мобильного приложения
  18. Как оформить виртуальную карту «Тройка»
  19. Что внутри у карты «Тройка»?
  20. Как работает карта «Тройка»?
  21. Как пополнять карту «Тройка»?
  22. Можно ли взломать карту «Тройка»
  23. А что ещё делают с этой картой?
  24. Сколько стоят поездки по «Тройке»?
  25. А какие еще есть тарифы?
  26. Основные задачи системы
  27. Пожалуйста, не нужно больше карт!
  28. Все СКУД неудобные
  29. Карта «Тройка» как идентификатор
  30. Apple/Android Pay и банковские карты
  31. Читаем EMV-карты на коленке
  32. Начало коммуникации — команда SELECT (PPSE)
  33. Старт платежного приложения — SELECT AID
  34. Обработка PDOL (Processing Options Data Object List)
  35. Поиск PAN-номера
  36. Первый прототип
  37. Считыватель Parsec
  38. Ключевые особенности считывателя PNR-P03E
  39. Контроллер БОРЕЙ
  40. Управление контроллером
  41. Бюро пропусков в Telegram
  42. FAQ

Зачем нужна карта «Тройка»

Карта «Тройка» – это универсальный проездной для московского общественного транспорта. На неё можно записать любой бумажный билет или билет «Кошелек».

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

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

Что внутри карты

Записать карту тройка на кольцо nfc

Так выглядит самая главная часть карты. Остальное – просто прессованный картон.

Основа «Тройки» (карты, брелока, кольца) — чип NFC (Near Field Communication). В элемент размером 2х2 мм встроены модуль флеш-памяти, радиомодуль и система беспроводного питания. К чипу присоединена антенна из тонкой медной проволоки.

Чип с антенной работает на частоте 13,56 МГц. Питание он получает посредством радиоволн. Активная часть, которая генерирует импульсы, находится в турникете, валидаторе пополнений или смартфоне с NFC.

Для «Тройки» производители выбрали NFC-чипы Mifare Plus производства компании NXP. Они совместимы со старым стандартом Mifare Classic (SL1) и стоят от 2 рублей за штуку, если брать оптом.

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

Но есть нюанс. В социальные карты «Банка Москвы» встроены функции «Тройки». Эти карты с чипами стандарта EMV можно пополнить в банковских терминалах с PayPass.

Какие бывают «Тройки»

Транспортные карты выпускаются в виде карт, браслетов, брелоков и колец.

Записать карту тройка на кольцо nfc

Рисунки разные, но основной – синий.

Карты «Тройка» есть с разным рисунком. Стоят 50 рублей.

На редкие карты идёт настоящая охота. К примеру, карту с цифрой «10 000 000», которая символизировала количество выпущенных «Троек», хотели продать за 1,8 млн рублей, но покупателей не нашлось. Впрочем, часто можно купить редкую карту с рук за 5-10 тыс. рублей.

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

Записать карту тройка на кольцо nfc

Удобная вещь с хорошей дальностью срабатывания. И потерять тяжелее.

Брелоки из прочного пластика можно носить на ключах. Вариантов дизайна много, официальная цена брелока — 300 рублей.

Фишка: брелок можно сточить и положить под чехол iPhone, а затем удобно «платить смартфоном» на турникетах. Подробнее – в нашей статье.

Записать карту тройка на кольцо nfc

Чем-то похожи на браслеты от Apple Watch. Жаль, что несовместимы.

Браслеты «Тройка» впервые показали 10 сентября 2017 года. Тогда волонтёры раздавали их бесплатно в честь дня города. Позднее браслеты стали продавать по 450 рублей.

Записать карту тройка на кольцо nfc

Самый странный аксессуар, а цену вообще ничем не объяснить.

Кольца «Тройка» – самый странный вариант. Обойдётся в 2200 рублей. Водонепроницаемое: выдерживает до 20 атмосфер.

Увы, сделано фактически из пластика. Турникеты реагируют на него медленно. Есть жалобы, что в автобусах не срабатывает с первого раза.

Сколько стоит карта «Тройка»

Записать карту тройка на кольцо nfc

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

Карта обойдётся в 50 рублей. Но это не цена, а залог за пользование.

Если срочно нужны будут деньги, вы можете вернуть «Тройку» в кассу и получить свои 50 рублей обратно. И деньги с баланса «Кошелька» тоже. Минус: формально деньги возвращают в течение месяца.

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

Принцип работы и тарифы

Записать карту тройка на кольцо nfc

В тарифах легко запутаться, это факт.

На карту «Тройка» можно записывать билеты трех тарифов: «Единый» и «90 минут» и «ТАТ». Также есть тариф «Кошелек»: это скорее баланс, с которого могут списываться разные суммы, в зависимости от вида поездки.

«Кошелек»

Начнем с самого простого. «Кошелек» можно пополнить, а затем тратить деньги на проезд. За поездку на метро, монорельсе или наземном транспорте спишется 36 рублей (со 2 января – уже 38 рублей!).

За билет «90 минут» (один проход в метро + любое количество пересадок на трамвае, автобусе, троллейбусе в течение 90 минут) – 56 рублей (58 рублей со 2 января).

«Единый»

Здесь есть два варианта: на количество поездок или на количество дней. Чтобы не запутаться, приводим сразу новые тарифы, которые будут действовать со 2 января.

На карту можно записать 1, 2 или 60 поездок (билеты на 20 и 40 поездок больше продавать не будут). После покупки билетов на 1 и 2 поездки есть 5 дней на их активацию, на 60 поездок – 90 дней (пока не закончатся поездки). Оптом дешевле:

Записать карту тройка на кольцо nfc

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

Записать карту тройка на кольцо nfc

Красное – «Зона А», серое – «Зона Б».

Билеты на 1 и 3 дня нужно активировать не позднее 10 дней с момента продажи. Остальные билеты начинают действовать сразу после покупки.

«ТАТ»

Если вы редко пользуетесь метро и монорельсом, имеет смысл купить билет «ТАТ» на трамвай, автобус и троллейбус. Билеты будут продаваться 1 поездку или на 30 дней, вариант на 60 поездок отменяют.

Цена на одну поездку разная в зонах А и Б:

  • Зона А: «старая Москва» в пределах МКАД и Новомосковский административный округ. Одна поездка обойдётся в 38 рублей
  • Зона Б: Троицкий и Зеленоградский административные округа. Одна поездка здесь стоит 45 рублей

Записать карту тройка на кольцо nfc

Безлимитный билет на 30 дней стоит 1194 рубля. Если ездить два раза в день, то одна поездка в среднем обойдётся в 20 рублей.

«90 минут»

По билету «90 минут» вы можете один раз пройти через турникет метро или монорельса, а также совершить любое количество поездок на трамвае, автобусе и троллейбусе за 90 минут.

Из метро на МЦК можно выйти, дополнительно деньги не спишутся. Одна поездка стоит 59 рублей.

Как пополнить карту «Тройка»

Записать карту тройка на кольцо nfc

Пример терминала пополнения «Тройки» в метро.

Пополнить карту «Тройка» можно без комиссии на сумму от 1 до 3000 рублей.

Кассы и терминалы: на станциях метро, в «Аэроэкспрессе», банкоматах МКБ, «Элекснет», EuroPlat, «Мегафон», Velobike.

В терминалах и кассах метро записывают на карту билеты «Единый» и «90 минут», а билеты «ТАТ» – только в терминалах.

Абонементы на электрички записывают в кассах станций пригородного сообщения, в билетных автоматах на вокзалах, в терминалах «Электричка» и РЖД.

Записать карту тройка на кольцо nfc

Проще всего пополнять «Тройку» в банковских приложениях.

Cо смартфона: в приложении «Метро Москвы», на официальном сайте Тройки, в приложениях банков (Тинькофф, Сбербанк, Альфа-Банк и другие) и платёжных систем («Портмоне», Qiwi, «Яндекс.Денгьги» и другие).

Важно. При пополнении с iPhone нужно активировать операцию с помощью жёлтого валидатора в турникетах метро. NFC-чипы производства NXP в iPhone конфликтуют с чипами из карты «Тройка», поэтому вы не сможете пополнить её напрямую.

А вот на Android-смартфонах пополнение можно совершать встроенным NFC, приложив карту к задней панели девайса.

Как платить «Тройкой» со смартфона

Записать карту тройка на кольцо nfc

Если у вас Android-смартфон с NFC, вы можете не носить с собой карту «Тройка», браслеты или брелоки, а записать данные прямо в гаджет. Для этого есть сервис Мобильный билет».

Что нужно сделать:

1. Поменять у оператора свою SIM-карту на совместимую с сервисом — она будет с NFC-чипом.

2. После того, как вы вставите карту и выйдете в мобильную сеть, на смартфон придет SMS от «Мобильного билета».

3. Отправьте в ответ «1», и с вашего баланса на баланс сервиса спишутся 150 рублей. Их можно будет использовать для оплаты проезда.

4. Сервис автоматически пополняет свой баланс с баланса мобильного, когда на проезд остаётся меньше 90 рублей. Все операции подтверждаются SMS с номера 3210.

Если отправить «0» на номер 3210 и выключить «Мобильный билет» через SIM-меню, сервис деактивируется. Но деньги с баланса никуда не денутся — как только активируете сервис снова, можно будет их тратить.

Список поддерживаемых смартфонов есть здесь. iPhone в нём, понятное дело, нет, но можно «заколхозить» и ни в чем себе не отказывать.

Теоретически можно и подложить карту под чехол. Правда, срабатывать она будет редко. Но вот здесь есть лайфхак, который это исправит.

Где можно платить «Тройкой», кроме транспорта

Записать карту тройка на кольцо nfc

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

Оплатить проход к достопримечательностям также можно «Тройкой». Средства спишутся с «Кошелька». Это удобно: в очереди за билетом стоять не нужно, сильно экономит время и нервы.

Список достопримечательностей внушительный — в него, к примеру, входят Третьяковская галерея в Лаврушинском переулке, и Музей «Лунариум» Московского Планетария, а также Музей советских игровых автоматов, ЦПКиО им. Горького и каток в нём, Московский зоопарк.

В парке «Зарядье» на проход на объекты и мероприятия Медиацентра, Заповедного посольства и Подземного музея при оплате картой «Тройка» дадут скидку 5%, также можно будет оплатить парковку. В «Экспериментариуме» и интерактивном музее «Живые системы» карта дает скидку 10%.

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

В остальных случаях можно купить любое количество входных билетов, на которые хватит лимита «Кошелька». Не забудьте заранее его пополнить!

А ещё «Тройку» можно подарить на новый год

Записать карту тройка на кольцо nfc

Это лимитированная коллекция к Новому году.

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

Купить брелоки можно в сувенирных витринах на стойках «Живое общение» московского метро (они работают с 8:00 до 20:00 на некоторых станциях метро) и в сувенирных магазинах на станциях «Маяковская» и «Трубная». Полезный подарок каждому по карману, пополнить можно на любую комфортную сумму.

Но стоит поторопиться! Брелоков всего 2 тыс., на всех может не хватить 🙂

Можно ли ездить по «Тройке» бесплатно?

Записать карту тройка на кольцо nfc

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

По сети гуляет инструкция по взлому «Тройки». Оригинал лежит здесь.

Суть в следующем: с помощью Android-смартфона с NFC-чипом производства NXP и приложения TroikaDumper, созданного Ильёй Шевцовым, можно получить доступ к памяти карты и изменить данные в ней.

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

Но это чревато: если пополняете карту больше, чем на 100 рублей, система обнаруживает подделку и блокирует «Тройку». Да и вообще это уголовная статья за мошенничество в сфере компьютерной информации.

Карту «Тройка» даже встраивали под кожу

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

Инженер Влад Зайцев, к примеру, решил вшить чип от карты «Тройка» в руку. А заодно и настроить дверной замок в офисе на открытие с помощью этого чипа.

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

Но что-то пошло не так. Зайцев неправильно рассчитал параметры антенны, и карта срабатывала не на всех станциях.

В итоге инженер вынул «Тройку» из-под кожи. А на её место имплантировал чип от банковской карты — дескать, так полезнее и удобнее.

Ксения Шестакова

Живу в будущем. Разбираю сложные технологии на простые составляющие.

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

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

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

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

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

Читайте также:  Потерянные и найденные: Основное руководство по поиску вещей в метро Санкт-Петербурга

Сейчас платёж можно активировать и другими способами, например, в терминалах «МКБ», «МегаФон», «Европлат», киосках «Аэроэкспресс».

Но нас интересует более современный способ, а именно:

Записать пополнение баланса на карту «Тройка» с помощью смартфона с NFC и мобильного приложения

По состоянию на сентябрь 2021 года такая возможность есть у смартфонов с операционной системой Android и оснащенных модулем . В скором будущем обещается поддержка гаджетов на других операционках, на iOS такое приложение уже есть, но записать платёж через смартфон на саму Тройку пока нельзя, можно только пополнить баланс.

Записать карту тройка на кольцо nfc

Итак, по порядку:

  • Загружаете и открываете мобильное приложение «Метро Москвы» (или «Московский транспорт» и «Мой проездной»), регистрируетесь в нём по номеру телефона и заходите в личный кабинет.
  • Добавляете свою карту Тройка, в том числе , — вводите её 10-значный номер или прикладываете карту к задней крышке смартфона, там где расположен чип NFC — номер распознается автоматически.
  • Заходите в меню и кликаете ссылку «Пополнить баланс»
  • Выбираете способ оплаты при помощи банковской карты или, например, Google Pay
  • Указываете сумму пополнения или выбираете билет (Единый, ТАТ на 30 дней и пр.)
  • После оплаты появляется ссылка «Ожидает записи» — опять Тройка прикладывается к задней крышке смартфона и происходит пополнение баланса.

Записать карту тройка на кольцо nfc

Как видите ничего сложного!

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

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

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

В Москве с 16 декабря 2021 года для всех пассажиров заработала виртуальная транспортная карта «Тройка». Электронный аналог Тройки можно оформить в личном кабинете мобильного приложения «Метро Москвы».

Больше не понадобится никаких лишних пластиковых или банковских карт, не надо будет стоят в очередях за билетами, отпадёт за ненадобностью необходимость «записать» платеж в смартфоне с NFC или в жёлтом терминале у касс метро – проездной теперь находится прямо в вашем устройстве!

Ещё весной 2021 года Департамент транспорта и развития дорожно-транспортной инфраструктуры города Москвы (Московский Транспорт) набрал экспериментальную группу для тестирования виртуальной транспортной карты «Тройка». И это означало что уже совсем скоро всем желающим станет доступным инновационный способ оплаты проезда с помощью смартфона — как по аналогии с оплатой на турникете с банковской картой, добавленной такие в платежные сервисы как GooglePay, ApplePay, Samsung Pay и т.п.

Сейчас же электронная карта «Тройка» доступна всем! Тестирование завершилось, специалисты всё проверили, обновлённое мобильное приложение «Метро Москвы» появилось в магазине приложений и теперь вы сможете загрузить его к себе на смартфон.

После оформления виртуальной карты «Тройка» оплачивать проезд смартфоном со встроенным модулем NFC станет возможным везде, где ранее принимались бесконтактные банковские карты: в метро, городских автобусах, трамваях и электробусах, Московских центральных диаметрах (МЦД) и Московском центральном кольце (МЦК). Турникеты с бесконтактными терминалами вы узнаете по специальной наклейке, либо информация о возможности оплаты кредиткой будет указана на мониторе рядом.

В 2022 году в электронной «Тройке» появится «Кошелек» и другие типы билетов. Пока же можно купить следующие абонементы: «ТАТ» на 30 дней для поездок на наземном транспорте Москвы, «Единый» на 30, 90 и 365 дней — с возможностью безлимитных поездок в зонах «Центральная» и «Пригород». Их стоимость будет такой же, как и у физических карт.

Как оформить виртуальную карту «Тройка»

1. В разделе «Кабинет» мобильного приложения «Метро Москвы» кликните на знак «ПЛЮС» рядом с картинками ваших карт Тройка.

Записать карту тройка на кольцо nfc

2. В новом открывшемся окне с вопросом «Какую карту Вы желаете добавить?» выберите «Выпустить виртуальную карту Тройка».

Записать карту тройка на кольцо nfc

Ознакомьтесь с возможностями «Виртуальной Тройки» и нажмите «Выпустить карту».

3. Выберите электронный кошелёк (в данном примере — это Google Pay), в который вы желаете добавить «Виртуальную Тройку», тип билета, способ оплаты и кликните кнопку «Выпустить». Дождитесь успешного завершения оплаты.

Записать карту тройка на кольцо nfc

4. Перейдите в настройки и убедитесь, что кошельком по умолчанию указан Google Pay.

Записать карту тройка на кольцо nfc

5. После успешного выпуска виртуальной карты «Тройка» нажмите «Добавить в Google Pay».

Записать карту тройка на кольцо nfc

В открывшемся приложении Google Pay кликните «Продолжить».

6. Ознакомьтесь с условиями использования сервиса GPay и выберите кнопку «Принять».

7. Ознакомьтесь с условиями выпуска и обращения электронной карты «Тройка» и нажмите «Принять условия и продолжить».

Дождитесь сохранения транспортной карты.

Записать карту тройка на кольцо nfc

8. По окончании процесса вы увидите токен виртуальной транспортной карты «Тройки» в электронном кошельке Google Pay.

Записать карту тройка на кольцо nfc

Всё! После подключения вы сможете оплачивать проезд виртуальной картой «Тройка», загруженной в кошелёк смартфонов на ОС Android с модулем NFC.

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

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

Кстати, теперь активировать баланс «Тройки» можно прямо в автобусе

Электронная карта «Тройка» заменяет бумажные билеты для проезда на общественном транспорте и жетоны метро.

Появилась она 2 апреля 2013 года и сегодня умеет гораздо больше, чем изначально: к примеру, «Тройкой» можно оплатить посещение Третьяковской галереи или катание на катке ВДНХ.

Как же устроена карта «Тройка» с аппаратной точки зрения и как она работает? Есть ли дыры в её системе безопасности и можно ли превратить карту «Тройка» в вечный бесплатный проездной?

Записать карту тройка на кольцо nfc

Что внутри у карты «Тройка»?

В основе карты «Тройка» – чип NFC (Near Field Communication), который включает модуль флеш-памяти, радиомодуль и систему беспроводного питания.

Карта использует чип Mifare Plus производства компании NXP в режиме совместимости с устаревшим стандартом Mifare Classic (SL1). Купить такие чипы на AliBaba можно по цене от 2 рублей за штуку (при условии оптового заказа).

Размер самого чипа – около 2 мм (квадратик в правом верхнем углу метки), остальное – антенна из тонкой медной проволоки. Устройство обменивается с турникетом данными в цифровом формате с помощью радиоволн частотой 13,56 МГц. Волны также обеспечивают питание чипа.

Записать карту тройка на кольцо nfc

Отметим, что бесконтактную технологию MasterCard PayPass карта «Тройка» не поддерживает. Поэтому записать или считать с неё информацию в терминалах с PayPass вы не сможете.

Такие терминалы работают с социальными банковскими картами «Банка Москвы» с банковским приложением «Тройка». Это карты с чипом, поддерживающие стандарт EMV и ввод PIN-кода.

Как работает карта «Тройка»?

На карту записывается информация о билетах на общественный транспорт Москвы. Сохранять в памяти можно и разовые билеты, и проездные. Если у вас на карте одновременно находится и то, и другое, то сначала срабатывает проездной билет.

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

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

Система довольно запутанная, поэтому не будем напрягать вас цифрами и буквами – вот «коротенький FAQ» от разработчиков.

Как пополнять карту «Тройка»?

Записать карту тройка на кольцо nfc

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

Также карту можно пополнить через SMS или онлайн – на сайте «Тройка», в приложении вашего банка, платёжных системах вроде «Портмоне».

На iPhone пополнять карту «Тройка» удобно с Apple Pay в приложении «Метро Москвы».

Только не забудьте активировать пополнение с помощью желтого валидатора в турникетах метро! Хоть Apple и использует NFC-чипы производства NXP, они конфликтуют с чипами из карты «Тройка».

Есть версия приложения «Метро Москвы» и для Android. Для проведения операции потребуется смартфон с NFC. Пополняете счёт в приложении, прикладываете карту к смартфону и пользуетесь – всё просто.

Аналогичным образом работает пополнение в приложении «Мой проездной».

Пополнять карту можно и из других систем вроде Qiwi и «Яндекс.Денег». Смартфон с NFC в любом случае используется только для активации пополнения – вместо желтого валидатора в терминале.

Но разработчики предупреждают, что не все NFC-чипы поддерживают Mifare Classic. Так что вероятность отказа в пополнении существует.

Можно ли взломать карту «Тройка»

Записать карту тройка на кольцо nfc

Автор, Илья Шевцов (ник Ammonia), утверждал, что для безлимитных поездок потребуется смартфон под управлением Android 4.4 и выше с NFC чипом, поддерживающим карты Mifare. Важно, чтобы чип был производства NXP, как и в карте «Тройка».

Суть взлома сводится к клонированию карты на смартфоне и пополнению её баланса без реальных денег. Вы же помните, что билеты можно записать на карту из официальных приложений, передав данные с NFC-чипа смартфона?

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

Шевцов разработал приложение TroikaDumper, чтобы не выполнять все операции вручную. Разработчик также рассказал, что система может обнаружить подделку, если пополнять «Тройку» больше чем на 100 рублей за раз или если не обновить текущее время на карте с помощью валидатора в другом виде транспорта.

Записать карту тройка на кольцо nfc

Пост о взломе с «Хабра», понятное дело, быстро удалили. А вот код приложения и инструкцию к нему с GitHub – нет.

Опасно ли это? Как минимум вы рискуете картой и балансом на ней – если взлом обнаруживается, карта блокируется. Кроме того, за воровство и нанесение ущерба транспортным службам в России предусмотрена уголовная ответственность.

А что ещё делают с этой картой?

Записать карту тройка на кольцо nfc

Если вы считаете, что ещё одна пластиковая карта – это вовсе не стильно, модно, молодёжно, можете купить вместо неё силиконовый браслет вроде тех, что выдают в ночных клубах или аква-парках, или кольцо. Выпускаются также брелоки и другие аксессуары.

По сути любой из них – тот же NFC-чип, только в новой обёртке. Разницы в использовании нет, разве что в терминалах, которые требуют вставить карту в приёмник, браслет, брелок или кольцо пополнить не получится.

Инженер Влад Зайцев пошел дальше. Два года назад он вшил NFC-чип из карты себе под кожу. Это позволило не только оплатить проезд, не доставая карту из кармана, но и открывать тем же чипом дверь в офисе.

Чтобы вынуть NFC-чип, карту растворили в ацетоне. Затем чип залили биосовместимым силиконом и через небольшой надрез поместили под кожу на тыльной стороне кисти.

Кроме того, Зайцеву пришлось договориться с банком, чтобы он предоставил микросхему. В видео есть немного кровавых подробностей и пример работы:

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

Зайцев извлёк чип и позднее признался, что пользуется обычной картой «Тройка». А на место старого чипа он имплантировал новый – от банковской карты.

Сколько стоят поездки по «Тройке»?

Записать карту тройка на кольцо nfc

Сама карта стоит 50 рублей. Но формально это залоговая сумма – вы можете сдать карту в кассу и вернуть свой «полтинник». Деньги со счёта, к слову, тоже можно вернуть. Но только с баланса, а не с проездных билетов.

Пополнить карту можно на сумму до 3 000 рублей и кататься на эти деньги хоть пять лет.

Цены на проезд такие:

  • 35 рублей: поездка на метро, монорельсе, МЦК или наземном транспорте
  • 54 рубля: один раз проехать в метро и несколько – общественным транспортом (с пересадками)

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

А какие еще есть тарифы?

Одна или две поездки по тарифу «Единый» на метро или общественном транспорте стоят 55 рублей каждая, и если брать билет на 60 поездок, то будете тратить на это всего 28,3 рубля (проездной в этом случае стоит 1700 рублей).

Можно записать и проездной на определённое количество дней. Цена – от 210 рублей на сутки до 18 200 на год. Можно кататься хоть круглосуточно и ни в чём себе не отказывать.

Записать карту тройка на кольцо nfc

Проездной «ТАТ» – на трамвай, автобус и троллейбус. 60 поездок обойдутся в 1150 рублей, то есть по 19,2 рубля за поездку.

Безлимитный проездной на месяц – 1040 рублей.

Наконец, проездной «90 минут» – одно списание денег за один проезд на метро и сколько угодно пересадок на наземном транспорте за 90 минут. 60 поездок обойдутся в 2650 рублей, или 22,4 рубля за поездку на метро + столько же за все поездки на общественном транспорте в течение полутора часов.

Проездные на десятки поездок выгодны, так как действуют 90 дней. Но если вы делаете больше двух путешествий из точки А в точку Б без учёта пересадок каждый день, имеет смысл записать на карту проездной на месяц или на год.

А если приехали в столицу в гости или по делам, то ваш вариант – проездной «Единый» на 3 или 7 суток, цена – 400 или 800 рублей соответственно.

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

Читайте также:  В чем заключается особенность петербургского метро? Что такое метрополитен и Метро Санкт

Но об этом расскажет Никита в следующий раз.

Абсолютно всё, что нужно знать про главную NFC-карту Москвы.

Доводилось ли вам слышать на эскалаторе объявление о том, что можно заблаговременно приобретать проездные билеты для того, чтобы не стоять в очередях у окошек, в которых служащие метрополитена продают проездные билеты?

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

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

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

Самые критические функции, связанные с привязкой банковской карты, проведением платежа по ней и работе с профилем клиента, были нами сделаны быстро, так как это отлаженный и стабилизированный функционал.

При решении задач, связанных с разработкой интеграционного слоя между смартфоном и бесконтактной картой, нами использовались стандартные системные библиотеки, лицензированные владельцем технологии – компанией «NXP Semiconductors». Основной проблемой стало собственно определение типа NFC-контроллера.

Изначально предполагалось использовать стандартные функции, позволяющие при старте аппликации определять – поддерживает ли установленный NFC-контроллер взаимодействие с картами стандарта «Mifare Classic» или нет. В итоге пришлось модифицировать уже согласованный дизайн, поскольку выяснилось, что довольно большой процент бюджетных китайских смартфонов, оборудованных NFC-контроллером, всё-таки прекрасно поддерживает взаимодействие с «Тройкой», но при этом системная функция возвращала совершенно иной ответ.

Вообще, читая отзывы на маркете, начинаешь понимать несущественные на первый взгляд упущения. Так, например, многие думают, что бумажные билеты и карта «Тройка» – это одно и то же, и сильно удивляются, почему их карту приложение «Яндекс.Метро» читает, а приложение «Мой проездной» – нет. На самом деле, это совсем не так, «бумажные» билеты реализованы на носителях стандарта «Mifare Ultralight», а карта «Тройка» (на самом деле многоразовый носитель) использует стандарт «Mifare Classic», а это две большие разницы. Мы, кстати, в ближайших релизах поддержим чтение баланса «бумажных» билетов.

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

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

Время на прочтение

Записать карту тройка на кольцо nfc

TL;DR В статье описывается процесс создания системы контроля доступа (СКУД), в которой в качестве идентификатора могут использоваться карты Тройка, любые бесконтактные банковские карты EMV, а также телефоны с Apple Pay и Android Pay. Управление системой происходит через Telegram-бота.

Основные задачи системы

  • Избавиться от лишних карт — в качестве идентификатора используется то, что уже есть у пользователя: транспортная карта, телефон или банковская карта. Какой идентификатор использовать — каждый выбирает сам. Система работает со всеми типами идентификаторов одновременно.
  • Избавиться от бюро пропусков и сложных программ управления — нам надоело выдавать и забирать карты у пользователей, держать отдельные компьютеры для управления пропусками, изучать переусложненные программы.
  • Управление через Telegram — заведение и удаления пользователей происходит удаленно и не требует компьютера.

Пожалуйста, не нужно больше карт!

Записать карту тройка на кольцо nfc

Сейчас каждый хочет всучить вам свою карту: магазины, фитнес-клубы, парковки, бизнес-центры, VIP-скидки-баллы-накопления. Предлагать человеку носить с собой еще одну карту просто унизительно. А учитывая, что карты стандарта EM-Marine (125kHz), которые популярны в системах контроля доступа на территории СНГ, имеют толщину в три раза больше обычных ISO 7810 — это втройне унизительно.
Поэтому первое требование к нашей системе — никаких дополнительных карт.

Записать карту тройка на кольцо nfc

Сравнение толщины карт Em-Marine и ISO7810

Помимо физических размеров, карты EM-Marine технологически отсталые. Такую карту можно легко клонировать с расстояния полуметра прямо из кармана прохожего.

Видео с демонстрацией: www.youtube.com/watch?v=qvIIUny4EWI
На видео показано считывание тонкой карты em4100 с расстояния 50см, толстые карты читаются с большего расстояния.

Все СКУД неудобные

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

В некоторых случаях сложные СКУД необходимы: в крупных зданиях с множеством зон доступа, турникетами, охраной, временными пропусками.

В случаях, когда контролировать доступ нужно к одной или двум дверям, такие усложнения не оправданы. Даже содержание отдельного компьютера с программой под СКУД — перебор для нас.

У нас нет отдельных сотрудников, занимающихся выпуском пропусков, нет временных пропусков и охраны. Администрирование системы должно быть настолько простым, чтобы любой новый человек мог быстро её освоить без инструкций. Так как ответственного за СКУД человека может не быть на месте, управление системой должно быть удаленным.

Карта «Тройка» как идентификатор

Карта «Тройка» — пополняемая карта для оплаты проезда на всех видах общественного транспорта Москвы. Это наиболее выгодный и удобный способ оплаты общественного транспорта и некоторых городских услуг: планетарий, каток, зоопарки, Третьяковская галерея, парковка. Поэтому «Тройка» есть у каждого москвича, который регулярно пользуется общественным транспортом. Приобрести карту можно в кассах метрополитена за ≈1$.

Технически карта выполнена на базе чипа Mifare Plus, работающего в режиме SL1 — режим эмуляции Mifare Classic 1K. На обратной стороне карты находится 10-значный номер, который используется для удаленного пополнения баланса карты. Этот номер удобно использовать в качестве идентификатора в СКУД.

Записать карту тройка на кольцо nfc

Номер карты «Тройка», записан в памяти карты в 32-м блоке 8-го сектора. Для чтения защищенной области памяти необходим шестибайтный ключ, который давно не является таким уж секретным.

Номер карты «Тройка» (не путать c UID чипа) хранится в защищенной памяти в блоке 32 со второго байта по младшие четыре бита седьмого байта. Для чтения этой области памяти необходим А-ключ от сектора 8. Эти ключи давно не являются секретом и легко находятся в интернете вместе с подробным описанием формата хранения данных. Так как мы не собираемся записывать никакие данные на карту, нам достаточно ключа А для чтения нужного сектора.

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

Вопросы безопасности такого подхода рассматриваются в FAQ в конце статьи. Примеры кода для чтения номера карты Тройка с помощью Arduino есть в главе «Первый прототип».

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

Apple/Android Pay и банковские карты

Записать карту тройка на кольцо nfc

Платежные инструменты с разными названиями работают по одному протоколу EMV

Все платежные инструменты, изображенные на картинке выше, работают по одному протоколу EMV, свободно доступному на сайте EMVco.com. Поэтому говоря «EMV-карта», мы будем подразумевать одновременно Apple Pay, Android Pay, Samsung Pay, Visa PayWave, MasterCard PayPass.

Существует заблуждение, будто POS-терминал должен отдельно поддерживать Apple/Android Pay, поэтому пользователи предпочитают искать на кассе специальную пиктограмму, чтобы быть уверенным, что их платежный инструмент поддерживается. На самом деле, почти везде, где поддерживается бесконтактная оплата, будет работать любое устройство.

Бесконтактные EMV-карты (и контактные тоже) позволяют без авторизации, то есть без ввода PIN-кода, считать данные, обозначенные ниже. В последней главе мы рассмотрим, почему это достаточно безопасно.

Некоторые карты не передают реквизиты Cardholder Name и лог транзакций, но PAN (номер карты) передается всегда. Этот номер не изменяется на протяжении всего срока действия карты.

Поэтому именно PAN мы решили использовать в качестве идентификатора для пропуска в СКУД. Для простоты и большой приватности, было решено использовать последние 10 цифр от номера карты. Таким образом, формат идентификатора получается такой же длины, как и номер карты Тройка.

В итоге, в базе данных идентификаторов мы имеем однородные записи длинной в 10 цифр, без необходимости дополнительно помечать где карта Тройка, а где EMV-карта.

Читаем EMV-карты на коленке

Чтобы изготовить прототип считывателя, мне потребовалось бегло изучить протокол EMV. Под спойлером — краткий разбор протокола EMV с примерами чтения на Arduino и компьютере.

Читаем банковские карты на коленке с примерами. (Много текста)

Для чтения EMV карт подойдут такие устройства:

  • PN532 breakout board + Arduino — pn532 лучше всего подключать к Arduino по SPI. Логические уровни чипа pn532 — 3.3V, поэтому удобнее использовать Arduino pro 3.3V, чтобы избавиться от конвертера уровней. Пример кода для чтения EMV-карт есть в моем форке библиотеки Adafruit PN532, c исправлениями для чтения EMV-карт.
  • PN532 breakout board + адаптер USB-TTL — плату PN532 можно подключать через UART-адаптер к компьютеру и пользоваться набором библиотек libnfc
  • Любой PC/SC-совместимый ридер — такие как ACR122U, HiD Omnikey и многие другие.

Описанный ниже процесс не является корректной реализацией протокола EMV. Приведенные команды APDU содержат ошибки и нарушают рекомендации EMVco, из-за чего могут не работать с некоторыми картами.

Для изучения протокола EMV рекомендуется читать официальную документацию, которую я, к своему стыду, почти не читал.

Приведенные APDU-команды будут одинаковыми не зависимо от выбранного оборудования. Однако в случае с PC/SC ридером не нужно заботиться о низкоуровневых командах, настраивать модуляцию и т.д.

Я буду использовать программу SmartCard Scripter, в связке с PC/SC-ридером HiD Omnikey. Программа SmartCard Scripter имеет наиболее компактный pascal-подобный синтаксис из всего что я видел. Краткое описание синтаксиса infintuary.org/scs_tut.php

Для того чтобы послать произвольную APDU команду на карту, достаточно такого когда:

// Программа для чтения UID карты
begin
APDU(‘FF CA 00 00 00’);
end.

Начало коммуникации — команда SELECT (PPSE)

Официальное описание: EMV Contactless Specifications — PPSE and Application Management for Secure Element

Начало общения с EMV-картой всегда происходит с чтения файла PPSE (Payment System Environment) командой SELECT.

APDU-команда SELECT PPSE

’00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00′
00 A4 04 00 // команда select
0E // длина command data (14 байт)
32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 // command data 2PAY.SYS.DDF01
00 // завершающий маркер

Старт платежного приложения — SELECT AID

В ответ на SELECT PPSE карта должна вернуть FCI (File Control Information) со списком приложений, существующих на карте. Помимо платежных приложений (VISA, MasterCard, AmericanExpress) карта может содержать неплатежные приложения, используемые для других нужд.

Ответ карты VISA на SELECT PPSE

‘6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00’

Для удобства проанализируем ответ с помощью онлайн-парсера формата TVL emvlab.org/tlvutils/. Тот же ответ карты VISA, обработанный парсером:

Записать карту тройка на кольцо nfc

Из всего этого нас интересует только идентификатор платежного приложения (AID). В данном случае, это значение A0000000031010, означающее Visa International.

AID помечается маркером 4F. Вторым битом после маркера следует длина данных, в нем содержащихся. Несмотря на то, что длина AID может варьироваться от 5 до 16 байт, в большинстве случаев она равна 7 байтам. Поэтому для простоты поиска AID в ответе, мы будем искать маркер 4F 07 и считать 7 байт после него как AID. Такой подход очень примитивный и может не работать в случаях, если длина AID будет другой, но для нашей задачи это не важно, так мы скорее всего никогда не столкнемся с картами, отличными от Visa и MasterCard. Поэтому наш самодельный парсер PPSE-ответа можно упростить до такой логики: если ответ начинается с 6F, заканчивается на 90 00 и содержит внутри последовательность 4F 07, ответ считается корректным.

Полный список AID: eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

Некоторые популярные AID

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

Получив значение AID, его нужно запустить командой SELECT. В данном случае мы запускаем приложение Visa International, полученное из ответа на PPSE SELECT

APDU-команда SELECT AID

’00 A4 04 00 07 A0 00 00 00 03 10 10′
00 A4 04 00 // команда select
07 // длина command data (7 байт)
A0 00 00 00 03 10 10 // AID Visa International

Обработка PDOL (Processing Options Data Object List)

В ответ на запуск платежного приложения карта может затребовать от считывателя PDOL (Processing Options Data Object List). Это набор параметров POS-терминала — поддерживаемые протоколы и стандарты, валюта, в которой будет производиться расчет, дата, случайное число для криптографии, и так далее.

Список PDOL может различаться у разных карт. Общее число параметров PDOL — несколько десятков. Полный список параметров PDOL можно посмотреть здесь: eftlab.co.uk/index.php/site-map/knowledge-base/145-emv-nfc-tags.
Сложность состоит в том, что список PDOL у разных карт, даже выпущенных одним банком в разное время, может существенно различаться. Некоторые карты запрашивают два-три параметра, другие — десяток.

Читайте также:  Как платить в общественном транспорте в санкт петербурге

Это очень важный момент, так как некоторые карты могут отказаться работать без корректного ответа PDOL. Поэтому, для получения PAN-номера от всех карт, нам придется прикинуться настоящим POS-терминалом. Напомню, что единственной нашей целью является получения PAN-номера. Поэтому попытаемся сформировать максимально простой, но при этом корректный ответ PDOL.

Ответ карты на старт платежного приложения. Содержит запрос PDOL.

‘6F 31 84 07 A0 00 00 00 03 10 10 A5 26 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 BF 0C 08 9F 5A 05 60 08 40 06 43 90 00’

Пропустим этот ответ через парсер:

Записать карту тройка на кольцо nfc

Видно, что значение PDOL начинается с маркера 9F38 и равно 9F66049F02069F03069F1A0295055F2A029A039C019F3704. Парсер emvlab.org не умеет парсить значения PDOL, поэтому воспользуемся программой для Android-смартфонов Credit Card Reader.

Вот тот же ответ, обработанный более умным парсером. Видно каждый параметр PDOL:

Записать карту тройка на кольцо nfc

Данный парсер не скрывает байт длины после маркера, как это делает emvlab.org. Поэтому последний байт каждого маркера следует читать как длину.

Разберем запрос PDOL подробнее

9F 38 18 // Маркер начала PDOL. Длина 18 (24 байта)
9F 66 (длина 04) // Terminal Transaction Qualifiers (TTQ). Параметры платежного терминала
9F 02 (длина 06) // Сумма списания
9F 03 (длина 06) // вторая сумма
9F 1A (длина 02) // Код странцы в формате ISO3166-1
95 (длина 05) // Terminal Verification Results
5F 2A (длина 02) // Код валюты, в которой работает терминал, в формате ISO4217
9A (длина 03) // Дата в формате YYMMDD
9C (длина 01) // Тип транзакции
9F 37 (длина 04) // Случайное число для криптографии

Подробное описание всех возможных параметров PDOL можно найти в EMV Contactless Specifications Book C-1/2/3 Kernel 1/2/3 Specification.

Карта ожидает ответ на PDOL в том же порядке, в котором следуют запросы, и ровно той длины, которая указана после каждого параметра PDOL. Если сложить длину всех параметров (последний байт каждого параметра), получится 33 байта. Значит карта ожидает от считывателя PDOL длиной в 33 байта.

Так как мы не собираемся списывать с карты деньги, наша задача — сформировать самый простой из возможных ответ PDOL, который удовлетворит карту. Если наш ответ не понравится карте, она ответит кодом 6985 Conditions of use not satisfied.

Экспериментальным путем я выяснил, что почти на все запросы PDOL можно ответить нолями, кроме Terminal Transaction Qualifiers (TTQ). В случае с VISA, нам нужно убедить карту в том, что терминал соответствует спецификации VCPS 2.1.1. Для этого ответ на TTQ должен выглядеть так:

‘F0 00 00 00’

Подробнее про формат TTQ здесь.

Карты MasterCard, которые мне довелось испытать, позволяли игнорировать PDOL и отдавали PAN-номер без корректного ответа на PDOL.

Вот как будет выглядеть минимальный рабочий ответ на запрошенный выше PDOL:

’80A80000238321F0000000000000000000000000000000000000000000000000000000000000000000′
80 A8 00 00 // Команда GET PROCESSING OPTIONS (GPO)
23 // длина всего запроса (35 байт)
83 // маркер PDOL-ответ
21 // длина PDOL-ответа (33 байта)
F0 00 00 00 // Terminal Transaction Qualifiers (TTQ)
00 00 00 00 00 00 // Сумма списания
00 00 00 00 00 00 // Вторая сумма
00 00 // Код страны считывателя
00 00 00 00 00 // Terminal Verification Results (TVR)
00 00 // Валюта
00 00 00 // дата
00 // тип транзакции
00 00 00 00 // Случайное число

Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера 77 с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)

Поиск PAN-номера

Так как нам лень писать полную имплементацию протокола EMV, разбирать все структуры ответов и формировать корректные запросы, мы поступим глупым способом, а именно пошлем все возможные запросы и будем просто искать в ответах нужный маркер, содержащий PAN-номер.

PAN-номер может содержаться в трех местах:

  • Track 2 Equivalent Data — маркер 57. Может иметь длину от 0 до 19 байт, но обычно всегда равен 13 (19 байтам). Поэтому как маркер можно использовать последовательность 57 13. Первые 8 байт всегда содержат PAN-номер.
  • Application Primary Account Number (PAN) — маркер 5A. Всегда имеет длину 8 байт, поэтому можно искать как маркер последовательность 5A 08. Содержит только PAN номер.
  • Track 2 Data — маркер 9F 6B» — . Длина обычно 13 байт. Содержит PAN номер и другую информацию.

APDU-команды (что они значат вообще? Хз, нужно прочитать)

’00 b2 01 1c 00′
’00 b2 01 0c 00′
’00 b2 02 0c 00′
’00 b2 01 14 00′
’00 b2 02 14 00′
’00 b2 04 14 00′

И парсим все ответы на предмет маркеров 57 13 либо 5A 08. Найденные 8 байт карты можно дополнительно чекнуть на контрольную сумму с помощью Алгоритма Луна.

Если номер валидный, берем его последние десять цифр.

В итоге наш примитивный алгоритм чтения PAN-номера можно изобразить в виде блок-схемы

Записать карту тройка на кольцо nfc

Первый прототип

Было решено использовать в качестве идентификатора пользователя 10-значный номер, который будет формироваться либо из десяти последних цифр PAN-номера платежной карты, либо из номера карты «Тройка». Идентификатор должен передаваться контроллеру, который будет сверять его с хранящимися в базе данных номерами и решать, открывать дверь, или нет.

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

Так родился первый прототип считывателя на Arduino + PN532 breakout board.
Видео с демонстрацией работы прототипа: www.youtube.com/watch?v=aXNvjuRrCQk

Скетч для Arduino, показанный в видео, выложен здесь: github.com/zhovner/Adafruit-PN532, в папке examples/ApplePay_Troyka_ACS
Данный код довольно плохой, потому как не генерирует ответ PDOL, из-за чего не все EMV-карты будут успешно прочитаны. Однако он позволяет понять общую логику работы системы описанной в статье.

Считыватель Parsec

С самого начала мы не хотели городить кустарные поделки на arduino или raspberry pi, поэтому стали искать решение на базе промышленного оборудования.

Так как на рынке готовых решений не существует устройств даже примерно похожих на то, что нам было нужно, мы стали спрашивать у всех производителей СКУД, кто сможет реализовать наши извращенные фантазии в своем оборудовании.

Единственной компанией, которая стала с нами разговаривать, были Parsec.ru
В итоге они согласились реализовать наши идеи в прошивке своего считывателя PNR-P03E.

Записать карту тройка на кольцо nfc

Parsec PNR-P03E позвоялет запрограммировать любой нестандартный алгоритм чтения карт

Большинство RFID-считывателей, которые доступны в продаже, поддерживают только определенный формат идентификаторов. Например Mifare, HiD iClass и т.д.

Нам же требовалось, чтобы считыватель поддерживал одновременно несколько форматов карт, и реализовывал нестандартный протокол чтения EMV-карт.

Ключевые особенности считывателя PNR-P03E

  • Программируемый алгоритм чтения карт — возможность загрузки нестандартной прошивки позволяет реализовать любую логику считывания карт, в том числе одновременную поддержку карт EMV, «Тройки» и любых других. Функциональность считывателя может быть расширена обновлением прошивки.
  • Поддержка различных интерфейсов подключения контроллера — считанный идентификатор передается на контроллер по любому из доступных протоколов: Wiegand от 26 до 58 бит, OSDP (RS-485, RS-232), Touch memory (I-Button) и собственный проприетарный протокол Parsec
  • Отделяемый антенный модуль — плата имеет линию перфорации, позволяющую отделить антенну от основного модуля для удобства интеграции в корпус
  • SDK для разработки — библиотеки с примерами кода позволяют интегрировать считыватель в свои проекты

Блок-схема, иллюстрирующая работу считывателя. При успешном считывании идентификатора, он передается на контроллер по протоколу Wiegand.

Записать карту тройка на кольцо nfc

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

Контроллер БОРЕЙ

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

Часто контроллеры СКУД состоят из нескольких блоков управления и компьютера с базой данных. Мы принципиально не хотели держать отдельный компьютер и искали компактное решение в виде одного устройства, которым можно управлять через API для интеграции с Telegram-ботом.

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

Так мы нашли контроллер БОРЕЙ от компании ИТРИУМ.

Записать карту тройка на кольцо nfc

Плата контроллера БОРЕЙ в настенном корпусе

Устройство работает под управлением Linux на базе ARM-процессора.

Основные достоинства устройства, которые редко можно встретить у других контроллеров:

  • Полностью автономный — все функции выполняет одно устройство. Для управления не нужно дополнительных программ или отдельного компьютера. База данных хранится на SD-карте. При отключении интернета контроллер продолжит работать.
  • Web интерфейс и REST API — возможность управлять контроллером через браузер и интегрировать с Telegram-ботом через API. Позволяет управлять пропусками удаленно.
  • Подключение по Ethernet — устройство подключается в IP-сеть. Имеет встроенный коммутатор на 2 порта.
  • Идентификаторы произвольной длины до 64 бит — возможность интегрировать контроллер с нестандартными идентификаторами разной длины. Позволяет иметь гибридную систему с идентификаторами разной длины.

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

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

Если доступ запрещен, контроллер посылает сигнал индикации на считыватель, и тот горит красным цветом и пищит о том, что доступ не разрешен.

Управление контроллером

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

Создание нового пропуска в веб-интерфейсе контроллера БОРЕЙ

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

Бюро пропусков в Telegram

Чтобы каждый раз не обучать нового администратора, как пользоваться веб-интерфейсом контроллера, мы решили создать Telegram бота, через которого будет происходить добавление/удаление пропусков. Это возможно благодаря наличию в контроллере БОРЕЙ REST API.

Записать карту тройка на кольцо nfc

Управление пропусками через Telegram-бота.

FAQ

В процессе работы над системой мне часто задавали одни и те же вопросы, которые наверняка возникнут и в комментариях. Я собрал самые популярные:

  • Если отключится интернет, все сломается?
    Нет, если у контроллера пропадет доступ в интернет, система продолжит работать, так как вся база данных хранится локально на контроллере. Без интернета нельзя будет внести изменения в конфигурацию. При этом доступ в веб-интерфейс сохранится из локальной сети.
  • Можно создать клон карты «Тройка» и сделать поддельный пропуск!
    Да, это так. Можно подсмотреть номер карты у пользователя и создать клон. Однако для этого потребуется оборудование для записи карты (смартфон на Android c NFC тоже подойдет), знание ключей доступа к сектору и навыки работы с картами Mifare. В нашей модели угроз, такая уязвимость не является критической, так как на входе всех встречает администратор у ресепшена. Учитывая, что большинство систем контроля доступа в СНГ работают на картах EM-Marine, которые можно клонировать на расстоянии метра от человека без знаниях каких-либо ключей вообще, наша система намного более безопасна и требует от атакующего бо́льших усилий.
  • Вы сможете скопировать мою банковскую карту и украсть деньги.
    Это очень популярное заблуждение. Протокол EMV защищен от подобных атак и бегло разбирается в главе «Читаем EMV карты на коленке». На пальцах, защита работает так: карта хранит приватный ключ подписанный банком-эмитентом, который прошивается в память на этапе выпуска карты. Банк-эмитент (который выпустил карту) хранит у себя отпечаток приватного ключа карты. Чтобы списать деньги с карты, POS-терминал передает случайную последовательность данных вместе с суммой, которую собирается списать. Карта подписывает эти данные своим ключом и отвечает POS-терминалу. Результат передается в банк-эмитент, который проверяет подпись. Так как секрет знает только карта, и он не может быть извлечен из карты, скопировать карту так, чтобы с нее можно было списывать деньги — невозможно.
  • Но вы можете скопировать открытые данные карты, такие как номер, срок действия и имя владельца.
    Да, это возможно. Но этих данных, в большинстве случаев, недостаточно для оплаты. CVV-номер в них не содержится. Кроме того, реквизиты, полученные из Apple Pay не будут работать для оплаты в интернете. Однако эти опасения вполне справедливы, и для тех, кто не хочет использовать банковские карты, всегда есть возможность использовать карту «Тройка».
  • Можно узнать номер EMV карты и подделать пропуск.
    В теории да, но мне не известно доступное оборудование для эмуляции EMV карт. Существуют аппаратные эмуляторы вроде ChameleonMini, однако работают они достаточно плохо. Есть также Android Host-based Card Emulation, который в теории позволяет эмулировать любую карту на Android смартфоне. Но мне опять же не известны реально существующие реализации таких эмуляторов, позволяющие загружать произвольный дамп карты.

Спасибо всем, кто помогал мне в этом проекте:

Иллюстрации к статье — aquamine
Помощь в написании кода — ValdikSS
Написание Telegram бота — Alexey Tsverov
Разработка прошивки считывателя — компания Parsec и лично Леонид Стасенко
Помощь в настройке контроллера — компания ИТРИУМ и лично Глеб rgmih Рыбаков

Оцените статью
Подорожник