- Превращаем «Тройку» или банковскую карту в NFC-метку для iPhone
- Для начала: что понадобится для всей этой затеи
- Окей, продолжаем: как активировать работу NFC в iPhone
- Что делать дальше: как использовать NFC-метки с iPhone
- Кстати: как изменить список задач для данной NFC-метки
- И еще: как удалить с iPhone автоматизацию для NFC
- Напоследок: какие задачи можно назначить на NFC-метку
- Карта Тройка в телефоне Айфон (iPhone) и Android: как ее привязать
- Nfc «тройка» = «мой проездной»
- Как зарегистрировать карту «тройка» в программе лояльности «город»
- Как проверить баланс счета
- Контроллер борей
- Обработка pdol (processing options data object list)
- Оплата проезда
- Пополнить «тройку» теперь можно через nfc без желтого валидатора
- Преимущества и возможности сервиса
- Старт платежного приложения — select aid
- Читаем emv-карты на коленке
- Начало коммуникации — команда select (ppse)
- Старт платежного приложения — select aid
- Обработка pdol (processing options data object list)
- Поиск pan-номера
Превращаем «Тройку» или банковскую карту в NFC-метку для iPhone
Apple добавляет в свои смартфоны NFC, начиная с iPhone 6. Тем не менее, до недавнего времени данный модуль можно было использовать только для нужд платежного сервиса Apple Pay. Никаких тебе NFC-меток или доступа к модулю для сторонних разработчиков. Да что там, даже карту «Тройка» для московского общественного транспорта нормально пополнить через iPhone нельзя было — это вам точно не Android, к которому достаточно приложить ее для записи нового баланса. Тем не менее, после выхода iOS 13 ситуация частично изменилась. «Тройку» нормально все еще не пополнишь, но из нее уже можно сделать NFC-метку.
Да, в iOS 13 появилась очень удобная возможность создать последовательность действий, которая будет выполняться после прикосновения к NFC-метке. Прекрасно понимаю, что за специальными «таблетками» в магазин вы сейчас вряд ли побежите. Тем не менее, можно использовать подручные средства, которые наверняка валяются у вас в кошельке. К примеру, подойдет карта «Тройка» для московского общественного транспорта или аналогичная с чипом NFC, а также любая банковская карта с поддержкой бесконтактной оплаты (PayPass). Остальное на себя возьмет приложение «Команды».
Для начала: что понадобится для всей этой затеи
iPhone. Подойдет смартфон Apple с поддержкой iOS 13 и модулем NFC — это iPhone SE, а также iPhone 6s (Plus) и выше. Несмотря на то, что данную технологию производитель начал использовать еще в iPhone 6 (Plus), у него нет поддержки необходимого приложения для автоматизации, о чем дальше. Кстати, на iPad модуль NFC также есть, но обрезанный. Он используется для оплаты покупок в интернете через Apple Pay — он нужен для безопасности проведения данной процедуры. Но в нем нет антенн, поэтому о полноценном использовании для чтения NFC-меток не может быть даже речи.
«Команды». Фирменное приложение Apple, которое предназначено для автоматизации рутинных процессов. Оно выросло из программы Workflow, которую компания купила несколько лет назад. В iOS 13 данный инструмент установлен по умолчанию и тесно интегрирован в операционную систему. На гаджеты под управлением iOS 12 же можно поставить только приложение «Быстрые команды» — предыдущую версию «Команд». Оно также подходит для самых различных цепочек из действий, но не поддерживает «Автоматизацию», которая активирует последовательность задач после «встречи» с триггером. Одним из них и станет NFC-метка.
NFC-метка. Ей может стать «Тройка» или другая карта, в которую встроен чип NFC. Подойдут и банковские, которые поддерживают PayPass, о чем я уже писал выше. Можно заказать отдельные метки NFC, а также использовать в качестве триггера гаджеты с такими чипами — к примеру, наушники Sony WF-1000XM3. В них он встроен в зарядный кейс и предназначен для быстрого подключения к Android-смартфону. После выхода iOS 13 на iPhone также можно реализовать данную возможность, но для этого придется несколько минут потанцевать с бубном и настроить автоматизацию в приложении «Команды».
Окей, продолжаем: как активировать работу NFC в iPhone
Шаг 1. Открываем приложение «Команды».
Шаг 2. Переходим в раздел программы «Автоматизация».
Шаг 3. Выбираем возможность «Создать автоматизацию для себя».
Шаг 4. Смахиваем до меню «Настройки» и жмем на вариант NFC.
Шаг 5. Жмем на кнопку «Сканировать» в пункте «Тег NFC».
Шаг 6. Когда на экране появится соответствующая анимация с подписью «Готово к сканированию», подносим к задней части iPhone то, что станет NFC-меткой: банковская карта с поддержкой NFC, «Тройка» или что угодно, о чем я уже писал выше.
Шаг 7. Когда на экране появится всплывающее окно с предложением «Назовите этот тег», введите любое имя на свой вкус — например, «Тройка», если используете эту карту.
Шаг 8. Нажмите на кнопку «Далее», чтобы перейти в меню добавления действия.
Шаг 9. Нажмите на кнопку «Добавить действие», чтобы выбрать необходимую задачу, — после этого можете использовать кнопку ㊉, чтобы добавить одну или несколько дополнительных.
Шаг 10. Нажмите на кнопку «Далее», чтобы перейти в меню финальной настройки.
Шаг 11. В финальном меню создания автоматизации получится просмотреть условие (в нашем случае это использование NFC-метки), набор действий, а также выбрать необходимость подтверждения запуска с помощью переключателя «Спрашивать до запуска».
Шаг 12. Нажмите на кнопку «Готово», чтобы подтвердить создание автоматизации.
Что делать дальше: как использовать NFC-метки с iPhone
Для этого достаточно приложить NFC-метку, которой может стать даже «Тройка», к задней части iPhone. Если на 11-м шаге предыдущего пункта переключатель «Спрашивать до запуска» переведен в активное положение, на экране смартфона появится предложение выполнить указанную тегом команду.
Если вы отказались от необходимости подтверждения, указанная последовательность действий будет происходить автоматически сразу после соприкосновения с NFC-меткой. При этом на экране также будет появляться уведомление, которое вкратце расскажет, что тег удалось удачно распознать.
Кстати, «Тройка» отлично справляется с тем, чтобы быть NFC-меткой. iPhone распознает ее и выполняет указанный список задач в 99% случаев. За все время, когда я пользуюсь данной фишкой, у меня было только одно неудачное происшествие, когда тег не сработал. Но тогда тестовая версия iOS, которой я пользуюсь, сама по себе решила зависнуть.
Кстати: как изменить список задач для данной NFC-метки
Шаг 1. Открываем приложение «Команды».
Шаг 2. Переходим в раздел программы «Автоматизация».
Шаг 3. Определяем автоматизацию, которую необходимо изменить.
Шаг 4. Выбираем перечень задач в меню «Сделать».
Шаг 5. Используем кнопку ㊉, чтобы добавить одну или несколько дополнительных задач, а также кнопку ⓧ, чтобы удалить ее.
Шаг 6. Нажимаем кнопку «Назад», чтобы вернуться к предыдущему меню, а также кнопку «Готово», чтобы сохранить изменение.
И еще: как удалить с iPhone автоматизацию для NFC
Шаг 1. Открываем приложение «Команды».
Шаг 2. Переходим в раздел программы «Автоматизация».
Шаг 3. Определяем автоматизацию, которую необходимо удалить.
Шаг 4. Смахиваем по ней от правого края к левому и выбираем возможность удалить.
Напоследок: какие задачи можно назначить на NFC-метку
Исходящие вызовы. Сначала кажется, что в совершении исходящих вызовов с помощью NFC-меток нет ровным счетом никакого смысла. Тем не менее, и у этой возможности есть очень интересные сценарии использования. К примеру, многие механизмы для автоматического открытия ворот можно использовать не только с помощью пульта, но и по звонку. Да, достаточно позвонить на заданный номер, и ворота начнут открываться. Если установить NFC-метку на удобное место в автомобиле, не нужно будет искать пульт или ковыряться в приложении «Телефон». Чтобы запустить механизм, достаточно будет лишь приложить iPhone к тегу.
Активация музыки. С помощью NFC-метки можно запустить воспроизведение альбома, плейлиста или любого другого перечня музыкальных записей и даже выбрать источник, через который это нужно сделать. Тег, как вариант, можно разместить аккурат на домашнем тренажере — например, на орбитреке, если такой имеется. Приклеиваем метку на любое удобное место, становимся на указанный тренажер и тут же слушаем любимую музыку для тренировок. Можно даже редакторский плейлист из Apple Music для подобных целей использовать — в фирменном музыкальном стриминговом сервисе компании таких предостаточно.
Создание будильника. Все используют данный способ контроля времени абсолютно по разному. Некоторые с помощью него только утром вовремя просыпаются, но есть и те, кто через него даже напоминания создает. Через NFC-метки логично активировать будильник на утро, если он нужен не каждый день. Если вы, как вариант, работаете посуточно, и просыпаться рано не нужно регулярно, можно решить это с помощью тега. Достаточно будет лишь прикоснуться к нему перед сном, и проспать выход на работу уже не выйдет. Это лишь один из сценариев, который вы можете додумать по своему усмотрению.
Запуск таймера. Если хотите значительно повысить свою эффективность на протяжении рабочего времени, лучше начать с фотографии дня. Для этого нужно хотя бы раз в 15 минут фиксировать то, чем вы сейчас занимаетесь. Нужно положить рядом блокнот, разметить его по заданным промежуткам и писать дела — работа, отдых, социальные сети и мессенджеры, прочее. Таймер на iPhone для этого нужно снова и снова ставить раз в заданный промежуток времени. Чтобы не сойти с ума от этого, проще всего использовать NFC-метку, которая активирует отсчет времени. «Тройка», которая всегда под рукой, подойдет.
Включение Apple TV. С помощью специального тега можно также активировать свою фирменную телевизионную приставку Apple, если она находится в режиме сна. Можно даже выполнить сразу две команды — сначала включить Apple TV, а потом запустить на iPhone пульт для ее управления. NFC-метку в этом случае логично бросить в том месте, куда вы обычно усаживаетесь, чтобы потреблять контент на большом телевизионном экране.
Что же, в итоге получается, что этот и другие подобные сценарии действительно помогут избавить себя от внушительного числа рутинных действий и повысят комфорт жизни с iPhone в руке. Зачет.
Источник
Карта Тройка в телефоне Айфон (iPhone) и Android: как ее привязать
Nfc «тройка» = «мой проездной»
При решении задач, связанных с разработкой интеграционного слоя между смартфоном и бесконтактной картой, нами использовались стандартные системные библиотеки, лицензированные владельцем технологии – компанией «NXP Semiconductors». Основной проблемой стало собственно определение типа NFC-контроллера.
Изначально предполагалось использовать стандартные функции, позволяющие при старте аппликации определять – поддерживает ли установленный NFC-контроллер взаимодействие с картами стандарта «Mifare Classic» или нет. В итоге пришлось модифицировать уже согласованный дизайн, поскольку выяснилось, что довольно большой процент бюджетных китайских смартфонов, оборудованных NFC-контроллером, всё-таки прекрасно поддерживает взаимодействие с «Тройкой», но при этом системная функция возвращала совершенно иной ответ.
Вообще, читая отзывы на маркете, начинаешь понимать несущественные на первый взгляд упущения. Так, например, многие думают, что бумажные билеты и карта «Тройка» – это одно и то же, и сильно удивляются, почему их карту приложение «Яндекс.Метро» читает, а приложение «Мой проездной» – нет. На самом деле, это совсем не так, «бумажные» билеты реализованы на носителях стандарта «Mifare Ultralight», а карта «Тройка» (на самом деле многоразовый носитель) использует стандарт «Mifare Classic», а это две большие разницы. Мы, кстати, в ближайших релизах поддержим чтение баланса «бумажных» билетов.
В целом поддержка работы с бесконтактными картами посредством мобильного телефона – это отдельная предметная область, поскольку питание бесконтактных карт реализовано на принципах индуктивности (чтобы было понятнее – вспомните обычный трансформатор, в нашем случае карт-ридер – это одна половинка трансформатора, а бесконтактная карта – другая половинка), и во многом это больше инженерные вопросы, чем собственно прикладное программирование.
Например, если чехол вашего смартфона поддерживает бесконтактную зарядку, то вероятность того, что даже при «правильном» NFC-контроллере будут читаться бесконтактные карты, не сильно высока. Дополнительные проблемы – это так называемые дуальные карты (т.е. карты, поддерживающие работу по контакту и бесконтакту), данные карты не только требовательны к питанию, но и зачастую требуют реализации для них отдельных алгоритмов взаимодействия.
Как зарегистрировать карту «тройка» в программе лояльности «город»
Эта система создана в 2021 году и предназначена для накопления скидок и бонусов. Их впоследствии можно потратить на оплату услуг в кафе и ресторанах, магазинах, театрах и даже на стойках велопроката. На данный момент программа «Город» насчитывает более 300 онлайн-партнеров и 5000 магазинов в Москве и МО.
Пройти регистрацию в системе можно через ее официальный портал или приложение, доступное в AppStore и Google Play Market.
Последний вариант удобнее: здесь сразу отображается баланс карты, количество баллов, уровень пользователя, свежие акции, доступные предложения со скидкой.
Технические требования к приложению:
- Apple – iOS старше 10.0. Возможна установка на iPhone, iPad, iPod Touch.
- Android – версия системы выше 5.0.
Принцип взаимодействия с приложением «Город»:
- После запуска и представления основных возможностей (предъявление в магазинах, соотношение бонусов и рублей) появится кнопка «Регистрация» – нажимайте на нее.
- Для проведения процедуры потребуется ввести 10-значный номер «Тройки». Также внизу доступен вариант входа через имеющийся аккаунт.
- Для проведения привязки (подтверждения законного использования карты) на следующем шаге появится окно с просьбой указать 2 станции метро, посещенных в последнем месяце. После их введения внизу появится кнопка «Далее».
- Для привязки карты также потребуется номер телефона – на него придет проверочный код. Сюда же будет приходить пароль во время обмена бонусов на скидку при покупке или оплате услуги.
- Дальше заполняются обычные персональные данные: ФИО, дата рождения, пол. Обязательно указывается и актуальная электронная почта.
- После этого программа предложит создать 4-значный пароль. Он же будет использоваться для входа в личный кабинет на официальном портале «Города».
Как проверить баланс счета
Для проверки карты Тройки специально разработано несколько эффективных методов. Так как карта использует принцип электронного кошелька, есть методы, позволяющие производить проверку баланса без ее фактического использования. Рассмотрим детально все варианты проверок:
Практически на всех станциях московского метрополитена есть специальные желтые терминалы, которые крепятся ближе к кассам. Пластиковый носитель просто прикладывается к сканеру терминала и через определенное время на экран выводится подробные сведения с карты.
Официальные приложения от разработчиков: «Тройка Проверка баланса», «Транспортные карты Москвы», «Мой проездной».
Все владельцы мобильных гаджетов Android, iOS со встроенной функцией NFC, смогут быстро произвести проверку баланса через установленное приложение. Для этого нужно приложить карту к задней панели смартфона, после чего на экран телефона выводятся все необходимые сведения с карты.
Опция «Мобильный билет».
Многие современные гаджеты поддерживают универсальную функцию «Мобильный билет», подключить которую легко в любом официальном салоне связи оператора. Проверка баланса производится через главное меню, в разделе «Баланс».
К сожалению, пока карта «Тройка» не имеет личного пользовательского кабинета, но официальный представитель обещает клиентам разработать его к 2020 году. Прогресс не стоит на месте, в скором будущем использовать Тройку будет еще проще и комфортней.
Контроллер борей
Контроллер — это устройство, на которое передается идентификатор карты от считывателя. Оно хранит базу данных идентификаторов карт и решает, кого пропускать, а кого нет, управляя замком двери.
Часто контроллеры СКУД состоят из нескольких блоков управления и компьютера с базой данных. Мы принципиально не хотели держать отдельный компьютер и искали компактное решение в виде одного устройства, которым можно управлять через API для интеграции с Telegram-ботом.
Поиск такого устройства занял больше месяца, пока я не наткнулся на старую статью на хабре «Обзор СКУД с бесплатным программным обеспечением». В комментариях пользователь rgmih упомянул, что их компания производит именно такой контроллер.
Так мы нашли контроллер БОРЕЙ от компании ИТРИУМ.
Плата контроллера БОРЕЙ в настенном корпусе
Устройство работает под управлением Linux на базе ARM-процессора.
Основные достоинства устройства, которые редко можно встретить у других контроллеров:
- Полностью автономный — все функции выполняет одно устройство. Для управления не нужно дополнительных программ или отдельного компьютера. База данных хранится на SD-карте. При отключении интернета контроллер продолжит работать.
- Web интерфейс и REST API — возможность управлять контроллером через браузер и интегрировать с Telegram-ботом через API. Позволяет управлять пропусками удаленно.
- Подключение по Ethernet — устройство подключается в IP-сеть. Имеет встроенный коммутатор на 2 порта.
- Идентификаторы произвольной длины до 64 бит — возможность интегрировать контроллер с нестандартными идентификаторами разной длины. Позволяет иметь гибридную систему с идентификаторами разной длины.
В момент считывания карты, считыватель передает прочитанный идентификатор карты на контроллер по протоколу Wiegand. Контроллер ищет идентификатор в своей базе данных и решает, можно ли этому идентификатору открывать дверь или нет.
Если можно, контроллер размыкает реле магнитного замка на двери и посылает сигнал световой и звукой индикации на считыватель. Считыватель издает одобрительный писк и загорается зеленым цветом.
Если доступ запрещен, контроллер посылает сигнал индикации на считыватель, и тот горит красным цветом и пищит о том, что доступ не разрешен.
Контроллер подключается в сеть c помощью Ethernet-кабеля. Начальная настройка требует только задать IP-адрес устройства. Никакого программного обеспечения, помимо браузера, не требуется.
Учетные записи заводятся в меню «Бюро пропусков». Чтобы не вводить идентификатор карты вручную, его можно поднести к считывателю в момент создания учетной записи.
Создание нового пропуска в веб-интерфейсе контроллера БОРЕЙ
Веб-интерфейс позволяет управлять заведением пользователей удаленно с любого устройства и следить за журналом событий, не находясь на рабочем месте. Даже если связь контроллера с интернетом пропадет, это не нарушит его работу, так как вся база данных хранится локально, а интернет нужен только для внесения изменений.
Обработка 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.
Пропустим этот ответ через
Видно, что значение PDOL начинается с маркера 9F38 и равно 9F66049F02069F03069F1A0295055F2A029A039C019F3704. Парсер emvlab.org не умеет парсить значения PDOL, поэтому воспользуемся программой для Android-смартфонов Credit Card Reader.
Вот тот же ответ, обработанный более умным парсером. Видно каждый параметр PDOL:
Данный парсер не скрывает байт длины после маркера, как это делает emvlab.org. Поэтому последний байт каждого маркера следует читать как длину.
Разберем запрос PDOL подробнее
Подробное описание всех возможных параметров 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 должен выглядеть так:
Подробнее про формат TTQ
Карты MasterCard, которые мне довелось испытать, позволяли игнорировать PDOL и отдавали PAN-номер без корректного ответа на PDOL.
Вот как будет выглядеть минимальный рабочий ответ на запрошенный выше PDOL:
Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера
с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)
Оплата проезда
Транспортная карта «Тройка» — электронная карта для оплаты проезда на городском транспорте и услуг городских сервисов. Залоговая стоимость «Тройки» — 50 рублей. Залог можно вернуть при возврате карты в кассу.
Также выпущены объединённые транспортные карты «Тройка» с приложением «Стрелка» и транспортные карты «Стрелка» с приложением «Тройка». Используя данные карты, пассажиры могут быстро и без очередей оплачивать проезд в общественном транспорте Москвы и Московской области.
Карту «Тройка» с транспортным приложением «Стрелка» можно получить в кассах ГУП «Московский метрополитен». Карта «Стрелка» с установленным приложением «Тройка» доступна в кассах ГУП МО «Мострансавто». Карты с объединённым функционалом имеют ту же залоговую стоимость, что и обычные карты.
Пополнить баланс объединённой транспортной карты можно с помощью агентской сети пополнения карты «Тройка» и карты «Стрелка», например, в салонах связи «Связной» и «Евросеть», терминалах «Элекснет», кассах и терминалах ОАО «Центральная ППК» и других. Полный список точек пополнения объединённых транспортных карт опубликован на Едином Транспортном Портале и на Официальном сайте транспортной карты «Стрелка».
На объединённую транспортную карту, как и на обычные транспортные карты «Тройка» и «Стрелка», можно записать билет или абонемент для проезда на пригородных электричках по всем железнодорожным направлениям.
Карты «Тройка» с транспортным приложением «Стрелка» можно приобрести в кассах метрополитена на станциях: «Юго-западная», «Теплый стан», «Бульвар Дмитрия Донского», «Южная», «Выхино», «Котельники», «Косино», «Новокосино», «Новогиреево», «Партизанская», «Щелковская», «ВДНХ», «Медведково», «Тимирязевская», «Речной вокзал», «Ховрино», «Белорусская» Замоскворецкой линии, «Белорусская» Кольцевой линии, «Планерная», «Сходненская», «Тушинская», «Курская» Арбатско-Покровской линии, «Курская» Кольцевой линии, «Павелецкая» Замоскворецкой линии, «Комсомольская» Сокольнический линии, «Комсомольская» Кольцевой линии «Домодедовская», «Кантемировская», «Киевская» Арбатско-Покровской линии, «Киевская» Кольцевой линии, «Парк Победы» Арбатско-Покровской линии.
Билеты, реализуемые на бумажных носителях , также могут быть записаны на карту «Тройка»!
Публичная оферта использования карты «Тройка» и карт, содержащих транспортное приложение, владельцем которого является ГУП «Московский метрополитен».
Порядок использования проездных билетов.
Пополнение баланса билета «Кошелёк» карты «Тройка» доступно напрямую из официального мобильного приложения «Метро Москвы» *
* — на мобильных устройствах с поддержкой технологии NFC.
Дает право на совершение поездок в пределах зачисленной суммы по фиксированным тарифам. Карту можно пополнить на сумму до 3 000 руб.
Тариф «90 минут» активируется автоматически при пересадке на другой транспорт. По нему можно совершить одну поездку на метро, монорельсе, МЦК или МЦД и неограниченное количество поездок на наземном транспорте.
Бесплатная пересадка при поездках на МЦД – только на метро, монорельс и МЦК (и обратно). Пересадка на наземный транспорт – платная.
На наземном транспорте бесплатная пересадка возможна в течение 90 минут с начала поездки между разными маршрутами автобуса, электробуса или трамвая.
Пересесть бесплатно в наземном транспорте можно по карте «Тройка», привязанной к личному кабинету в приложении «Метро Москвы» или на сайте nfcexpert.ru .
Как это сделать?
Одна поездка на метро, монорельсе, МЦК, МЦД зона «Центральная» или неограниченное количество поездок на наземном транспорте в течение 90 минут | 42 |
Поездка на метро, монорельсе, МЦК и МЦД зоны «Центральная», «Пригород» | 50 |
Поездка на метро, монорельсе, МЦК, МЦД зона «Центральная» неограниченное число пересадок на наземном транспорте в течение 90 минут | 65 |
Пополнить «тройку» теперь можно через 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. Вместо этого учетной записи смартфона или часов присваивается уникальный номер, который шифруется и хранится в чипе «Безопасный элемент» устройства. Каждая транзакция авторизуется через уникальный одноразовый секретный код.
В новом релизе приложения «Метро Москвы» также появился раздел для болельщиков Кубка конфедераций.
«К Кубку конфедераций ФИФА — 2021 мы добавили для болельщиков специальный раздел на русском, английском, испанском и немецком языках. В нем собрана вся полезная информация для приезжающих на игры Кубка гостей. Это расписание матчей, описание команд-участниц, правила бесплатного проезда в московском транспорте и другая информация», — рассказал Максим Ликсутов.
Метро станет одним из основных видов транспорта для болельщиков, которые приедут на матчи Кубка конфедераций. Турнир пройдет с 17 июня по 2 июля в четырех городах России. Для удобства туристов названия станций на всех линиях метро дублируются на английском языке. Кассы с англоязычными сотрудниками на популярных среди иностранных гостей станциях отметили специальными стикерами. Кроме того, в терминалы метро для покупки билетов загрузили программное обеспечение с дублированием основных функций на английском .
Мобильное приложение «Метро Москвы» появилось в App Store и Google Play в этом году. Его скачали уже более 375 тысяч пользователей.
Через это приложение пассажиры могут строить совмещенные маршруты по всему городу с использованием всех видов транспорта — автобусов, троллейбусов, трамваев, метро и МЦК, электричек и аэроэкспрессов. Кроме того, в сервисе есть справочник основных достопримечательностей Москвы, к каждой из которых можно построить маршрут. Приложение расскажет и о перехватывающих парковках рядом с подземкой — о тарифах и свободных местах на них.
Преимущества и возможности сервиса
Данная услуга идеально подойдет людям, которые являются поклонниками проведения платежей путем использования бесконтактных технологий, что освобождает их от необходимости носить с собой не только наличные средства, но и платежные банковские карты, а также пластиковые электронные проездные.
После появления «Тройки» в 2021 этот сервис сумел в кратчайшие сроки завоевать популярность среди многих людей, вынужденных часто пользоваться услугами общественного транспорта. С помощью «Мобильного билета» можно оплатить не только проезд в наземном муниципальном транспорте, но и также заплатить за проход через турникеты Московского метрополитена.
Так, к примеру, достаточно давно на входе в Третьяковскую галерею было установлено специальное считывающее устройство, через которое можно осуществить оплату прохода путем использования бесконтактных технологий оплаты. При этом с баланса мобильного номера будет списана сумма, эквивалентная стоимости входного билета в этот музейный комплекс.
Также технология бесконтактной оплаты используется музеем советских игровых автоматов. В этом заведении смартфоном можно приобрести один детский и один взрослый проходной билет.
Главным достоинством «Тройки», привязанной к смартфону, является то, что при ее использовании для оплаты проезда в муниципальном транспорте стоимость проездного билета будет несколько дешевле, чем бумажного аналога. Оплата происходит в течение нескольких секунд, что позволяет экономить время на получении сдачи.
В ближайшее время ожидается поставка услуги бесконтактной оплаты через привязанную к смартфону «Тройки» другими коммерческими организациями, что дополнительно расширит возможности этого платежного инструмента.
Старт платежного приложения — select aid
В ответ на SELECT PPSE карта должна вернуть FCI (File Control Information) со списком приложений, существующих на карте. Помимо платежных приложений (VISA, MasterCard, AmericanExpress) карта может содержать неплатежные приложения, используемые для других нужд.
Ответ карты VISA на SELECT PPSE
Для удобства проанализируем ответ с помощью онлайн-парсера формата 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
Получив значение AID, его нужно запустить командой SELECT. В данном случае мы запускаем приложение Visa International, полученное из ответа на PPSE SELECT
APDU-команда SELECT AID
Читаем 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 команду на карту, достаточно такого когда:
Начало коммуникации — команда select (ppse)
Официальное описание: EMV Contactless Specifications — PPSE and Application Management for Secure Element
Начало общения с EMV-картой всегда происходит с чтения файла PPSE (Payment System Environment) командой SELECT.
APDU-команда SELECT PPSE
Старт платежного приложения — select aid
В ответ на SELECT PPSE карта должна вернуть FCI (File Control Information) со списком приложений, существующих на карте. Помимо платежных приложений (VISA, MasterCard, AmericanExpress) карта может содержать неплатежные приложения, используемые для других нужд.
Ответ карты VISA на SELECT PPSE
Для удобства проанализируем ответ с помощью онлайн-парсера формата 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
Получив значение AID, его нужно запустить командой SELECT. В данном случае мы запускаем приложение Visa International, полученное из ответа на PPSE SELECT
APDU-команда SELECT AID
Обработка 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.
Пропустим этот ответ через
Видно, что значение PDOL начинается с маркера 9F38 и равно 9F66049F02069F03069F1A0295055F2A029A039C019F3704 . Парсер emvlab.org не умеет парсить значения PDOL, поэтому воспользуемся программой для Android-смартфонов Credit Card Reader .
Вот тот же ответ, обработанный более умным парсером. Видно каждый параметр PDOL:
Данный парсер не скрывает байт длины после маркера, как это делает emvlab.org. Поэтому последний байт каждого маркера следует читать как длину.
Разберем запрос PDOL подробнее
Подробное описание всех возможных параметров 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 должен выглядеть так:
Подробнее про формат TTQ
Карты MasterCard, которые мне довелось испытать, позволяли игнорировать PDOL и отдавали PAN-номер без корректного ответа на PDOL.
Вот как будет выглядеть минимальный рабочий ответ на запрошенный выше PDOL :
Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера
с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)
Поиск pan-номера
Так как нам лень писать полную имплементацию протокола EMV, разбирать все структуры ответов и формировать корректные запросы, мы поступим глупым способом, а именно пошлем все возможные запросы и будем просто искать в ответах нужный маркер, содержащий PAN-номер.
PAN-номер может содержаться в трех местах:
APDU-команды (что они значат вообще? Хз, нужно прочитать)
И парсим все ответы на предмет маркеров
. Найденные 8 байт карты можно дополнительно чекнуть на контрольную сумму с помощью
Если номер валидный, берем его последние десять цифр.
В итоге наш примитивный алгоритм чтения PAN-номера можно изобразить в виде блок-схемы
Источник