Как добавить карту «Тройка» в Apple Wallet за 4 простых шага
Помимо поддержки системы бесконтактных платежей в магазинах, у Apple Pay есть и другие полезные функции. Так, кошелёк на iPhone позволяет добавить не только расчётные карты, но и виртуальные проездные.
Это даёт возможность производить оплату в метро при помощи телефона и избавляет пользователей от необходимости иметь при себе физическую версию пластика. Кроме того, это современный, удобный и быстрый способ рассчитываться в метро, который экономит время.
Привязать проездной к айфону можно при помощи приложения Wallet.
Что такое «Тройка»
«Тройка» — это проездной с возможностью пополнения. Пластик используется для оплаты проезда в муниципальном транспорте Москвы, а также предлагает держателям различные бонусы и скидки.

«Тройка» выпускается как в виде привычной синей карты, так и в форме колец, браслетов и даже брелоков. При этом она не ограничена лишь физической версией. Благодаря технологии NFC, её можно привязать к любому устройству, которое поддерживает функцию бесконтактных платежей.
Добавление «Тройки» на iPhone или Apple Watch
Физическую версию пластика можно оставить в кармане другой куртки, забыть в сумке или в спешке не взять с собой. Без телефона, как правило, из дома уже не выходит никто.
Чтобы использовать виртуальную версию «Тройки», прежде всего её необходимо привязать к смартфону. Рассмотрим, как добавить «Тройку» в Wallet на разных устройствах.
Добавление на iPhone
Чтобы привязать транспортную карту к виртуальному кошельку айфона, нужно:
- Открыть Wallet.
- Добавить новую карту, нажав на «+».
- Ввести данные пластика или отсканировать его, используя камеру.
- Подтвердить добавление смс-паролем.
После этого карта будет активна и может использоваться в качестве бесконтактного проездного в телефоне.
Добавление на Apple Watch
Помимо телефона для расчётов в транспорте можно использовать смарт-часы.

Чтобы добавить «Тройку» на Apple Watch, нужно:
- Зайти в Apple Watch через телефон.
- Перейти в раздел «Мои часы».
- Выбрать пункт «Wallet и Apple Pay».
- Нажать на «+» и ввести данные пластика, либо отсканировать его.
Это позволит оплачивать проезд, не доставая телефон, а просто поднося руку к терминалу в транспортном средстве.
Перенос физической карты «Тройка» в Apple Wallet
Добавить уже имеющуюся «Тройку» в Apple Wallet можно также через раздел «Транспортные карты». Для этого устройство потребуется обновить до последней версии iOS или watchOS.
На iPhone
Чтобы перенести физическую «Тройку» в кошелек айфона, нужно:
- Зайти в Wallet.
- Нажать на «+» и перейти в раздел добавления пластика.
- Перейти в раздел «Транспортная карта».
- Выбрать «Тройку» из списка вручную или найти её по названию.
- Нажать на «Перевести баланс с имеющейся карты».
- Ввести данные пластика.
- Разместить айфон над картой и дождаться уведомления, подтверждающего, что ее виртуальная версия была успешно добавлена.
На Apple Watch
Алгоритм привязки «Тройки» к Apple Watch следующий:
- Открыть Apple Watch на смартфоне.
- Перейти в «Мои часы».
- Выбрать раздел «Wallet и Apple Pay».
- Нажать на «Добавить карту».
- Перейти к пункту «Транспортная карта».
- Выбрать пластик из списка и нажать на «Продолжить».
- Нажать на пункт «Перевести баланс с имеющейся карты».
- Ввести данные пластика.
- Разместить айфон над картой и дождаться уведомления об успешном добавлении.
Использование «Тройки» в экспресс-режиме
Эта функция позволяет производить оплату без подтверждения операции отпечатком, кодом или Face ID, что позволяет ускорить процесс расчётов и сделать его удобнее, например, в условиях масочного режима.

Чтобы активировать экспресс-режим, первоначально следует добавить «Тройку» в Apple Pay. После этого пользователю потребуется:
- Зайти в настройки и нажать на Wallet.
- Перейти в раздел «Экспресс-карта».
- Выбрать «Тройку» из появившегося списка добавленных карт.
После этого пользователю будет доступна экспресс-оплата.
Перенос «Тройки» между устройствами
Приложение Wallet позволяет использовать транспортную карту только на одном устройстве. При замене айфона на новую модель, либо при покупке Apple Watch всю информацию о добавленном ранее пластике можно переместить между устройствами.
Как переместить «Тройку» с iPhone на Apple Watch
Чтобы перенести информацию о «Тройке» на смарт-часы, нужно:
- Открыть Apple Watch на iPhone.
- Зайти в раздел «Мои часы».
- Выбрать пункт «Wallet и Apple Pay».
- Нажать на кнопку «Добавить» возле карты «Тройка».
Как переместить «Тройку» на новый iPhone
Если перенос информации будет осуществляться между двумя айфонами, необходимо:
- Открыть Wallet на старом iPhone и выбрать транспортную карту.
- Нажать на «Ещё».
- Выбрать пункт «Удалить эту карту» внизу страницы и подтвердить действие.
- Открыть Wallet на новом смартфоне и нажать на «+».
- Выбрать пункт «Ранее добавленные карты» и выбрать «Тройку».
- Добавить пластик на новое устройство.
Плюсы и минусы использования «Тройки» в Wallet
К основным плюсам оплаты проезда с помощью виртуальной «Тройки» через кошелёк айфона можно отнести:
- удобство — пластик всегда будет доступен в вашем смартфоне, даже если его физическая версия утеряна или забыта дома;
- простота использования – достаточно поднести айфон к терминалу с бесконтактной оплатой;
- скорость расчётов – благодаря экспресс-режиму можно настроить оплату без подтверждения и экономить время;
- удобный интерфейс — в приложении нет ничего лишнего, все действия и алгоритмы интуитивны, разобраться в его работе не представляет особых трудностей;
- приложение бесплатное и встроено в айфон по умолчанию, пользователям не нужно оплачивать подписку или скачивать приложение за деньги.

К минусам использования транспортной карты в Wallet часто относят:
- риски — если айфон разрядится, например, на морозе, воспользоваться привязанным к кошельку пластиком будет невозможно. Если телефон потеряется, всю информацию придётся добавлять заново;
- в приложении нельзя пополнить карту;
- оплата может не сработать, если возникнут проблемы с терминалом, либо же считыватель не будет оснащён NFC-чипом;
- удивление людей — консервативность старшего поколения может привести к непониманию с их стороны. Нельзя сказать, что это очевидный минус, но иногда это может вызвать ряд вопросов.
Если у Вас остались вопросы по добавлению карты Тройка в Wallet, задавайте их в комментариях, и наш эксперт обязательно Вам ответит.
Как добавить карту Тройка в Apple Pay. Инструкция. || Приложение тройка для айфон
Сейчас каждый хочет всучить вам свою карту: магазины, фитнес-клубы, парковки, бизнес-центры, VIP-скидки-баллы-накопления. Предлагать человеку носить с собой еще одну карту просто унизительно. А учитывая, что карты стандарта EM-Marine (125kHz), которые популярны в системах контроля доступа на территории СНГ, имеют толщину в три раза больше обычных ISO 7810 — это втройне унизительно.Поэтому первое требование к нашей системе — никаких дополнительных карт.
Помимо физических размеров, карты EM-Marine технологически отсталые. Такую карту можно легко клонировать с расстояния полуметра прямо из кармана прохожего.
Возможна ли оплата в метро с айфона
Платежная система Эппл Пэй появилась в России в 2016 году. Но возможность оплаты проезда в метро с ее помощью стала доступной пользователям только в апреле 2019 года. И то, с некоторыми ограничениями:
- расплачиваться через Apple Pay можно только в метрополитене Москвы и Санкт-Петербурга;
- оплату поддерживают только турникеты с датчиками квадратной формы.
Но это в любом случае большой шаг вперед. Кроме того, ограничения с лихвой нивелируются преимуществами использования платежного сервиса:
- расчет с помощью Apple Pay можно производить не только на турникетах, но и в кассах и терминалах метрополитена;
- необходимые для пользования Эппл Пэй устройства установлены на всех станциях метрополитена;
- при покупке билета данным способом действует 20%-я скидка на проезд.

В ближайшем будущем планируется введение поддержки эппловского платежного сервиса в метрополитенах Екатеринбурга и Новосибирска. На момент написания статьи (начало 2019 года) такой возможности нет, но советуем жителям этих городов следить за новостями.
Оплата метро Apple Pay происходит точно так же, как и оплата любой другой покупки с помощью этого платежного сервиса. Если вы пользуетесь айфоном или айпадом, алгоритм действий будет таким:
- откройте приложение Wallet;
- выберите нужную карту;
- поднесите гаджет к датчику турникета или терминалу в кассе;
- приложите палец к сканеру отпечатков;
- дождитесь подтверждения транзакции.
Для платежа с помощью iWatch нужно будет дважды нажать на кнопку сбоку корпуса часов и поднести их к считывающему устройству на турникете или в кассе так, чтобы экран часов был обращен к устрйоству. Как только проезд будет оплачен, часы завибрируют, сообщая об успешном проведении операции.
Все СКУД неудобные
Все существующие системы контроля доступа на наш взгляд слишком переусложнены и неудобны. Они требуют выпуска отдельных карт, установки программ, обучения персонала, запоминания последовательности действий с мастер-картами, и т.д.
В некоторых случаях сложные СКУД необходимы: в крупных зданиях с множеством зон доступа, турникетами, охраной, временными пропусками.
В случаях, когда контролировать доступ нужно к одной или двум дверям, такие усложнения не оправданы. Даже содержание отдельного компьютера с программой под СКУД — перебор для нас.
У нас нет отдельных сотрудников, занимающихся выпуском пропусков, нет временных пропусков и охраны. Администрирование системы должно быть настолько простым, чтобы любой новый человек мог быстро её освоить без инструкций. Так как ответственного за СКУД человека может не быть на месте, управление системой должно быть удаленным.
Карта «Тройка» как идентификатор
Карта «Тройка» — пополняемая карта для оплаты проезда на всех видах общественного транспорта Москвы. Это наиболее выгодный и удобный способ оплаты общественного транспорта и некоторых городских услуг: планетарий, каток, зоопарки, Третьяковская галерея, парковка. Поэтому «Тройка» есть у каждого москвича, который регулярно пользуется общественным транспортом. Приобрести карту можно в кассах метрополитена за ≈1$.
Технически карта выполнена на базе чипа Mifare Plus, работающего в режиме SL1 — режим эмуляции Mifare Classic 1K. На обратной стороне карты находится 10-значный номер, который используется для удаленного пополнения баланса карты. Этот номер удобно использовать в качестве идентификатора в СКУД.

Номер карты «Тройка» (не путать c UID чипа) хранится в защищенной памяти в блоке 32 со второго байта по младшие четыре бита седьмого байта. Для чтения этой области памяти необходим А-ключ от сектора 8. Эти ключи давно не являются секретом и легко находятся в интернете вместе с подробным описанием формата хранения данных. Так как мы не собираемся записывать никакие данные на карту, нам достаточно ключа А для чтения нужного сектора.
Таким образом, для занесения нового пропуска в базу данных достаточно визуально считать номер карты и сообщить его администратору. Это можно сделать даже удаленно.
В Санкт-Петербурге существует похожая карта «Подорожник». При необходимости её можно также использовать в качестве идентификатора, одновременно с картой «Тройка».
Привязка транспортной карты к Эппл Пэй
Жители столиц, которые часто пользуются общественным транспортом, обычно используют для оплаты проезда карту «Тройка». Это платежное средство давно стало привычным и удобным. Поэтому часто возникает вопрос, как добавить карту «Тройка» в Apple Pay, чтобы продолжать пользоваться ею через смартфон.
Увы, внести транспортную карту в память гаджета возможности нет. Сервис Apple Pay рассчитан на работу исключительно с банковскими картами систем Visa и MasterCard. А Тройка не является банковской картой и, соответственно, не удовлетворяет необходимым условиям привязки к платежному сервису:
- карта не относится ни к одной платежной системе;
- номер «Тройки» не совпадает со стандартами нумерации банковских карт (11 символов вместо 12-ти);
- у «Тройки» нет кода безопасности;
- карта не имеет фиксированного срока годности (она действует в течение 5 лет после последнего применения).
То есть, даже если вы попытаетесь ее отцифровать, вы просто заполнить соответствующие поля в Валлете. Так что, даже несмотря на наличие современного платежного сервиса в телефоне или часах, карту «Тройка» вам придется использовать в натуральном виде.
Первый прототип

Было решено использовать в качестве идентификатора пользователя 10-значный номер, который будет формироваться либо из десяти последних цифр PAN-номера платежной карты, либо из номера карты «Тройка». Идентификатор должен передаваться контроллеру, который будет сверять его с хранящимися в базе данных номерами и решать, открывать дверь, или нет.
Всю работу по распознаванию карты должен выполнять считыватель, и на выходе отдавать 10-значный номер. В базе данных достаточно хранить только сами номера, без необходимости отмечать тип карты.
Контроллер БОРЕЙ
Контроллер — это устройство, на которое передается идентификатор карты от считывателя. Оно хранит базу данных идентификаторов карт и решает, кого пропускать, а кого нет, управляя замком двери.
Часто контроллеры СКУД состоят из нескольких блоков управления и компьютера с базой данных. Мы принципиально не хотели держать отдельный компьютер и искали компактное решение в виде одного устройства, которым можно управлять через API для интеграции с Telegram-ботом.
Поиск такого устройства занял больше месяца, пока я не наткнулся на старую статью на хабре «Обзор СКУД с бесплатным программным обеспечением». В комментариях пользователь rgmih упомянул, что их компания производит именно такой контроллер.
Так мы нашли контроллер БОРЕЙ от компании ИТРИУМ.
Плата контроллера БОРЕЙ в настенном корпусе
Устройство работает под управлением Linux на базе ARM-процессора.

Основные достоинства устройства, которые редко можно встретить у других контроллеров:
- Полностью автономный — все функции выполняет одно устройство. Для управления не нужно дополнительных программ или отдельного компьютера. База данных хранится на SD-карте. При отключении интернета контроллер продолжит работать.
- Web интерфейс и REST API — возможность управлять контроллером через браузер и интегрировать с Telegram-ботом через API. Позволяет управлять пропусками удаленно.
- Подключение по Ethernet — устройство подключается в IP-сеть. Имеет встроенный коммутатор на 2 порта.
- Идентификаторы произвольной длины до 64 бит — возможность интегрировать контроллер с нестандартными идентификаторами разной длины. Позволяет иметь гибридную систему с идентификаторами разной длины.
В момент считывания карты, считыватель передает прочитанный идентификатор карты на контроллер по протоколу Wiegand. Контроллер ищет идентификатор в своей базе данных и решает, можно ли этому идентификатору открывать дверь или нет.
Если можно, контроллер размыкает реле магнитного замка на двери и посылает сигнал световой и звукой индикации на считыватель. Считыватель издает одобрительный писк и загорается зеленым цветом.
Если доступ запрещен, контроллер посылает сигнал индикации на считыватель, и тот горит красным цветом и пищит о том, что доступ не разрешен.
Контроллер подключается в сеть c помощью Ethernet-кабеля. Начальная настройка требует только задать IP-адрес устройства. Никакого программного обеспечения, помимо браузера, не требуется.
Учетные записи заводятся в меню «Бюро пропусков». Чтобы не вводить идентификатор карты вручную, его можно поднести к считывателю в момент создания учетной записи.
Создание нового пропуска в веб-интерфейсе контроллера БОРЕЙ
Веб-интерфейс позволяет управлять заведением пользователей удаленно с любого устройства и следить за журналом событий, не находясь на рабочем месте. Даже если связь контроллера с интернетом пропадет, это не нарушит его работу, так как вся база данных хранится локально, а интернет нужен только для внесения изменений.
ТРОЙКА


Супер удобно! Глубокий поклон разработчикам! Приложила карту к задней крышке телефона — выбрала пополнение счёта — отложила карту — выбрала банковскую карту и сумму — приложила обратно тройку когда телефон потребовал и всё! У меня привязано неск.банковских карт и пополняю за 10 секунд. Я в восторге! Спасибо большущее!
Ольга Светлая
Пользователь приложения «Тройка. Проверка и пополнение»
С каждым разом приложение все лучше и лучше. На старичке, Samsung Galaxy S7 работает отлично. Раньше не принимали карту с кешбеком от Альфабанка. Сейчас такой проблемы нет. Все яблочники мне на работе завидуют.
Максим Михайлов
Пользователь приложения «Тройка. Проверка и пополнение»
Если честно, я в шоке. В хорошем смысле слова! Первая прога из всех тех, что я пробовал прочитала мою тройку. До этой проги все как один писали, что мой телефон не поддерживает чтение тройки. Разработчикам респект. Телефон Samsung S8+ Спасибо Вам.
Алексей Анатольевич Суслов
Пользователь приложения «Тройка. Проверка и пополнение»
Прекрасная программа, ничего лишнего не прикручено, легкая как перышко) место и память совсем не жрет! Есть с чем сравнить, на другом приложении обплевалась вся, столько ненужностей умудрились засунуть, что даже запись к парикмахеру возможна)) когда поставила это приложение, вздохнула с облегчением! Кстати у меня SONY но никаких проблем как небыло так и нет!
Olga Kazakova
Пользователь приложения «Тройка. Проверка и пополнение»
Частые вопросы
Приводим ответы на самые популярные вопросы, связанные с пополнением карт «Тройка». Если вы не нашли ответа на свой вопрос, напишите нам в поддержку в самом приложении, или через форму в разделе «Контакты» сайта
1. Зачем требуется NFC для вашего приложения?
Так устроена карта «Тройка», поскольку она является носителем электронных билетов.
Билеты записываются и хранятся непосредственно на самой карте. Даже если Вы пополняете «Тройку» на какую-то сумму, это значит, что Вам необходимо записать билет «Кошелек» соответствующего баланса.
Вот почему, чтобы прочитать карту «Тройка» на смартфоне, нужен NFC (упрощенно говоря, турникеты и кассы метро, автоматы по продаже билетов и валидаторы в автобусах — тоже оснащены NFC).
Также NFC нужен для того, чтобы записать купленный билет (пожалуйста, не забывайте этого делать — если Вы не записали билет (пополнение), он сам собой на карту «Тройка» не запишется).
Такой подход обеспечивает очень высокую скорость прохода, например, через турникеты метро.
Поэтому не путайте карту «Тройка» с обычными банковскими картами. При предъявлении банковской карты, например, в магазине, в большинстве случаев требуется онлайн-связь. Если нет связи — нет оплаты. А картой «Тройка» можно пользоваться в метро и наземном транспорте практически мгновенно, вне зависимости, есть связь или нет.
Некоторые пользователи пишут: «Что ж мне теперь, менять телефон, если нет NFC!» и ставят низкую оценку приложению.
Отвечаем таким пользователям: это так же, как и сетовать на то, что не можете выйти в Интернет, потому что у вас, например, нет или сломался модуль Wi-Fi. Или на то, что на кнопочном телефоне без камеры Вы не можете делать и выкладывать фото в Instagram.
Если Ваше устройство не обладает требуемыми техническими возможностями для прямого пополнения карты «Тройка», пользуйтесь другими способами пополнения (напр, через кассы метро). Приложение здесь ни при чем.
2. Нужно ли активировать пополнение после покупки на желтых информационных терминалах метрополитена?
Нет.
Билет после покупки сразу записывается на карту «Тройка», активировать ничего не нужно. В этом как раз и преимущество нашего приложения.
При условии, конечно, что Вы не забыли записать купленный билет через приложение, следуя сообщениям на экране, т. к. пользователь самостоятельно записывает билет (пополнение)), по аналогии с билетными автоматами или вендинговыми аппаратами.
Только в качестве билетного автомата выступает Ваш смартфон с установленным на нем нашим приложением.
3. Приложение не читает «Тройку» (пишет «Тип метки не поддерживается»). Почему?
К сожалению, не все смартфоны с NFC умеют читать карту «Тройка». Это аппаратная проблема, которую может исправить только производитель.
Увы, но мы повлиять на это не можем. Поэтому не торопитесь ставить низкие оценки приложению: дело не в приложении, а в устройстве. Кроме того, производители не сообщают (или некорректно сообщают), поддерживают ли они в своем NFC-модуле чипы, используемые в картах «Тройка», поэтому отследить это также затруднительно.
Если Вы все-таки уверены, что Ваш смартфон должен уметь читать карты «Тройка», но нашим приложением не получается это сделать, то напишите нам в поддержку (создать обращение в разделе «Поддержка» приложения).
4. Деньги списались, а билет не записался! Что делать?
Во-первых, не паниковать и не волноваться. Ваши деньги никто не украл, они не пропадут.
Если Вы забыли записать билет (пополнение) или не смогли записать из-за отсутствия Интернета — снова запустите приложение (когда появится Интернет), Вам будет предложено записать незаписанный билет. Необходимо приложить именно ту карту «Тройка», которую Вы пытались пополнить ранее.
Если же по каким-либо причинам запись билета не произошла, нужно создать обращение через раздел «Поддержка» в самом приложении. Мы присвоим Вашему обращению номер, чтобы Вы могли отслеживать его статус, проверим информацию и, если она подтвердится, разблокируем средства.
Напомним: средства списываются только после успешной записи билета, до тех пор они просто резервируются на Вашей банковской карте. Если записи билета не было, средства будут разблокированы автоматически.
Просто при резерве средств многие банки шлют такое же SMS, что и при списании, поэтому некоторые пользователи думают, что средства списаны.
После резервирования средств на банковской карте пользователь должен самостоятельно записать приобретаемый билет на карту «Тройка», следуя инструкциям на экране своего смартфона с запущенным приложением, не забыв при этом приложить карту «Тройка» к NFC-антенне своего устройства.
5. Приложение неправильно отображает баланс, не читает карту «Тройка» (выдает ошибку чтения) или читает не с первого раза. Что делать?
Во-первых, проверьте, нет ли обновлений приложения. Возможно, ситуация исправлена в новых версиях.
Во-вторых, убедитесь, что Вы точно прикладываете карту «Тройка» к NFC-антенне.
К сожалению, расположение антенны и ее чувствительность на разных устройствах разная. Вы должны самостоятельно (опытным путем, прочитав инструкцию к устройству и т. п.) определить то место на Вашем смартфоне, где карта читается надежнее всего.
На чувствительность антенны и надежность считывания может влиять чехол (снимите его). Причем, бывает случаи, что читаться в чехле карта может хороша, а записывать не получается (потому что мощность сигнала для чтения и записи — разные).
В-третьих, убедитесь, что Вы убираете карте «Тройка» только после того, как она была прочитана.
Некоторые думают, что звук, издаваемый операционной системой смартфона при прикладывании карты, означает, что она была прочитана и убирают карту. На самом деле, это только оповещение о том, что карта была обнаружена в поле действия антенны. Требуется дождаться, когда данные будут с карты «Тройка» успешно прочитаны, иначе появится сообщение об ошибке.
Если появилось сообщение, что данные на карты прочитать не удалось, нажмите «ОК» и попробуйте снова.
Кроме того, на некоторых устройствах наблюдаются аппаратные и программные ошибки, которые приводят к нестабильному чтению карт (ошибки в NFC-модуле, неправильно настроенная антенна, ошибки в прошивке).
Приложение здесь ни при чем: оно, упрощенно говоря, всего лишь получает данные со смартфона и отправляет данные на него.
Это не зависит от производителя смартфона или его стоимости. Бывает, что дорогие смартфоны имеют проблемы, а дешевый с NFC — читает «Тройку» без проблем. Бывает, что один смартфон в линейке плохо читает карты, а его обновленная, более свежая версия — хорошо (и наоборот, более дешевая версия в линейке работает с «Тройкой» более стабильно, чем дорогая).
Есть известные проблемы на некоторых устройствах. Мы даже написали соответствующие статьи и сняли видео об этом. Например:
Пожалуйста, прежде чем писать несправедливые отзывы и ставить необоснованные оценки приложению, ознакомьтесь с этой информацией.
Если же Вы считаете, что проблема программная, в самом приложении, пожалуйста, напишите нам в поддержку. Количество устройств большое множество, учесть особенности каждого практически невозможно (к сожалению, не все производители строго следуют спецификациям Google и Android), не всегда мы имеем возможность протестировать работу приложения на специфических устройствах.
Но с Вашей помощью мы можем сделать работу приложения лучше и удобнее. Давайте помогать друг другу, а не только требовать.
6. Два дня назад положил(а) деньги на карту, а они так и не пришли. Почему?
См. ответы на вопросы 1 и 4. Деньги не приходят на карту самостоятельно, Вы покупаете билет, который Вам необходимо записать на карту «Тройка» — именно на ней хранятся купленные Вами билеты (а пополнение баланса — это тоже покупка билета «Кошелек»).
Если Вы забыли записать билет, снова запустите приложение, Вам будет предложено его записать на карту «Тройка».
7. Почему такого замечательного приложения нет на iOS (Apple iPhone, «айфонах»)?
К сожалению, устройства Apple под управлением операционной системы iOS не поддерживают чтение и запись чипов (вернее, протокола), используемого в настоящее время в картах «Тройка».
Это ограничения Apple и iOS. Если в будущем ситуация изменится, то мы выпустим приложение и под iOS.
— Да, но я же расплачиваюсь за покупки в магазинах по NFC!
Упрощенного говоря, в этом случае «айфон» работает в режиме карты, а не терминала. А чтобы читать и записывать на карту «Тройка» нужна работа iPhone в режиме терминала. Средства разработки под iOS такого не позволят.
— Да, но я же могу читать некоторые бесконтактные метки!
Да, некоторые (простые) виды меток поддерживаются в новых версиях iOS, но не протокол и формат, используемый в картах «Тройка».
8. Не могу найти Ваше приложение в Google Play (или у меня нет Google Play). Что делать?
Вероятно, Ваше устройство не поддерживается (старая версия ОС, нестабильно работающий NFC-модуль и т. п.). Или у него нет NFC-модуля (тогда воспользоваться чтением и записью билетов — то есть основной и главной функцией приложения — невозможно).
Если Вы все равно хотите скачать приложение (или на Вашем смартфоне нет Google Play), то на нашем сайте, прямо на главной странице есть ссылка для прямого скачивания приложения.
9. Можно ли пополнять социальные карты (СКС, СКУ и др.) в вашем приложении? Покупать другие билеты (Единый, ТАТ, билеты на МЦД, МЦК)?
Да!
Приложение поддерживает все имеющиеся и доступные для конкретной карты виды билетов, в том числе билеты на МЦД, МЦК, льготные билеты для социальных карт, социальных карт учащегося (СКУ), социальных карт студента (СКС), социальных карт аспиранта (СКА) и т. д.
Если какого-то билета нет в списке доступных для Вашей карты, значит покупка данного билета в данный момент невозможна.
Например, если Вы уже купили Единый на текущий и на следующий месяц, то покупка еще одного Единого будет не доступна.
10. Как правильно писать отзыв в Google Play и ставить адекватную оценку?
Если Вам понравилось приложение — пожалуйста, не сдерживайте себя, напишите отзыв, поставьте оценку, поделитесь этим с окружающими, чтобы и другие могли воспользоваться приложением, сэкономить время на пополнение карты «Тройка».
Если Вы хотите поставить негативную оценку и написать отрицательный отзыв, вначале убедитесь, что Вы ознакомились с ответами на часто задаваемые вопросы на сайте и в самом приложении.
Много полезных советов мы пишем в наших аккаунтах в соцсетях.
Имейте ввиду, что у Google также есть правила написания отзывов.
Бывает, пользователи ставят оценки и пишут отзыв, не имеющий отношения к приложению:
— «высокие тарифы на проезд» (не мы их устанавливаем);
— «нету билета XXXXX» (тарифы и виды проездных билетов устанавливает Правительство Москвы);
— «валидатор много списал денег за проезд» (мы не списываем деньги за проезд, мы не устанавливаем тарифы на проезд);
— «я купил один билет, а мне нужен другой, где стоимость проезда ниже» (пользователь самостоятельно выбирает, какой покупать билет, если Вы ошиблись с выбором — приложение ведь не виновато);
— «приложению нужен NFC, что мне теперь, телефон менять» (есть технические особенности, правила и требования для пополнения карты «Тройка», и приложение, и пользователи должны их соблюдать);
— «приложение не показывает пробки на дорогах» (приложение выполняет заявленную функциональность; если в приложении нет чего-то, что не заявлялось, это не повод снижать оценку или писать негативный отзыв. Можно вежливо оставить пожелания добавить функции, которые, на Ваш взгляд, хорошо было бы добавить).
Кроме того, аппаратные ошибки своих устройств некоторые пользователи, не разобравшись, приписывают приложению (см. ответ на вопрос 6).
Пожалуйста, будьте благоразумными и доброжелательными к бесплатному и удобному приложению без рекламы, созданному энтузиастами своего дела, потратившими собственные средства, силы и время на то, чтобы сделать нашу жизнь немного удобнее.
Используем Apple Pay и карту Тройка в качестве пропуска на работу

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

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

Сравнение толщины карт Em-Marine и ISO7810
Помимо физических размеров, карты EM-Marine технологически отсталые. Такую карту можно легко клонировать с расстояния полуметра прямо из кармана прохожего.
Видео с демонстрацией: www.youtube.com/watch?v=qvIIUny4EWI
На видео показано считывание тонкой карты em4100 с расстояния 50см, толстые карты читаются с большего расстояния.
Все СКУД неудобные
Все существующие системы контроля доступа на наш взгляд слишком переусложнены и неудобны. Они требуют выпуска отдельных карт, установки программ, обучения персонала, запоминания последовательности действий с мастер-картами, и т.д.
В некоторых случаях сложные СКУД необходимы: в крупных зданиях с множеством зон доступа, турникетами, охраной, временными пропусками.
В случаях, когда контролировать доступ нужно к одной или двум дверям, такие усложнения не оправданы. Даже содержание отдельного компьютера с программой под СКУД — перебор для нас.
У нас нет отдельных сотрудников, занимающихся выпуском пропусков, нет временных пропусков и охраны. Администрирование системы должно быть настолько простым, чтобы любой новый человек мог быстро её освоить без инструкций. Так как ответственного за СКУД человека может не быть на месте, управление системой должно быть удаленным.
Карта «Тройка» как идентификатор
Карта «Тройка» — пополняемая карта для оплаты проезда на всех видах общественного транспорта Москвы. Это наиболее выгодный и удобный способ оплаты общественного транспорта и некоторых городских услуг: планетарий, каток, зоопарки, Третьяковская галерея, парковка. Поэтому «Тройка» есть у каждого москвича, который регулярно пользуется общественным транспортом. Приобрести карту можно в кассах метрополитена за ≈1$.
Технически карта выполнена на базе чипа Mifare Plus, работающего в режиме SL1 — режим эмуляции Mifare Classic 1K. На обратной стороне карты находится 10-значный номер, который используется для удаленного пополнения баланса карты. Этот номер удобно использовать в качестве идентификатора в СКУД.

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

Платежные инструменты с разными названиями работают по одному протоколу EMV
Все платежные инструменты, изображенные на картинке выше, работают по одному протоколу EMV, свободно доступному на сайте EMVco.com. Поэтому говоря «EMV-карта», мы будем подразумевать одновременно Apple Pay, Android Pay, Samsung Pay, Visa PayWave, MasterCard PayPass.
Существует заблуждение, будто POS-терминал должен отдельно поддерживать Apple/Android Pay, поэтому пользователи предпочитают искать на кассе специальную пиктограмму, чтобы быть уверенным, что их платежный инструмент поддерживается. На самом деле, почти везде, где поддерживается бесконтактная оплата, будет работать любое устройство.
Бесконтактные EMV-карты (и контактные тоже) позволяют без авторизации, то есть без ввода PIN-кода, считать данные, обозначенные ниже. В последней главе мы рассмотрим, почему это достаточно безопасно.
// Имя владельца (доступно не всегда) Cardholder Name: IVAN IVANOV // Номер карты, выбитый на лицевой стороне PAN: 4556 5386 2774 0649 // Срок действия Expiry date: 08/2019 // Аналог track 1 для магнитной полосы (доступно не всегда) Track 1: . // Аналог track 2 для магнитной полосы Track 2: 4556538627740649. // Лог последних транзакций по карте. Включает дату, сумму операции. // Доступен не всегда Paylog: .
Некоторые карты не передают реквизиты Cardholder Name и лог транзакций, но PAN (номер карты) передается всегда. Этот номер не изменяется на протяжении всего срока действия карты.
Поэтому именно PAN мы решили использовать в качестве идентификатора для пропуска в СКУД. Для простоты и большой приватности, было решено использовать последние 10 цифр от номера карты. Таким образом, формат идентификатора получается такой же длины, как и номер карты Тройка.
В итоге, в базе данных идентификаторов мы имеем однородные записи длинной в 10 цифр, без необходимости дополнительно помечать где карта Тройка, а где EMV-карта.
Читаем EMV-карты на коленке
Читать EMV-карты можно любым NFC-ридером, поддерживающим передачу произвольных APDU-команд. Для этого не требуются промышленные сертифицированные ридеры, подойдет любой модуль для Arduino за $3
Чтобы изготовить прототип считывателя, мне потребовалось бегло изучить протокол EMV. Под спойлером — краткий разбор протокола EMV с примерами чтения на Arduino и компьютере.
Читаем банковские карты на коленке с примерами. (Много текста)
Для чтения EMV карт подойдут такие устройства:
- PN532 breakout board + Arduino — pn532 лучше всего подключать к Arduino по SPI. Логические уровни чипа pn532 — 3.3V, поэтому удобнее использовать Arduino pro 3.3V, чтобы избавиться от конвертера уровней. Пример кода для чтения EMV-карт есть в моем форке библиотеки Adafruit PN532, c исправлениями для чтения EMV-карт.
- PN532 breakout board + адаптер USB-TTL — плату PN532 можно подключать через UART-адаптер к компьютеру и пользоваться набором библиотек libnfc
- Любой PC/SC-совместимый ридер — такие как ACR122U, HiD Omnikey и многие другие.
- Android смартфон с NFC-модулем — бесплатная утилита Credit Card Reader позволяет читать EMV-карты телефоном. Имеет удобный лог APDU-команд и парсер ответов карты. Если заплатить 100 рублей (donate), то во вкладке Log появляется удобный парсер всех посланных APDU команд, что невероятно удобно для отладки. Программа имеет открытую библиотеку на Java.
Описанный ниже процесс не является корректной реализацией протокола 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-картой всегда происходит с чтения файла 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
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-номер может содержаться в трех местах:
- Track 2 Equivalent Data — маркер 57. Может иметь длину от 0 до 19 байт, но обычно всегда равен 13 (19 байтам). Поэтому как маркер можно использовать последовательность 57 13. Первые 8 байт всегда содержат PAN-номер.
- Application Primary Account Number (PAN) — маркер 5A. Всегда имеет длину 8 байт, поэтому можно искать как маркер последовательность 5A 08. Содержит только PAN номер.
- Track 2 Data — маркер 9F 6B» — . Длина обычно 13 байт. Содержит PAN номер и другую информацию.
'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-номера можно изобразить в виде блок-схемы

Первый прототип
Было решено использовать в качестве идентификатора пользователя 10-значный номер, который будет формироваться либо из десяти последних цифр PAN-номера платежной карты, либо из номера карты «Тройка». Идентификатор должен передаваться контроллеру, который будет сверять его с хранящимися в базе данных номерами и решать, открывать дверь, или нет.
Всю работу по распознаванию карты должен выполнять считыватель, и на выходе отдавать 10-значный номер. В базе данных достаточно хранить только сами номера, без необходимости отмечать тип карты.
Так родился первый прототип считывателя на Arduino + PN532 breakout board.
Видео с демонстрацией работы прототипа: www.youtube.com/watch?v=aXNvjuRrCQk
Скетч для Arduino, показанный в видео, выложен здесь: github.com/zhovner/Adafruit-PN532, в папке examples/ApplePay_Troyka_ACS
Данный код довольно плохой, потому как не генерирует ответ PDOL, из-за чего не все EMV-карты будут успешно прочитаны. Однако он позволяет понять общую логику работы системы описанной в статье.
Считыватель Parsec
С самого начала мы не хотели городить кустарные поделки на arduino или raspberry pi, поэтому стали искать решение на базе промышленного оборудования.
Так как на рынке готовых решений не существует устройств даже примерно похожих на то, что нам было нужно, мы стали спрашивать у всех производителей СКУД, кто сможет реализовать наши извращенные фантазии в своем оборудовании.
Единственной компанией, которая стала с нами разговаривать, были Parsec.ru
В итоге они согласились реализовать наши идеи в прошивке своего считывателя PNR-P03E.

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

Считыватель самостоятельно определяет тип карты и выполняет считывание нужной области памяти. Если определить тип карты не удалось, считыватель игнорирует её. Прочитанная область памяти конвертируется в десятизначный идентификатор и передается на контроллер.
Контроллер БОРЕЙ
Контроллер — это устройство, на которое передается идентификатор карты от считывателя. Оно хранит базу данных идентификаторов карт и решает, кого пропускать, а кого нет, управляя замком двери.
Часто контроллеры СКУД состоят из нескольких блоков управления и компьютера с базой данных. Мы принципиально не хотели держать отдельный компьютер и искали компактное решение в виде одного устройства, которым можно управлять через API для интеграции с Telegram-ботом.
Поиск такого устройства занял больше месяца, пока я не наткнулся на старую статью на хабре «Обзор СКУД с бесплатным программным обеспечением». В комментариях пользователь rgmih упомянул, что их компания производит именно такой контроллер.
Так мы нашли контроллер БОРЕЙ от компании ИТРИУМ.

Плата контроллера БОРЕЙ в настенном корпусе
Устройство работает под управлением Linux на базе ARM-процессора.
Основные достоинства устройства, которые редко можно встретить у других контроллеров:
- Полностью автономный — все функции выполняет одно устройство. Для управления не нужно дополнительных программ или отдельного компьютера. База данных хранится на SD-карте. При отключении интернета контроллер продолжит работать.
- Web интерфейс и REST API — возможность управлять контроллером через браузер и интегрировать с Telegram-ботом через API. Позволяет управлять пропусками удаленно.
- Подключение по Ethernet — устройство подключается в IP-сеть. Имеет встроенный коммутатор на 2 порта.
- Идентификаторы произвольной длины до 64 бит — возможность интегрировать контроллер с нестандартными идентификаторами разной длины. Позволяет иметь гибридную систему с идентификаторами разной длины.
Если можно, контроллер размыкает реле магнитного замка на двери и посылает сигнал световой и звукой индикации на считыватель. Считыватель издает одобрительный писк и загорается зеленым цветом.
Если доступ запрещен, контроллер посылает сигнал индикации на считыватель, и тот горит красным цветом и пищит о том, что доступ не разрешен.
Управление контроллером
Контроллер подключается в сеть c помощью Ethernet-кабеля. Начальная настройка требует только задать IP-адрес устройства. Никакого программного обеспечения, помимо браузера, не требуется.
Учетные записи заводятся в меню «Бюро пропусков». Чтобы не вводить идентификатор карты вручную, его можно поднести к считывателю в момент создания учетной записи.
Создание нового пропуска в веб-интерфейсе контроллера БОРЕЙ
Веб-интерфейс позволяет управлять заведением пользователей удаленно с любого устройства и следить за журналом событий, не находясь на рабочем месте. Даже если связь контроллера с интернетом пропадет, это не нарушит его работу, так как вся база данных хранится локально, а интернет нужен только для внесения изменений.
Бюро пропусков в Telegram
Чтобы каждый раз не обучать нового администратора, как пользоваться веб-интерфейсом контроллера, мы решили создать Telegram бота, через которого будет происходить добавление/удаление пропусков. Это возможно благодаря наличию в контроллере БОРЕЙ REST API.

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