Что такое транспортные экспресс-карты в Apple Pay и как ими пользоваться |

Что собой представляет карта?

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

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

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

Баланс карты проверяется на терминале любой станции метро либо в личном кабинете официального сайта.

Конструктивно карта представлена чипом Mifare Plus, функционирующем в режиме SL 1. На оборотной стороне пластика нанесен номер из десяти цифр, используемый при удаленных пополнениях баланса Им же пользуются в качестве элемента для идентификации в СКУД.

Начало коммуникации — команда 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 // завершающий маркер

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

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

Куда позвонить, чтобы узнать?

Если ничего из вышеуказанного вам не подошло, позвоните по телефону горячей линии 8 (800) 100-77-90 или 7 (495) 539-54-54 и задайте все интересующие вас вопросы. Оператору понадобится только десятизначный номер вашей карты.

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

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

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

Все скуд неудобные

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

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

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

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

Есть ли возможность добавить к apple pay?

Пользователи картой задаются вопросом, можно ли добавить Тройку в Apple Pay, чтобы использовать ее через мобильный телефон.

К сожалению, для транспортной карты такая возможность не предусмотрена, потому что сервис функционирует исключительно с системами VISA и MasterCard.

Карта Тройка к банковским продуктам не относится, и условиям, нужным для выполнения привязки к смартфону, не соответствует:

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

Отсюда следует, что картой приходится работать в натуральном варианте.

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

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

Как добавить транспортную экспресс-карту

  • Чтобы превратить банковскую карту в транспортную с экспресс-доступом, перейдите в Настройки — Wallet;
  • Выберите раздел «Экспресс-карта»;
  • В открывшемся окне выберите карту, которую хотите использовать для оплаты проезда;
  • Проверьте работу механизма, когда окажетесь в метро или другом общественном транспорте.

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

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

Фото 6Пункты их записи зависят от конкретного билета:

  • Билет Единый: кассы метро, киоски Мосгортранса;
  • 90 минут – кассы метро, Мосгортранса;
  • ТАТ – киоски Мосгортранса.

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

В ином варианте можно использовать терминал Элекснет.

Инструкция записи билета в этом случае будет выглядеть так:

  • Нужно приложить пластик к считывающему устройству (оно представляет собой желтый круг).
  • На дисплее отобразится информация о существующих билетах. Нужно выбрать подходящий и оплатить его через купюроприемник.
  • Срок записи билета составляет 10-15 секунд, комиссии нет.

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

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

Как записать билеты?

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

Предлагаем посмотреть видео о том, как записать билеты:

Как платить apple pay, если iphone разряжен

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

Судя по информации, предоставленной Apple, смартфоны автоматически резервируют небольшой объём энергии для обеспечения работы модуля NFC, который и отвечает за бесконтактную оплату. А поскольку он крайне нетребователен к ресурсам, резервных миллиампер хватит надолго.

Как пополнить баланс с активацией в метро и без?

У пассажиров есть возможность пополнять карту «Тройка» онлайн. Не нужно искать жёлтые информаторы, ещё раз проверять баланс, чтоб удостовериться, что платёж прошёл и карта работает. Функция доступна только на смартфонах на базе Android (c поддержкой NFC). В приложении Google Play вы представлен полный список устройств, поддерживающих приложение.

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

Как пополнить счет?

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

Это можно сделать следующими способами:

  • через терминал банка;
  • в кассе метрополитена либо наземного транспорта;
  • через онлайн-банкинг;
  • с электронных кошельков;
  • через мобильное приложение;
  • по СМС.

Как работает карта?

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

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

Существует несколько тарифов по карте, определяющихся потребностями пассажира:

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

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

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

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

Посредством «Тройки» можно оплатить проезд лишь одному человеку. Повторное использование пластика возможно спустя 5-10 минут. Исключением является метрополитен – там можно оплатить поездки нескольких человек сразу.

Как работает на андроиде?

Для начала вам пригодится мобильное устройство с операционной системой Android (Андроид) и поддержкой NFC. Дополнительное условие: NFC-контроллер вашего телефона должен поддерживать Mifare Classic для корректной работы.

Приложите карту “Тройка” к задней крышке устройства (у большинства телефонов NFC-антенна расположена там, уточнить информацию вы можете в инструкции к телефону). Не убирайте карту, пока не увидите на дисплее баланс (на это уйдёт несколько секунд).

Далее для проверки баланса карты “Тройка” вам не потребуется постоянный доступ к беспроводной сети Интернет. Возможно быстрое пополнение карт “Тройка”, не будет необходимости каждый раз спускаться в метрополитен, чтоб её активировать. Записывать купленные электронные билеты на вашу “Тройку” также можно через приложение.

Как устранять неисправности и сдавать карту тройка?

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

Решив не пользоваться картой Тройка, верните ее в кассу метрополитена. Залоговая стоимость продукта, обеспечивающего оплату за проезд, возвращается вам в полном объеме.

Читайте ещё про NFC:  Android Pay Сбербанк, как пользоваться Андроид Pay Сбербанк

Какие прогнозы и перспективы?

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

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

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

Кроме использования Apple Pay, разработчики транспортной карточки планируют поддержку продукта Google и Samsung.

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

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

Нововведение сэкономит время.

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

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

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

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

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

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

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

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

Карту «тройка» теперь можно пополнять с iphone

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

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

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

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

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

Все, что нужно для удаленного пополнения «Тройки» – это устройство под iOS, проездной «Тройка» и платежная карточка VISA, Maestro или MasterCard любого российского банка.

Скачать «Тройка. Пополнение карты Тройка» можно по этой ссылке.

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

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

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

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

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


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

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

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

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


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

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

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

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

В момент считывания карты, считыватель передает прочитанный идентификатор карты на контроллер по протоколу 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.

Экспериментальным путем я выяснил, что почти на все запросы 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 // Случайное число 

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

Читайте ещё про NFC:  Nfc metro

77

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

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

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

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

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

                             — У вас уже есть наша карта?
— Пощадите…

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

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

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

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

Пополнить «тройку» теперь можно через nfc без желтого валидатора

Через приложение «Метро Москвы» пассажиры теперь могут пополнить карту «Тройка» полностью в режиме онлайн. Им не придется дополнительно прикладывать карту к желтым валидаторам в метро. Функция стала доступна для пользователей смартфонов на базе Android c поддержкой NFC. Список моделей гаджетов с этой возможностью опубликован на странице приложения в Google Play.

«После того как пассажиры зачислят деньги на счет “Тройки”, им будет достаточно приложить карту к мобильному телефону, и пополнение счета пройдет через NFC-соединение. Благодаря этому можно пополнить счет, например, по дороге на работу, что сэкономит время в пути», — рассказал заместитель Мэра Москвы, руководитель Департамента транспорта и развития дорожно-транспортной инфраструктуры Максим Ликсутов.

Он отметил, что теперь приложение «Метро Москвы» можно использовать для активации отложенного платежа, не прикладывая «Тройку» к желтым валидаторам на станциях подземки. Даже если пассажир пополнит карту любым другим способом, включая «Яндекс.Деньги», Qiwi и Webmoney, он сможет воспользоваться приложением «Метро Москвы» и с помощью NFC-соединения активировать платеж.

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

Обновленную версию приложения уже можно скачать в App Store и Google Play.

«Мы постоянно расширяем возможности оплаты проезда и добавляем самые инновационные способы. Например, совместно с Apple мы запустили новый способ пополнения “Тройки” через наше приложение “Метро Москвы” с помощью Apple Pay», — отметил Максим Ликсутов.

При выборе Apple Pay в меню программы пользователю нужно будет подтвердить способ оплаты, используя Touch ID или пароль. В отличие от оплаты банковской картой пассажиру не придется вводить дополнительную информацию: ее номер, данные владельца и код безопасности. Это позволит жителям и гостям города, пополняющим счет «Тройки» онлайн, сэкономить время.

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

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

«К Кубку конфедераций ФИФА — 2020 мы добавили для болельщиков специальный раздел на русском, английском, испанском и немецком языках. В нем собрана вся полезная информация для приезжающих на игры Кубка гостей. Это расписание матчей, описание команд-участниц, правила бесплатного проезда в московском транспорте и другая информация», — рассказал Максим Ликсутов.

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

Мобильное приложение «Метро Москвы» появилось в App Store и Google Play в этом году. Его скачали уже более 375 тысяч пользователей.

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

Проверить баланс через смс

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

Для использования данного способа карта должна быть привязана к номеру вашего мобильного телефона. Номер 3210 доступен для абонентов МТС, Билайн, Мегафон и TELE2.

С помощью смартфона с nfc

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

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

Системные требования для установки

При установке приложения должны быть выполнены следующие требования:

  1. ОС на вашем телефоне должна быть Android 4,0 и более.
  2. Постоянный доступ к интернету и свободное место в памяти устройства.
  3. Поддержка NFC.
  4. Система Mifare Classic.

Не все телефоны с поддержкой NFC имеют Mifare Classic, всё зависит от устройства. Информацию по этому поводу можно уточнить у производителя или найти в инструкции по эксплуатации сотового.

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

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

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

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

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

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

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

Контроллер подключается в сеть c помощью Ethernet-кабеля. Начальная настройка требует только задать IP-адрес устройства. Никакого программного обеспечения, помимо браузера, не требуется.

Читайте ещё про NFC:  Samsung Pay в Беларуси - как пользоваться, как подключить, какие банки поддерживают Самсунг Пей

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


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

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

Через приложение «мой проездной»

Чтобы использовать приложение «Мой проездной» необходим доступ к Интернету и поддержка вашим телефоном NFC. Установить «Мой проездной» можно только на Android из Play Market. После загрузки и установки приложения, запустите его и подержите карточку несколько секунд у задней панели мобильного телефона. После установления контакта система считает всю необходимую ей информацию.

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


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

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

Ответ карты 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