Все о транспортной карте «Тройка»

Описание и возможности мобильного приложения

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

Единая карта «Тройка» с легкостью заменит обычный кошелек. Пользователям больше не придется использовать для оплаты проезда в общественном транспорте обычные деньги. Универсальный мобильный носитель избавит от проблем с приобретением и хранением билетов, позволит проводить оплату в культурно-массовых центрах и других сервисах.

Встроенный функционал:

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

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

Почему нельзя просто подложить карту «тройка» под чехол

На карточке «Тройка» присутствует НФС чип и некоторые хотят обхитрить окружающих — вставляют платежное средство под чехол, но результат не радует. Почему? Тут несколько факторов, которые доказывают малую эффективность работы карты в данном случае. Это:

  1. Передача сигнала у карт «Тройка» незначительна. Работают они на очень близком расстоянии. Чтобы транзакция осуществилась, придется класть карточку к турникету вплотную. Чехлы же не позволяют это сделать. Отсюда и проблемы со считыванием данных. Прежде чем платеж пройдет, человек обратит на себя всеобщее внимание, так как специальный сигнал будет звучать и слышим окружающими.
  2. Внушительный размер карточки. Не под каждый чехол «Тройка» вместится, так как ее размер такой же как кредитка. Нередко края карты остаются снаружи и чехол не удается закрепить на гаджете так как нужно. Некоторые лица ухитряются уменьшать платежное средство, но после такой махинации оно уже не работает полноценно. Практически по всей карте идут «дорожки» НФС-чипа и задев одну из них вы рискуете испортить карту.
  3. Блокировка работы бесконтактных сервисов. Если вы пользуетесь Apple/Android/Samsung Pay, то установка «Тройки» на задней части корпуса смартфона станет причиной постоянных сбоев как при оплате проезда, так и покупок.

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

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

Все о транспортной карте «тройка»

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

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

Услуга действует на всех пригородных железнодорожных направлениях. Подробнее о ней можно узнать на официальных сайтах АО «Центральная ППК», являющегося перевозчиком на всех направлениях, кроме Ленинградского, и АО «Московско-Тверская пригородная пассажирская компания», работающего на Ленинградском направлении железной дороги.

Оплатить проезд на МЦК можно проездными билетами «Единый», «Кошелек». Также можно пользоваться всеми льготами по социальным картам. При пересадке с метро на МЦК и обратно (на станции одного транспортно-пересадочного узла) в течение 90 минут с момента первого прохода дополнительная поездка не списывается.

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

“>«Центральной» зоне действуют все существующие

Билеты на 60 поездок, одни сутки, трое суток, 30 дней, 90 дней и 365 дней.”>абонементы метро

, которые записываются на «Тройку». Совершить поездку в зоне

За пределами станций Марк, Сетунь, Волоколамская, Остафьево и до конечных станций МЦД «Одинцово — Лобня», «Нахабино — Подольск».”>«Пригород»

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

Как зарегистрировать карту «тройка» в программе лояльности «город»

Эта система создана в 2021 году и предназначена для накопления скидок и бонусов. Их впоследствии можно потратить на оплату услуг в кафе и ресторанах, магазинах, театрах и даже на стойках велопроката. На данный момент программа «Город» насчитывает более 300 онлайн-партнеров и 5000 магазинов в Москве и МО.

Пройти регистрацию в системе можно через ее официальный портал или приложение, доступное в AppStore и Google Play Market.

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

Технические требования к приложению:

  • Apple – iOS старше 10.0. Возможна установка на iPhone, iPad, iPod Touch.
  • Android – версия системы выше 5.0.

Принцип взаимодействия с приложением «Город»:

  1. После запуска и представления основных возможностей (предъявление в магазинах, соотношение бонусов и рублей) появится кнопка «Регистрация» – нажимайте на нее.
  2. Для проведения процедуры потребуется ввести 10-значный номер «Тройки». Также внизу доступен вариант входа через имеющийся аккаунт.
  3. Для проведения привязки (подтверждения законного использования карты) на следующем шаге появится окно с просьбой указать 2 станции метро, посещенных в последнем месяце. После их введения внизу появится кнопка «Далее».Как привязать карту «Тройка» к телефону
  4. Для привязки карты также потребуется номер телефона – на него придет проверочный код. Сюда же будет приходить пароль во время обмена бонусов на скидку при покупке или оплате услуги.
  5. Дальше заполняются обычные персональные данные: ФИО, дата рождения, пол. Обязательно указывается и актуальная электронная почта. Как привязать карту «Тройка» к телефону
  6. После этого программа предложит создать 4-значный пароль. Он же будет использоваться для входа в личный кабинет на официальном портале «Города».

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

Начальный этап процедуры работает абсолютно на любых устройствах, а с записью проведенного платежа могут возникнуть проблемы. Разработчики советуют в первый раз выделить на это минут 5–10.

Алгоритм:

  1. Запустите приложение «Тройка. Проверка и пополнение баланса», приложите карту к задней крышке лицевой стороной. Потребуется около 20 секунд на считывание данных, если модуль NFC был найден верно. Если нет – переместите карту и попробуйте еще раз.
  2. Когда чтение произойдет, на экране появится вся доступная информация о «Тройке»: сверху отображается номер, по центру – варианты билетов. Внизу расположена зеленая кнопка «Пополнить». Как привязать карту «Тройка» к телефону
  3. После нажатия на нее приложение определяет, какую сумму можно положить на счет, и показывает ее. Минимальная – 10 рублей.
  4. После того, как будет введена желаемая сумма пополнения «Тройки», можно выбрать билет, который требуется купить: для этого над кнопкой «Оплатить» есть строка «Выбрать другой билет». Загрузится список доступных вариантов.
  5. Нажмите на тот, который нужен, и следом на кнопку «Оплатить». Как привязать карту «Тройка» к телефону
  6. В следующем окне вбейте реквизиты банковской карты, с которой должны списаться деньги. Эти данные можно сохранить для последующих более быстрых пополнений «Тройки». На электронную почту придет чек о совершенной операции. Также можно просто приложить банковскую карту к модулю NFC (магнитной лентой), чтобы считать её данные.
  7. Снова нажимайте кнопку «Оплатить». Не отнимайте «Тройку» от задней крышки телефона, чтобы произошла запись билета. Об успешном завершении процедуры оповестит соответствующее сообщение. Дальше можно проводить новую оплату или просмотреть детали текущей.

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

Как привязать карту к телефону

Чтобы привязать Тройку к телефону, пластиковый носитель следует приобрести в кассе станций московского метрополитена или в наземном киоске общественного транспорта. Залоговая стоимость карты в пределах 50 рублей, будущему владельцу предоставляется возможность обратного обмена карты на равноценную сумму, если отпадет надобность в ее использовании.

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

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

Чтоб подключить Тройку к телефону следует совершить несколько простых действий:

  1. Вставить новую симку в телефон.
  2. Открыть соответствующий магазин приложений (Google Play, App Store), вписать в поиск оригинальное название «Моя Тройка» или «Мой проездной». Перейти на официальную страницу, нажать «Установить».
  3. Добавить приложение на панель быстрого доступа, в один клик открывать и получать оперативно всю информацию о сервисе: просматривать баланс, историю пополнений и расходов.
Читайте ещё про NFC:  Обзор Xiaomi Mi Smart Band 4 NFC — фитнес-браслета с поддержкой бесконтактной оплаты - Лайфхакер

При возникновении трудностей в использовании сервиса, ознакомьтесь с более детальной информацией на официальном портале «Московский транспорт».

Как проверить баланс счета

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

  1. Желтый терминал. Практически на всех станциях московского метрополитена есть специальные желтые терминалы, которые крепятся ближе к кассам. Пластиковый носитель просто прикладывается к сканеру терминала и через определенное время на экран выводится подробные сведения с карты.
  2. Официальные приложения от разработчиков: «Тройка Проверка баланса», «Транспортные карты Москвы», «Мой проездной». Все владельцы мобильных гаджетов Android, iOS со встроенной функцией NFC, смогут быстро произвести проверку баланса через установленное приложение. Для этого нужно приложить карту к задней панели смартфона, после чего на экран телефона выводятся все необходимые сведения с карты.
  3. Опция «Мобильный билет». Многие современные гаджеты поддерживают универсальную функцию «Мобильный билет», подключить которую легко в любом официальном салоне связи оператора. Проверка баланса производится через главное меню, в разделе «Баланс».
  4. SMS-сообщение. Мобильные операторы МТС, Билайн и Мегафон ввели для своих абонентов специальный короткий номер для проверки баланса и оставшегося количества поездок по действующему абонементу. На номер 3210 посылается СМС со словом – баланс – после чего абонент получает интересующие сведения в ответном SMS-сообщении.

К сожалению, пока карта «Тройка» не имеет личного пользовательского кабинета, но официальный представитель обещает клиентам разработать его к 2020 году. Прогресс не стоит на месте, в скором будущем использовать Тройку будет еще проще и комфортней.

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

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

Они должны отвечать следующим требованиям:

  • версия операционной системы старше 4.4;
  • поддержка NFC со стандартом Mifare Classic;
  • наличие интернета (для отдельных операций).

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

Подробного списка устройств, на которых софт не работает корректно, не существует. Самые известные проблемы касаются линейки S у Samsung, телефонов Xiaomi, Asus ZenFone Max Pro, но это не единственные аппараты, где возникают ошибки. Если конкретному смартфону официальный софт недоступен, он просто не отобразится в Google Play. Также по всем вопросам можно обратиться в поддержку – она оперативно отвечает.

На Apple-девайсы такого приложения не разработано и в ближайшее время его появление не предвидится. Это связано с особенностями ограничений самой системы iOS. Несмотря на наличие NFC здесь не поддерживается запись протокола, который использован в «Тройке».

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

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

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

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

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

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

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

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

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

Контроллер борей

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

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

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

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

Все о транспортной карте «Тройка»
Плата контроллера БОРЕЙ в настенном корпусе

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

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

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

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

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

Обработка 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'

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

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

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

Данный парсер не скрывает байт длины после маркера, как это делает 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 можно найти в

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

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

Читайте ещё про NFC:  Как снять деньги с телефона МТС - простые способы

Экспериментальным путем я выяснил, что почти на все запросы 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-номер, а может и не содержать. (офигеть)

Окей, продолжаем: как активировать работу nfc в iphone

Шаг 1. Открываем приложение «Команды».

Шаг 2. Переходим в раздел программы «Автоматизация».

Шаг 3. Выбираем возможность «Создать автоматизацию для себя».

Шаг 4. Смахиваем до меню «Настройки» и жмем на вариант NFC.

Шаг 5. Жмем на кнопку «Сканировать» в пункте «Тег NFC».

Шаг 6. Когда на экране появится соответствующая анимация с подписью «Готово к сканированию», подносим к задней части iPhone то, что станет NFC-меткой: банковская карта с поддержкой NFC, «Тройка» или что угодно, о чем я уже писал выше.

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

Шаг 8. Нажмите на кнопку «Далее», чтобы перейти в меню добавления действия.

Шаг 9. Нажмите на кнопку «Добавить действие», чтобы выбрать необходимую задачу, — после этого можете использовать кнопку ㊉, чтобы добавить одну или несколько дополнительных.

Шаг 10. Нажмите на кнопку «Далее», чтобы перейти в меню финальной настройки.

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

Шаг 12. Нажмите на кнопку «Готово», чтобы подтвердить создание автоматизации.

Преимущества и возможности сервиса

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

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

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

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

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

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

Старт платежного приложения — 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

. Тот же ответ карты VISA, обработанный парсером:

Из всего этого нас интересует только идентификатор платежного приложения (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

Частые вопросы о карте «тройка»

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

ВопросОтвет
Через приложение пополняется только пластиковая «Тройка» или в виде браслетов и брелков тоже можно?Формат карты не играет роли: внутренний чип везде одинаковый.
Как пополнять «Тройку» на айфонах, если официального приложения нет?Если вопрос только в переводе денег на карту, то с этим справляются другие приложения: «МосМетро», «Московский Транспорт», «Город», «Яндекс.Метро». Но записывать билет придется через терминал.
Можно ли внести «Тройку» в Wallet?Пока нет. В 2021 про это шла речь, но даже в середине 2020 года функция не реализована: привязывать можно только банковские карты. По ним цена проезда в 1 сторону составляет 44 рубля (51 – для пригородной зоны). «Тройку» можно внести в Wallet через приложение «Город», однако это только для покупок в магазинах и получения бонусов. Об оплате проезда речи не идет.
Положила деньги на «Тройку», а они не записались: терминал показывает, что баланс не пополнен, в кассе говорят, что карта неисправна. Что делать?Обращаться на горячую линию по номеру (495) 539 54 54. Скорее всего придется ехать в сервисный центр и сдавать карту на экспертизу: она занимает 10 дней, временный билет не выдается, но срок записанных будет продлен.

Через nfc-соединение

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

Нужно следовать инструкции:

  1. Открыть приложение.
  2. Перейти в раздел «Оплата».
  3. Приложить карту Трока к задней крышке телефона и подождать, пока произойдет распознавание номера.
  4. Прочитать высветившуюся информацию — номер транспортной карточки и баланс.
  5. Нажать на значок « ».
  6. Вписать сумму, на которую планируете пополнять.
  7. Выбрать способ оплаты (мобильный телефон или банковская карта).
  8. При выборе второго, вписать реквизиты банковского инструмента и подтвердить списание средств.
  9. Убедиться в зачислении денег.
  10. Записать средства на пластиковый носитель. Для этого нужно просто приложить карточку к телефону сзади и подождать. Запись произойдет за несколько секунд.

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

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

Читать EMV-карты можно любым NFC-ридером, поддерживающим передачу произвольных APDU-команд. Для этого не требуются промышленные сертифицированные ридеры, подойдет любой модуль для Arduino за $3

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

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

Читайте ещё про NFC:  Что такое браслет от Сбербанка с функцией оплаты? Как получить и пользоваться NFC браслетом от Сбербанка

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

Описанный ниже процесс не является корректной реализацией протокола 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, обработанный парсером:

Все о транспортной карте «Тройка»

Из всего этого нас интересует только идентификатор платежного приложения (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'

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

парсер

:

Все о транспортной карте «Тройка»

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

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

Все о транспортной карте «Тройка»

Данный парсер не скрывает байт длины после маркера, как это делает 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-номер может содержаться в трех местах:

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-номера можно изобразить в виде блок-схемы

Все о транспортной карте «Тройка»

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

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

Adblock
detector