Эмуляция банковской карты на телефоне

HCE (Host-based Card Emulation) – это технология, которая дает возможность писать софт, не требующий для исполнения выделенного криптопроцессора, чтобы обеспечить сеанс связи с платежным терминалом. Приложение исполняется на основном процессоре мобильного устройства, в окружении операционной системы телефона.
HCE для NFC имеет открытую архитектуру, что позволяет эмулировать не только банковские карты, но и карты программ лояльности, транспортные карты, пропуска и так далее. Технология позволяет заметно ускорить процесс внедрения платежных NFC-сервисов, потому что не нужно координировать и согласовывать действия с производителями телефонов, кроме того, решаются многие проблемы совместимости.
Мы сделали такой HC-эмулятор в своём приложении. До появления технологии HCE информацию для осуществления NFC-транзакций в мобильных устройствах можно было хранить тремя способами: либо на SIM-карте (принцип SIM centric NFC), либо в специальном элементе на телефоне (Embeded Secure Elements, eSE), либо на специальной MicroSD.
Как обстояли дела ранее?
У классических способов до HCE имеются существенные недостатки. При подходе SIM centric требуются специальные SIM-карты, которые значительно дороже стандартных карт, обязательна процедура посещения пользователем точки продаж для замены SIM-карты и т.д.
При eSE-подходе сложностей и ограничений ещё больше – моделей телефонов, имеющих специальный блок для хранения информации о карте, на рынке крайне мало, стоимость персонализации элемента в телефоне весьма высокая, появляется зависимость от производителя телефона и провайдера услуг персонализации «по воздуху» (Over-The-Air Service Provider). Эти ограничения, аппаратные и организационные барьеры до последнего времени не давали возможности сделать сервис бесконтактных платежей при помощи мобильных устройств массовым.
Раньше, чтобы запустить сервис NFC-платежей, его провайдеру нужно было договариваться с вендором о получении ключей для записи на телефон платежных данных. Некоторые производители телефонов предоставляли собственный облачный сервис, с которым провайдеру платежного сервиса необходимо было интегрироваться, передавать ему платежные данные для дальнейшей заливки этих данных в телефон. По пути «закрытой» технологии сейчас пошел и Apple – для работы платежного приложения используется криптопроцессор, ключи есть только у производителя аппарата, и только он может загружать платежные данные.
Для пользователей основным неудобством этих hard подходов является привязка системы безопасности к аппаратным средствам а, следовательно, неизбежная необходимость смены SIM-карты или даже телефона для подключения сервиса NFC-платежей.
Google: мы пойдем другим путем
Другой подход избрали в Google, рассудив, что зависимость от вендоров (производителей телефонов и Secure Elements) радикально снижает адаптивность технологии и препятствует массовому тиражированию платежных сервисов. Рассудив так, Google реализовала подход, при котором NFC-контроллер напрямую связан с основным процессором, непосредственно обеспечивающим работу платежного приложения, хранение данных, подпись транзакций и т.д. А информационная безопасность обеспечивается программными средствами.
В декабре 2013 года Google выпустила версию Android 4.4 KitKat, в которой была реализована возможность взаимодействия NFC-контроллера не только с SE, но и с обычным приложением в телефоне. Проще говоря, отпала необходимость промышленной прогрузки информации в специальные устройства, стало достаточно просто установить на смартфон платежное приложение, работающее по технологии HCE.
Как это работает?
У нас есть карта «Билайн» — обычная дебетовая MasterCard, которую можно получить бесплатно в любом салоне «Билайн». Ежегодная абонентская плата за обслуживание нашей карты не взимается. Карта работает как обычный MC по всему миру, только при совершении покупок возвращается от 1,5% потраченной суммы на счет в виде бонусов. Накопленные бонусы могут быть использованы при оплате услуг мобильной связи, нашего проводного интернета, разных товаров в наших и партнёрских магазинах.
Карта эмулируется на телефоне.
По сути, технология HCE дает возможность эмулировать в телефоне бесконтактные smart-карты. В нашем случае виртуальная карта является дополнительной функцией физического носителя – пластиковой карты «Билайн». Владелец такой карты, являющийся одновременно владельцем телефона на платформе Android KitKat, оснащенного NFC-модулем, устанавливает на него мобильное приложение карты «Билайн». При входе в мобильное приложение для активации функции бесконтактных платежей достаточно ввести ЕАN карты и свой пароль. Приложение проверяет наличие/доступность HCE на устройстве, и если все ок, пользователю предлагается подключить функционал.
Если пользователь подтверждает свое согласие на подключение сервиса, ответив на полученную sms вводом одноразового пароля, то производится эмиссия виртуальной карты – в мобильное приложение из процессингового центра загружаются данные, необходимые для совершения NFC-платежей. Собственно, на этом всё – телефон стал инструментом бесконтактной оплаты.


На телефоне HCE функционирует как фоновый сервис, что позволяет использовать HCE, не запуская приложение для этого взаимодействия. При взаимодействии с терминалом Android’у необходимо выбрать приложение, которому отправить данные для обработки. Такой выбор делается на базе Application ID (AID), который содержит до 16 байт информации, и известен для популярных платежных систем, таких как Visa или MasterCard. Приложение может обрабатывать несколько различных AID, которые объединяются в группу. Каждая группа может быть связана с определенной категорией. В настоящий момент определено две категории: CATEGORY_PAYMENT (для приложений оплаты) и CATEGORY_OTHER (для остальных). В телефоне может быть установлено несколько приложений для одного и того же AID, для разных категорий может быть применена разная политика выбора приложения, для платежных приложений определяется одно активное приложение по умолчанию.
Для реализации HCE нам было необходимо расширить сервис HostApduService и реализовать методы: processCommandApdu() – вызывается, когда приложение взаимодействует с терминалом и onDeactivated() – если связь с терминалом потеряна, или другой NFC-ридер пытается установить соединение. Данный сервис декларируется в манифесте приложения и должен содержать intent-фильтр для SERVICE_INTERFACE, доступ android.permission.BIND_NFC_SERVICE и метаданные, определяющие, какие AID обрабатывают наш сервис. Также тут мы можем определить, требуется ли разблокировка устройства для совершения оплаты с его помощью. Разрешение BIND_NFC_SERVICE гарантирует, что все взаимодействия с NFC-модулем будут осуществляться через операционную систему Android. А безопасность хранимых данных базируется на стандартной системе «песочницы» для приложения.

Схема взаимодействия элементов в процессе бесконтактной оплаты по технологии HCE
Элементами системы являются:
NFC-контроллер – передает команды от терминала платежному приложению.
Мобильная платформа – серверная часть мобильного банка, включающая функции управления платежным приложением.
Хост эмитента – процессинговый центр эмитента, который для обслуживания мобильного приложения умеет взаимодействовать с мобильной платформой.
Хост эквайера – процессинговый центр эквайера.
При совершении бесконтактной оплаты терминал взаимодействует с NFC-контроллером телефона по протоколу ISO 14443 (APDU T=CL).
NFC-контроллер взаимодействует с Платежным приложением по внутреннему протоколу, специфицированному в Android 4.4 и выше.
Платежное приложение получает от терминала ключевые данные транзакции (сумма, валюта, время операции, свойства терминала и т.д.), проводит проверку возможности совершения операции и в случае успеха генерирует уникальную криптограмму (ARQC) на уникальном секретном ключе Платежного приложения. Данные, на которых рассчитывается криптограмма, включают случайное число.
В зависимости от суммы и свойств терминала у клиента может быть запрошен пин-код, который вводится клиентом на терминале (или пин-паде).
Терминал на хост эквайра формирует авторизационный запрос, который включает ARQC и шифрованный пин-код, если он был введен клиентом.
Далее с хоста эквайера авторизационный запрос через платежную систему маршрутизируется на хост эмитента, где принимается решение об одобрении или отказе авторизации.
Проверки на хосте эмитента включают:
1. Проверку криптограммы (ARQC).
2. Проверку пин-кода (если он был введен клиентом).
3. Проверку правил обслуживания карты.
4. Проверку лимитов карты и счета.
5. Проверку анти-фродовых правил, включая специфические правила для бесконтактной оплаты телефоном.
В результате обработки авторизации на хосте эмитента формируется ответ, который по обратной цепочке доставляется в терминал.
Что нужно для использования сервиса в России
Для того чтобы пользоваться сервисом бесконтактной оплаты, необходимо в любом офисе «Билайн» бесплатно получить предоплаченную карту «Билайн». Далее – скачать на Google Play мобильное приложение карты «Билайн» и активировать функцию бесконтактной оплаты. Аппаратные и программные ограничения: операционная система Android, версия не ниже 4.4, наличие в телефоне NFC-модуля.
Какие еще есть особенности?
Например, если у пользователя не один, а несколько телефонов на Android 4.4, то сервис бесконтактной оплаты, привязанный к его основной карте, может быть установлен на все устройства владельца этой карты. Это удобно, например, для использования сервиса семьей. При этом на одном телефоне может существовать только одна виртуальная карточка.
При оплате, когда телефон подносится к терминалу, на экране отображается сумма покупки и информация об успешности проведения платежа.
Оплата производится только при разблокированном экране, поэтому важно, чтобы телефон был защищен паролем. При этом само приложение может быть закрытым. При удалении приложения с телефона виртуальная карта блокируется. При восстановлении приложения происходит повторная эмуляция карты, поэтому придется проходить процесс настройки бесконтактной оплаты с нуля. Повторная активация услуги потребуется также, если в приложении отключить сервис бесконтактной оплаты. Однако удалять приложение или отключать сервис вовсе не обязательно – для временной блокировки можно использовать функцию «Приостановить бесконтактную оплату».

Активность сервиса бесконтактной оплаты подтверждается оранжевым цветом соответствующей иконки
В чем профит?
Итак, что нам дает сервис бесконтактной оплаты с помощью мобильного телефона? Можно забыть дома кошелек, оставить в квартире паспорт или даже водительское удостоверение, но почти со 100% вероятностью сотовый телефон будет при вас. А если на этом телефоне инсталлировано приложение для бесконтактной оплаты, значит, вы всегда «при деньгах».
Далее. NFC-транзакция – это мгновенная оплата. Даже для того чтобы расплатиться пластиковой карточкой, её для начала нужно извлечь из бумажника, а перед этим – бумажник из кармана или сумки. При расчете наличными добавляется момент пересчета, передачи денег, получения и проверки сдачи и т.д. Транзакции до 1000 рублей, совершенные при помощи NFC и HCE, даже не требуют ввода ПИН-кода, и расчет без всякого преувеличения происходит в один момент и в одно касание.
После совершения транзакции на телефон приходит sms-сообщение о прошедшей операции и об остатке на счете, т.е. вы всегда в курсе состояния своего электронного кошелька.
Кстати, интересная деталь – в приложении карты «Билайн» реализована технология единого ПИНа для нескольких карт, в данном случае – для основной карты «Билайн» и карты, эмулированной мобильным приложением. То есть и при расчете по пластиковой картой, и используя сервис бесконтактных платежей, вы вводите один и тот же пароль.
Сервис бесплатный, никаких комиссий за NFC-транзакции не взимаются.
Где можно платить?
Конечно, развитость инфраструктуры приема бесконтактных платежей зависит от конкретного региона, однако сегодня уже порядка 5% платежных терминалов уже оснащены функцией NFC. В масштабах всей России это, по экспертным оценкам, около 30 тысяч устройств. Лидеры рынка производства POS-терминалов – VenFone и Ingenico – уже не первый год оснащают свои устройства поддержкой NFC в качестве базовой стандартной функции.
При оплате следует ориентироваться на наличие на POS-терминале значка, обозначающего, что аппарат оснащен бесконтактным функционалом.
Если говорить о конкретных точках, то это сети, крупные магазины, фаст-фуды, заправки. McDonald’s, Starbucks, Subway, гипермаркеты «Ашан», О’КЕЙ, «Магнит», «Аэроэкспресс», крупные сети сотового ритиейла, магазины глобальных производителей косметики и парфюмерии, модные места проведения досуга.
Безопасность
Наиболее очевидное на сегодняшний день тонкое место технологии HCE – безопасность. Данные, необходимые и достаточные для осуществления NFC-платежей, хранятся непосредственно в памяти смартфона. Однако для мобильного приложения карты «Билайн» используется комплекс мер, которые сводят к минимуму вероятность взлома. Мы делали внутренний конкурс на взлом системы, с очень хорошим вознаграждением, анализ кода.
Разберем некоторые аспекты информационной безопасности технологии HCE, реализованные для мобильного приложения карты «Билайн».
Операции по заблокированному телефону невозможны. В этом смысле HCE-решение защищено лучше, чем обычная пластиковая карта с бесконтактным интерфейсом – чтобы совершить платежную операцию злоумышленник должен разблокировать телефон. В случае обычной карты – достаточно получить саму карту. При использовании мобильного приложения карты «Билайн» невозможен, например, сценарий, когда в метро в плотном потоке людей с виртуальной карты незаметно списывают деньги, прикладывая к карману ридер.
Продукт защищен от взлома и клонирования как на уровне самого приложения, так и на уровне процессинга. Все данные шифрованы, приложение само отслеживает попытки взлома и при обнаружении такой попытки зачищает все критичные данные. При этом приложение периодически сообщает процессингу свое состояние, при всех операциях хост проверяет ожидаемое состояние и сравнивает с фактически полученным. При несовпадении, что может быть вызвано попыткой клонирования, карта блокируется. Кроме того, в процессинговом центре настроены специальные правила эмитентского фрод-мониторинга, которые контролируют количество беспиновых операций и блокируют карту при обнаружении подозрительной активности.
Операции на сумму свыше 1000 рублей защищены онлайн пин-кодом, который вводится в пинпад терминала. Перехват пин-кода через взлом приложения невозможен – просто потому, что пин-код на телефоне никогда не вводится.
При утере телефона порядок действий практически ничем не отличается от стандартных мероприятий, выполняемых при утере обычной банковской карты: звонок в контакт-центр, блокировка карты «Билайн» по EAN, получение в салоне связи новой карты. На новую карту будут перенесены все остатки денежных средств, бонусы и так далее. При этом, естественно, номер карты поменяется, а у злоумышленника будет на руках телефон, в котором будет эмулирована старая карта, операции по которой совершить уже невозможно, поскольку она заблокирована.
Кстати, следует обратить еще на один нюанс, связанный с безопасностью технологии NFC в целом. Существует представление, что уязвимым является сам сеанс передачи данных от смартфона к POS-терминалу. На самом деле каждая транзакция защищена уникальной криптограммой, без которой авторизация невозможна. Из тех данных, которые передаются по радиоканалу, практически невозможно извлечь никакой информации, которая помогла бы злоумышленникам похитить средства со счета, подписав другие транзакции.
Будет ли работать этот сервис на платформе iOS?
Apple пошли по пути phone-based и используют встроенный Secure Element, куда никто, кроме Apple, карточные ключи загрузить не может. Поэтому единственный реалистичный в настоящее время вариант – это интеграция с новой технологией Visa Token Service (генерация временных ключей для оплаты), на основе которой Apple Pay, собственно, и работает.
Прогнозы
Можно прогнозировать, что рынок NFC-платежей в России переходит из стадии становления в фазу активного роста. Растет число телефонов, поддерживающих технологию NFC, появляются интеграционные проекты, реализуемые совместно вендорами, платежными системами и ритейлерами.
В I полугодии 2014 г. в России было реализовано 1,2 млн. смартфонов, поддерживающих технологию NFC. Это на 21% больше, чем за аналогичный период прошлого года. NFC-смартфоны составили 14% от всех продаж смартфонов в стране. Понятно, что бурный рост может быть обусловлен только удобством применения бесконтактных технологий, а массовость сервису может придать мощный драйвер. Такой, например, как бесконтактная оплата проезда в общественном транспорте, прежде всего в метрополитене.
Если же говорить о емкости рынка NFC-платежей в России, то эксперты называют цифру порядка 15 млрд. рублей (оценка агентства J’son & Partners).
- Блог компании билайн бизнес
- Веб-разработка
- Разработка систем связи
Считываем и эмулируем карты с магнитной полосой
О том, что магнитные карты совсем скоро навсегда уйдут в историю, говорят уже не первый год. Тем не менее, хоть они и постепенно вытесняются другими технологиями (например, RFID, ISO7816), окончательно исчезать они пока даже не собираются.

Итак, в данной статье поговорим о том, как работает запись данных на карты с магнитной полосой, разберёмся, в каком формате хранится там информация, узнаем, как устроены считыватель и энкодер и, конечно же, ещё много чего интересного.
Суть такова
На просторах можно найти огромное количество материалов об устройстве и принципе работы RFID-карт. О магнитных же картах информации куда меньше. Для этого есть свои причины: считыватели магнитной полосы сравнительно дороги, на карту вмещается весьма малое количество данных, сама технология безнадёжно устарела. Но, как по мне, детально рассмотреть такое оборудование будет весьма интересно. А раз так — погнали!
Настоятельно рекомендую также прочитать вот эту статью: О долгой жизни и неминуемой смерти карт с магнитной полосой.
Устройство карты
Традиционно такая карта представляет собой обычную пластиковую карту стандарта ISO7810, на обратной стороне которой мельчайшими частицами ферромагнетика нанесена магнитная полоса. В опытных образцах использовались отрезки магнитной ленты.
По напряжённости поля, необходимого для перезаписи, карты делятся на высококоэрцитивные и низкокоэрцитивные. В настоящее время применяется преимущественно первый вариант, обладающий куда большей устойчивостью к износу и внешним магнитным полям, тогда как низкокоэрцитивные полосы размагничиваются от контакта даже с маломощными магнитами или просто от косого взгляда.
О чувствительности к магнитным полям карт высококоэрцитивного типа поговорим несколько позже.
Немного о кодировании
Все карты с магнитной полосой используют F/2F-кодирование для записи данных. В нём логической единице соответствует частота сигнала, вдвое большая таковой для нуля. В качестве обозначения перехода используется смена полярности при намагничивании карты. Причина для использования такого принципа кодирования весьма простая — можно существенно упростить устройство для считывания, так как результат не будет зависеть от скорости прокатывания через него карты. Другие методы кодирования потребовали бы установку электропривода для автоматического захвата и перемещения карты или механически связанного с энкодером ролика для контроля скорости.
Сама карта имеет три дорожки, первая имеет семибитную кодировку, вторая и третья — пятибитную. Непосредственно для данных используются соответственно шесть и четыре бита, старший же бит в коде каждого символа отведён для чётности. На магнитную полосу вначале записываются младшие биты, затем — старшие.
В начале и в конце дорожки находятся символы, обозначающие начало и конец последовательности, после стоп-символа записывается контрольное значение, представляющее собой последовательный XOR всех символов на дорожке, также дополненный своим битом чётности.
- Получаем строку бит с декодера. Практически нигде не подключают магнитную головку непосредственно к контроллеру, чаще всего используют специальные микросхемы F/2F-декодеров, отправляющие уже почти готовые данные;
- Определяем начало и конец у полученных данных (поиском старт и стоп-символов);
- Считываем символы согласно кодировке, у каждого считанного символа проверяем чётность;
- Вычисляем и сверяем контрольное число;
- Если ошибок обнаружено не было, выводим готовую строку.
Банковские карты
Помимо кодировки существует и стандарт, определяющий, что именно записано на магнитной полосе. Впрочем, в системах, отличных от платёжных (к примеру, электронные пропуска, скидочные, подарочные и клубные карты), может быть записана любая произвольная информация.
Остановимся поподробнее на банковских картах. Вот пример дампа второй дорожки:
;4034351574462072=2402121111946800?
Следующая группа из четырёх цифр — срок действия в формате YYMM. Далее идёт Service code. Это трёхзначное число, позволяющее задать ряд ограничений, к примеру, запретить использование магнитной полосы (при попытке прокатать такую карту на экране терминала загорится требование использовать чип). Более подробно значения Service code расписаны тут. По традиции, все упомянутые ссылки будут продублированы в конце поста.
Далее идут ещё пять цифр — PVV (PIN Verification Value). Первая цифра — это так называемый PIN Verification Key Index (PVKI) — идентификатор (индекс) ключа, который был использован для вычисления конкретного значения PVV. Обычно бывает в диапазоне от 1 до 6, то есть эмитент может использовать до шести различных ключей для вычисления\проверки PVV. Оставшиеся четыре цифры представляют собой непосредственно значение PVV. Как нетрудно догадаться, это число используется для верификации PIN карты.
Последняя группа цифр в последовательности — CVV-1/CVC-1. Этот код используется для авторизации с использованием магнитной полосы. Не следует путать его с CVV-2/CVC-2, напечатанным на обратной стороне карты рядом с местом для подписи.
Считыватель
Время перейти к обзору оборудования. У меня имелись два считывателя магнитных карт Posiflex MR-2000U. Мой экземпляр рассчитан на чтение первой и второй дорожек и имеет интерфейс подключения USB.

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

Разберём экземпляр. На плате отчётливо видны две микросхемы — одна отвечает за F/2F-декодирование, другая — за обработку данных и их отправку по USB. Перемычками настраивается режим работы, например, можно включить или отключить считывание одной или нескольких дорожек, либо отображение символов начала и конца каждой дорожки.


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

Магнитная головка отдельно. Она от POS-terminal’а Ingenico 5100. Отчётливо видны три её дорожки.

А вот другая головка. Такие применялись в терминалах VeriFone VX510.
Собираем считыватель сами
Как устроен заводской считыватель, разобрались. Теперь попробуем собрать свой собственный вариант.
У меня остались магнитная головка и микросхема декодера MRD531B-LQ от помершего VX510. Без проблем найдя даташит на эту микросхему (просто загуглив «MRD531 PDF»), собрал на макетке типовую схему включения.

Недолгие поиски какого-то примера работы с магнитным считывателем на МК вывели меня на библиотеку для подключения такого считывателя к Arduino.
Интерфейс подключения предельно прост: вывод CLS для контроля наличия карты и традиционные DATA/CLK для каждой из дорожек.
Как позже выяснилось, схема весьма дубовая и работает даже при существенно далёких от рекомендуемого номинала компонентах.
К головке тоже нет никаких существенных требований, при отсутствии таковой от считывателя, подойдёт даже экземпляр от кассетного магнитофона.
Если у вас нет и F/2F-декодера, а воспользоваться считывателем хочется, то можно собрать данную схему самому.
Энкодер
Ну что же, перейдём к самому интересному — к тому, как производится запись на магнитные карты.
Такое устройство, как нетрудно догадаться, намного сложнее и дороже считывателя. На нашей вторичке типичный энкодер стоит около восьми тысяч рублей (интересно, откуда такая цена?) при стоимости считывателя раз в десять меньше, что для меня чрезмерно дорого.
Тем не менее, мне таки повезло раздобыть экземпляр. Называется он MSR206U. Самая продвинутая модель — пишет и читает все три дорожки, поддерживает высокоэрцитивные карты. Устройство в хорошем состоянии, с блоком питания (на двадцать четыре вольта), но без USB-кабеля. Ну что же, отличный повод разобрать девайс, поскольку распиновку разъёма 8P8C я не нашёл.

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

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


А вот и плата. Отчётливо видны мощные резисторы, два реле, микроконтроллер, ПЗУшка. Отдельного упоминания заслуживает драйвер записывающей головки: он выполнен на трёх H-мостах L293D (надо полагать, по одному на каждую дорожку). USB-интерфейс реализован на базе микросхемы конвертера USB-TTL Prolific PL-2303HX.
Распиновка, кстати, оказалась вот такая:
- Земля
- Не подключён
- Не подключён
- Не подключён
- Не подключён
- 5 В
- D-
- D+
Основная часть. Маленький шлейфик (едва видимый рядом с наклеенным жёлтым скотчем) от считывающей головки. К записывающей ведёт жгут из голубых проводов. Оставшиеся провода ведут к оптопаре, детектирующей момент вставки карты, и индикаторным светодиодам. Чёрная пластиковая деталь, к которой ведут цветные провода — энкодер.

С другого ракурса. Отчётливо видны считывающая и записывающая головки. Над записывающей по-китайски аккуратно закреплена оптопара.

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

Ставим поставляющийся с энкодером софт, 206DDX51. Запускаем.

В настройках указываем COM-порт, выбираем высококоэрцитивный тип карты, вводим какие-нибудь данные и жмём кнопку записи. На энкодере загорается жёлтый светодиод. Теперь прокатываем карту, и, если запись и верификация пройдены успешно, жёлтый светодиод погаснет, а зелёный — загорится. Всё, карта успешно записана. Прокатываем её в считывателе и убеждаемся, что всё успешно читается.
Эмулятор
Разумеется, магнитные карты можно эмулировать. Многие из нас даже помнят функцию MST в некоторых телефонах Samsung. И сейчас мы попробуем разобраться с эмуляцией карт и собрать устройство для этого всего из трёх деталей (аж вспомнился пост товарища dlinyj про эмулятор RFID из трёх деталей). В этот раз, правда, всё будет намного проще.
Есть такой проект как MagSpoof. В своё время его даже упоминали здесь, но особого интереса тогда всё это не вызвало.
MagSpoof представляет собой эмулятор магнитных карт, состоящий из катушки, поле которой и будет регистрировать головка считывателя, микроконтроллера ATTiny85, а также уже оказавшегося упомянутым здесь H-моста L293D.
Код проекта был написан для платформы Arduino и может быть запущен с минимальными изменениями (лишь поменять номера ножек) практически на любой плате. Под рукой у меня как раз оказалась Mega. На ней мы и будем всё это собирать. Монтажную плату использовать на этот раз не стал, разместил всё на беспаечной макетке.
У меня не было цели изготовить полностью автономное устройство, так что отталкивался от того, что имелось у меня. Мотать катушку ради устройства, с которым я поиграюсь десять минут, а потом разберу, решительно не хотелось, так что пришлось поискать что-то подходящее в закромах. Очень кстати на глаза попалась коробка с деталями от отслуживших своё принтеров. Шаговики, направляющие, оптопары и платы HVPS оставим для каких-нибудь других опытов, а вот соленоид, из числа тех, что стоят в захватывающем механизме лазерных принтеров, будет в самый раз.

Отсоединяем от него подвижную часть (аккуратно, чтобы не потерять пружинку, нам ведь, как-никак, потом это ещё и назад ставить), и, в общем-то, всё.
Собираем схему. Выводы ENABLE, A и B L293D подключаем к цифровым пинам МК, питание логики — к пяти вольтам, питание нагрузки — к двенадцати (вообще, соленоид рассчитан на двадцать четыре вольта, но в данном опыте я бы столько не подавал, так как можно и саму головку намагнитить). Теперь забиваем свой дамп карты и заливаем скетч. Всё, можно пробовать.

Прижимаем катушку к считывателю, жмём кнопку… и всё успешно срабатывает с первого раза, в открытом «Блокноте» появляется наш номер карты.

Ну, где считыватель, там и POS-terminal. И на нём это тоже прекрасно срабатывает. Всё так, как нам хотелось.
Принцип работы этого эмулятора крайне прост — программа рассчитывает чётность и контрольное значение для заданной дорожки, после чего воспроизводит её на катушке при помощи H-моста, позволяющего менять полярность. По идее, если подключить записывающую головку и энкодер, а подачу тока завязать не на фиксированные тайминги, а на сигналы с энкодера, то можно даже создать устройство для записи карт.
Размагничивание
Как показала парочка опытов, высококоэрцитивные карты весьма стойко переносят нахождение рядом с металлическими предметами и даже кратковременное присутствие магнита.
Пластиковый и ферритовый магниты вообще не смогли оказать влияния на магнитную полосу. Стереть данные удалось только неодимовым магнитом, проведя им по полосе.
Так что носить магнитные карты в кошельках с магнитными застёжками или с некоторыми ключами (например, Mottura выпускала замки, ключи от которых содержали неодимовые магниты) всё-таки не стоит.

Также не стоит забывать и про банальный износ карты. В своё время выпускавшиеся магнитные карты Maestro буквально расслаивались от частого использования, разумеется, переставая при этом читаться.
Так что в итоге?
В банковской сфере магнитные карты уже уходят в историю. Крупнейшие платёжные системы уже заявили о прекращении выпуска карт с магнитной полосой буквально через пять лет.
И даже в других областях, где такие карты применялись, RFID постепенно берёт своё.
Безусловно, RFID или смарт-карты использовать сейчас намного проще и дешевле. Впрочем, совершенно уверен, что все эти материалы смогут кому-то пригодиться.
Ссылки
- Сервис генерации случайных номеров карт
- Формат Service Code
- Библиотека для подключения считывателя магнитных карт к Arduino
- Аналогичный проект от Adafruit (но лично у меня оно не заработало)
- Самая простая схема магнитного считывателя
- MagSpoof
- Пример реального использования MagSpoof
- Софт для MSR206
- Ещё внутренности MSR206
Мобильное приложение Parsec Card Emulator
Parsec Card Emulator — мобильное приложение, позволяющее в режиме эмуляции использовать смартфон с ОС Android и встроенным NFC-модулем в качестве идентификатора СКУД вместо стандартной карты. Вместо UID при этом используется уникальный ID телефона. Обмен между телефоном и считывателем доступа осуществляется в защищенном режиме, что исключает возможность клонирования идентификатора другими средствами.
При идентификации по банковской карте с помощью Apple Pay, в целях безопасности в систему передается Device Account Number (номер виртуальной карты, не совпадающий с номером банковской карты).
- Удобство. Смартфон всегда под рукой и может содержать сразу несколько идентификаторов.
- Безопасность. Обмен данными между телефоном и считывателем доступа осуществляется в защищенном режиме. Исключается возможность клонирования или поломки идентификатора, а также снижается вероятность его передачи или потери.
- Экономия. Внедрение с минимальными временными затратами. Отсутствует необходимость в приобретении и персонализации карт доступа.
- Приложение работает только со смартфонами, поддерживающими функцию NFC.
- Взаимодействие смартфона осуществляется только со считывателями серии PNR-xx. Считыватели, предназначенные для работы с банковскими картами (например, PNR-P19.B) работать с данным приложением не будут.
- Для работы приложения требуется операционная система Android версии не ниже 4.4.
- Для выполнения своих функций приложение должно быть постоянно запущено. При использовании телефона для идентификации телефон не должен находиться в спящем режиме (как минимум, должен быть активен экран).
- Приложение можно активировать/деактивировать через меню.
Конфигуратор СКУД
Автоматический подбор оборудования и программного обеспечения профессиональной системы контроля доступа
Другие товары той же категории


















Информационные статьи по продукту Посмотреть все
Мобильный контроль доступа
Потребность в мобильных решениях на рынке СКУД назрела давно, что неудивительно: смартфоны становятся все умнее и функциональнее. Несмотря на то, что рынок контроля доступа достаточно консервативен, такие.
Написать нам
Мы внимательно читаем каждое сообщение. Ответим в течение одного рабочего дня с момента отправки.
Что такое эмуляция карты NFC Android и как это работает

Когда я окунулся в километры описаний преобразования реальных банковских карт в виртуальный аналог, то понял, что просто перенести, даже в сжатом виде, в поле статьи эту информацию у меня не получится. Написано не для массового читателя, нашпиговано специальными терминами и имеет чересчур наукообразный вид. В статье пойдет речь об эмуляции карты NFC на Android. Поэтому — просто о сложном!
Что такое эмуляция карты
Имеется совершенно конкретная технология HCE (Host Card Emulation), которая позволяет воспроизвести дубликат NFC-карты, то есть бесконтактной по методу соединения с внешним миром. Естественно, понадобится некое программное обеспечение, с его помощью и произойдет второе рождение вашего «пластика». О чем речь?

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

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

Вообще, все устройства, имеющие собственный «банк данных», обладают одной очень привлекательной особенностью. Доступ к нему ограничен. Строго говоря, его нет даже у операционной системы девайса и извлечь что-либо, без вашей помощи, никому постороннему не удастся.
Кроме того, подобные устройства способны на проведение оплаты в бесконтактном режиме без помощи интернета. Все необходимое для транзакции уже есть под рукой.
Как это работает
До 2017 года был написан не один десяток статей на эту тему. С приходом новых приложений, таких как Google Pay, Samsung Pay и Apple Pay, страсти улеглись. Процесс виртуализации физического «пластика» заметно упростился и многие проблемы, связанные с этой процедурой, отпали сами собой. В марте прошлого года был запущен проект Android Pay (детище Google, впоследствии переработанное в современный вариант), детально описанный и донельзя конкретизированный. Изменения в алгоритме эмуляции с тех пор почти не произошли.

Вот как это работает сегодня.
- Прежде всего, предстоит выбрать и скачать нужное вам приложение, из числа предложенных.
- Установить на смартфон.
- Затем приступить к главному — эмулировать банковскую карту. Потребуется ее отсканировать, остальные необходимые данные ввести в ручном режиме. Ничего особенного, сведения о держателе счета в банке, домашний адрес, CVV-код с обратной стороны «пластика», номер телефона.
- Согласиться с пользовательским соглашением.
- Подтвердить СМС правильность ввода.
- Карта эмулирована, она у вас есть и хранится в приложении. В нужный момент просто активируйте NFC-модуль и саму программу. Платеж будет проведен моментально.

Отдельно остановлюсь на процедуре «внесения» дубликата пластикового пропуска куда-либо, в этот разряд можно отнести все другие носители информации, не связанные с банками.
Пытливые китайские умы сделали процедуру переноса физического объекта в память смартфона максимально комфортной и несложной. Вам предстоит скачать NFC Card Emulator с Play Маркета и установить на устройство. Затем активировать NFC-чип (без него никуда), запустить приложение и поднести к задней крышке телефона то, что хотите продублировать. «Пластик» предстанет в виртуальном образе в самой программе, в дальнейшем на него нужно будет нажать и поднести к объекту взаимодействия.

Как удивятся охранники с вашей работы, когда турникет на проходной откроется путем приложения смартфона к нему. Бывшие менты из охраны не любят неожиданностей, и вцепятся в вас мертвой хваткой. Правда, ненадолго.
Что требуется для эмуляции
Уже упомянутый NFC Card Emulator и Root-права в вашем устройстве. Все дело в том, что для изменения настроек в NFC (без этого не обойтись) придется кое-что изменить в системных файлах. Что под силу только суперпользователю.
Именно здесь кроется подвох, о чем нельзя не упомянуть. Предыдущее описание производства виртуальной платежной карты возможно только на совершенно «чистом» телефоне. Что я имею в виду. У вас должна стоять официальная прошивка, Root-права должны отсутствовать.

Только в этом случае получится провести платеж. А значит, если хотите иметь у себя в устройстве буквально все, что должно вас огорчить. Придется что-то выбрать. Либо платите в магазине, либо ходите в бассейн по эмулированному пропуску. Так обстоят дела сегодня, возможно в будущем произойдут перемены к лучшему.
Безопасность
Недавно заглянул в свой старый Xiaomi MI3 и был немало удивлен. Устройство имеет собственный элемент безопасности! В меню настроек предлагается на выбор места хранения: встроенный или на сим-карте. Что касается последнего места, то оно не прижилось на практике, ввиду сложности реализации. На сегодняшний день распространен вариант облачного хранилища Google, счастливчики могут похвастать собственным специальным чипом.

Возможные проблемы
Из возможных ошибок упомяну одну, но наиболее «тяжелую» для пользователей. Несколько лет назад боролись с сообщением из операционной системы: «нет доступных элементов защиты. Эмуляция NFC-карты будет отключена». С появлением реально работающих инструментов переноса платежной карты в виртуальную область, эти ошибки пропали. Что говорит об уровне новейших разработок.
Эмуляция карты NFC Android в настоящее время не является утомительным или сложным занятием. По крайней мере, те, кто хочет воспользоваться бесконтактным способом оплаты покупок, без труда воспользуются максимально разжеванными, в картинках, этапами привязки карты в приложении, предварительно установленном на собственный телефон. Все это есть в интернете.