Карта Тройка в телефоне Айфон и Андроид

Можно ли привязать «тройку» к iphone?

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

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

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

Пополнение “Тройки” NFC осуществляется двумя способами: через терминал оператора Мегафон, Элекснет, Аэроэкспресс, валидатор или в приложении “Метро Москвы”.

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

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

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

Прибор состоит из чипа, одна сторона которого закрепляется на симке, а вторая устанавливается под батареей, и антенны, монтируемой непосредственно на батарею. Обратите внимание, что NFC нельзя установить в телефоны, которые оснащены несъемной батареей.

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

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

В частности, для обычных смартфонов на базе Андроид алгоритм выглядит так:

  • зайти в «Параметры» или «Настройки»;
  • выбрать раздел «Подключение устройств»;
  • нажать на клавишу «NFC».

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

После включения модуля происходит непосредственное пополнение. Понадобится:

Обязательно подтвердить операцию, ведь в противном случае деньги со счета не спишутся, и карта не пополнится.

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

Какие имеются способы зарегистрировать карточку на свой номер?

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

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

Пройти регистрацию можно на сайте или в мобильном приложении. Об этом читайте ниже.

При всех плюсах на сегодняшний момент “Тройка” не совершенна. Её недоработки обнажают не самую лучшую защищённость. Ввиду этих причин не прекращается работа по улучшению продукта – с тем чтобы избавиться от минусов карты.

Пополнение через установленное на телефон мобильное приложение возможно благодаря платёжной системе Payler. Чтобы провести операцию, необходимо сначала в программе ввести номер карты и установить сумму. Платёж проводится с помощью любого банковского пластика, работающего на системах Visa или MasterCard.

Помимо касс в метро, платёжных аппаратов или мобильного приложения существует ещё один путь перевести деньги на “Тройку”. Непосредственно с телефона через сервис SMS.

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

Читайте ещё про 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 // Случайное число 

Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера

с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)

Оплата проезда – единый транспортный портал

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

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

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

  • 10 рабочих дней, если вышеуказанные билеты на карте есть. Экспертиза проводится в Едином восстановительном центре ГУП «Мосгортранс» или Лаборатории контроля качества ГУП «Московский метрополитен».

На время проведения экспертизы временный билет не выдаётся, срок действия проездных билетов, записанных на карту, продлевается.

Замена неработающей карты «Тройка», не имеющей повреждений, производится также в Сервисных центрах «Московский транспорт»:

1. Адрес: ул. 1905 года, д. 25

Проезд: до ст. метро «Улица 1905 года», далее – пешком 10 минут.

2. Адрес: ул. Старая Басманная, д. 20, корп. 1

Проезд: до ст. метро «Бауманская», «Курская» или «Красные ворота».

Телефон Контакт-центра «Московский транспорт»: (495) 539-54-54; 3210 (с мобильного тел.)

Часы приема Сервисных центров: понедельник-воскресенье с 08.00 до 20.00 (без обеда).

Выходные дни: 1 января, 7 января, 23 февраля, 8 марта, 1 мая, 9 мая, 12 июня, 4 ноября.

Если карта «Тройка» имеет повреждения, то для переноса действующих услуг необходимо обратиться в один из Сервисных центров «Московский транспорт» с неработающей картой и новой картой (без действующих билетов на ней). Если на неработающей карте записаны проездные билеты ж/дороги, то до обращения в Сервисный центр, необходимо решить вопрос дальнейшего использования ж/д билетов на карте (телефон Единого информационного сервисного центра компании «Российские железные дороги»: 8-800-775-00-00).

Если не работает банковская, универсальная карта или иной электронный носитель информации, имеющий транспортное приложение «Тройка», то для переноса действующих услуг необходимо обратиться в один из Сервисных центров «Московский транспорт» с неработающим носителем и новой картой (без действующих билетов на ней). Если на неработающем носителе записаны проездные билеты ж/дороги, то до обращения в Сервисный центр, необходимо решить вопрос дальнейшего использования ж/д билетов на карте (телефон Единого информационного сервисного центра компании «Российские железные дороги»: 8-800-775-00-00).

Для замены неработающей социальной карты необходимо обратиться в один из центров государственных услуг г. Москвы «Мои документы». Телефон справочной службы центра государственных услуг «Мои документы»: 8 (495) 587-88-88.

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

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

Вы можете купить единый суточный билет. Он дает право на безлимитный проезд на всех видах транспорта в течение 24 часов с момента первого прохода. Его можно купить заранее. Стоимость суточного билета составляет для проезда на метро, монорельсе, МЦК, МЦД зона Центральная или наземном транспорте 240 ₽, для проезда на метро, монорельсе, МЦК, МЦД зона Центральная, Пригород или наземном транспорте 295 ₽.

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

Проверить количество неизрасходованных поездок по билетам, записанным на карту «Тройка»:

  • на наземный транспорт — при входе в салон транспортного средства: остаток поездок отображается при каждом проходе через валидатор;
  • в метро, МЦК, монорельсе — при проходе через турникет, на информационных терминалах расположенных в вестибюлях станций;
  • на МЦД — при проходе через турникет железнодорожной станции

Задержка прохода — это время, на которое турникет не открывается после первого прохода.

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

Проездной билет «Кошелек» и Единые проездные билеты

на 1, 2, 60 поездок не имеют интервала задержки для повторного прохода.

Единые проездные билеты без лимита поездок на 1, 3 суток имеют 20-минутный интервал задержки для повторного прохода.

Единые проездные билеты без лимита поездок на 30, 90, 365 дней имеют 7-минутный интервал задержки для повторного прохода.

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

до 18 лет, ВЕСБ и временные билеты имеют 7-минутный интервал задержки для повторного прохода.

В наземном общественном транспорте установлены задержки по билетам «ТАТ» и «Единый» без лимита поездок, «Кошелек» карты «Тройка», по билетам с лимитом поездок — «ТАТ» и «Единый» задержек нет.

В соответствии с транспортным законодательством Российской Федерации, каждый пассажир должен иметь свой билет. Штраф за безбилетный проезд составляет 1000 ₽ и налагается даже в том случае, если проезд пассажира был оплачен другим пассажиром по собственной карте или билету.

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

Для безлимитных билетов (на количество дней) действует задержка второго прохода – время, на которое валидатор не срабатывает после первого прохода. Задержка второго прохода в метрополитене по безлимитным проездным на 30, 90 и 365 дней – 7 минут, по «Единому» на 1 сутки и 3 суток – 20 минут.

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

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

Тарифы «Тройки» (билет «Кошелек» согласно ПП 880 в редакции ПП №1873) – тарифы на проезд на наземном городском пассажирском транспорте общего пользования города Москвы, Московском метрополитене (включая Монорельсовую транспортную систему), а также на МЦК, зоне «Центральная» МЦД и зоне «Пригород» МЦД по установленным тарифам в пределах уплаченной суммы, списываемые с билета «Кошелек» карты «Тройка»:

  • Поездка на метро, монорельсе, МЦК, МЦД в зоне «Центральная» — 42 ₽;
  • Поездка на метро, монорельсе, МЦК, МЦД в зоне «Пригород» — 50 ₽;
  • Поездка на наземном транспорте — 42 ₽;
  • Одна поездка на метро, монорельсе, МЦК и МЦД в зоне «Центральная» и неограниченное количество пересадок на наземном транспорте в течении 90 минут (тариф «90 минут») — 65 ₽.
Читайте ещё про NFC:  Как скачать и установить Samsung Pay с официального сайта

При этом деньги, уже находящиеся на балансе билета «Кошелек», нельзя конвертировать в билет.

Если на карту «записан» проездной билет, то сначала всегда срабатывает билет.

Если на карте «Тройка» не «записан» билет, то карта выбирает тариф автоматически, например, при проезде на метро, монорельсе и МЦК спишется 42 ₽, на наземном городском транспорте – 42 ₽, если один проход на метро и неограниченное количество проходов на наземном транспорте уложились в 90 минут, с карты спишется всего 65 ₽

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

Если на карту «Тройка» записан «Единый», то при проезде на наземном транспорте спишется одна поездка с вашего проездного «Единый», а не 42 ₽ с тарифа за поездку на наземном транспорте.

Если у вас записаны одновременно «Единый» и ТАТ, в наземном транспорте всегда сработает сначала ТАТ, в метро –сначала «Единый».

Если нет записанного ТАТ, то списываются поездки с билета «Единый». Если карта не находит ни одного записанного билета, то она проверяет наличие денег на балансе билета Кошелек» карты и списывает средства по фиксированным тарифам карты «Тройка» за 1 поездку (1 поездка на ТАТ – 42 ₽).

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

Записывать новый Единый проездной билет без лимита поездок на 30, 90, 365 дней можно в течение последних 30 дней его действия, при этом срок действия нового Единого проездного билета начинает исчисляться после окончания срока действия первого Единого проездного билета.

Записывать новый Единый проездной билет без лимита поездок на 30, 90, 365 дней, при наличии ранее записанного Единого проездного билета с лимитом поездок, можно в любой момент. Срок действия второго Единого проездного билета без лимита поездок начинает исчисляться после окончания срока действия/количества поездок первого Единого проездного билета.

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

Записывать новый Единый проездной билет с лимитом поездок, при наличии ранее записанного Единого проездного билета без лимита поездок на 30, 90, 365 дней, можно в любой момент. Срок его действия начинает исчисляться с даты записи, включая день продажи, списание поездок со второго Единого проездного билета с лимитом поездок начинается после окончания срока действия первого Единого проездного билета.

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

Абонементы на пригородные электропоезда можно комбинировать с любым видом билетов на городской транспорт города Москвы.

Если на карту записан проездной билет, то сначала всегда срабатывает билет.

Если на карте «Тройка» не записан билет, то карта выбирает тариф автоматически, например, при проезде на метро, монорельсе и МЦК спишется 42 ₽, на наземном городском транспорте – 42 ₽. Если один проход на метро и неограниченное количество проходов на наземном транспорте уложились в 90 минут, с карты спишется всего 65 ₽.

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

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

Также пополнить баланс проездного билета «Кошелек» можно удаленно на сайте nfcexpert.ru, в мобильном приложении «Метро Москвы» и с использованием терминалов, касс и иного функционала агентов метрополитена, информация о которых размещена на сайте nfcexpert.ru (удаленное пополнение).

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

На карту «Тройку» и иные носители (брелоки, браслеты, кольца, жетоны и т.д.), имеющие транспортное приложение, можно записать следующие проездные билеты:

  • «Единый» на 60 поездок;
  • Безлимитный «Единый» на 30, 90, 365 дней, на 1, 3 суток;
  • Безлимитный «ТАТ» на 30 дней;
  • Проездной билет «Кошелек».

На виртуальную транспортную карту «Тройка» могут быть записаны:

  • Единые проездные билеты без лимита поездок на 30, 90, 365 дней;
  • проездной билет «Кошелек».

Абонементы на пригородные электропоезда с временным периодом: «Ежедневно», «Рабочего дня», «Выходного дня», «На даты», «Большая Москва», «Мегаполис Плюс», «Город рядом», «Мое Подмосковье», «Свободный», абонемент на «Региональный экспресс» («РЭКС») . Более подробную информацию о существующих видах абонементов Вы можете найти на сайте ОАО «Центральная ППК» и ОАО «Московско-Тверская пригородная пассажирская компания».

  • Безлимитный «Единый» на календарный месяц;
  • Льготный проездной билет для обучающихся и студентов без лимита поездок на месяц и на три месяца для проезда на наземном городском пассажирском транспорте;
  • Льготный проездной билет для обучающихся и студентов без лимита поездок на месяц и на три месяца для проезда на метро, монорельсе, МЦК и МЦД зона «Центральная»;
  • Проездные билеты на провоз ручной клади сверх установленных норм (в метрополитене и монорельсовой транспортной системе).

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

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

https://www.youtube.com/watch?v=6a0WrxghwLw

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

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

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

Читайте ещё про NFC:  Как работает эпл пей

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

Как добавить карту Тройка в Apple Pay. Инструкция.

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

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

парсер

:

Как добавить карту Тройка в Apple Pay. Инструкция.

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

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

Как добавить карту Тройка в Apple Pay. Инструкция.

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

Как добавить карту Тройка в Apple Pay. Инструкция.

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

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

Adblock
detector