Делаем копию карты-пропуска по фото / Хабр

14443-a select

В начале обмена терминал устанавливает соединение с картой на канальном уровне. Для тех, кто знаком с сетями и моделью OSI, будет удобно представить это в качестве уровня L2, а UID (Unique Identifier) карты как MAC-адрес узла.

В терминологии стандарта ISO-14443:PCD (proximity coupling device) — название считывателя, в нашем случае это POS-терминалPICC (proximity integrated circuit card) — карта, в нашем случае эту роль выполняет телефон

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

R>> 52 // WUPA (wake up)
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
T<< 04 00 // ATQA (Answer To Request type A) 
R>> 93 20 // Select cascade 1 (Anti Collision CL1 SEL)
T<< 08 fe e4 ec fe // UID (4 bytes)   BCC (Bit Count Check)
R>> 93 70 08 fe e4 ec fe dd 6e // SEL (select tag 0x9370)   UID   CRC16
T<< 20 fc 70  // SAK (Select Acknowledge 0x20)   CRC16 
R>> 50 00 57 cd // HALT (Disable communocaion 0x5000)   CRC16
R>> 26 // REQA
R>> 52 // WUPA
T<< 04 00 // ATQA
R>> 93 70 08 fe e4 ec fe dd 6e // SELECT
T<< 20 fc 70 // SAK
R>> e0 80 31 73 // RATS (Request Answer to Select 0xE080)   CRC16
T<< 05 78 80 70 02 a5 46 // ATS (Answer to select response)

Терминал постоянно передает команду

0x52

Wake-up (WUPA), и как только в поле действия появляется карта, она отвечает командой Answer To Request type A (ATQA), в нашем случае это

0x04 0x00

. Ответ ATQA может различаться в зависимости от производителей чипа.

Получив ответ ATQA, терминал начинает процедуру выявления коллизий, чтобы определить, есть ли в поле действия более одной карты. Команда 0x93 0x20 Select cascade level 1 (SEL CL1) запрашивает у всех карт в поле действия сообщить первую часть своих идентификаторов UID.

Карта отвечает 0x08 0xFE 0xE4 0xEC 0xFE, первые четыре байта — UID виртуальной карты Apple Pay и контрольная сумма 0xFE Bit Count Check (BCC) в конце.

Получив идентификаторы карт, считыватель обращается к конкретной карте командой 0x93 0x70 (SELECT). За командой следует UID карты 0x08 0xfe 0xe4 0xec 0xfe BCC 0xdd 0x6e CRC16.

Карта отвечает 0x20 Select Acknowledge (SAK) 0xfc 0x70 CRC16.

Если на этом шаге получено несколько ответов SAK, ридер может уменьшить длину UID в команде SELECT, пока не ответит единственная карта. Однако, как показано выше, некоторые POS-терминалы отказываются продолжать, если на этом этапе выявлены коллизии, то есть присутствие нескольких карт одновременно.

Длина UID может быть 4, 7 или 10 байт. У всех банковских карт, что я встречал, в том числе и в Apple Pay, UID был равен 4 байтам. Интересно, что Apple Pay генерирует разный UID на каждое считывание, в отличие от физических карт, где UID обычно постоянный.

Ридер посылает команду

0x50 0x00

HALT

0x57 0xcd

CRC16. Это команда завершения связи.

Дальше процедура повторяется заново, ридер снова пробуждает карту (WUPA), но уже без проверки коллизий, сразу выполняется SELECT. Зачем так сделано — не знаю, возможно, это какой-то более надежный способ определения коллизий.

Во второй раз ридер уже посылает команду 0xE0 0x80 Request Answer to Select (RATS) 0x31 0x73 CRC16.

Карта отвечает 0x05 0x78 0x80 0x70 0x02 Answer to select response (ATS) 0xA5 0x46 CRC16.

Answer to select — ответ аналогичный Answer To Reset (ATR) для контактных карт. В нем содержится информация о максимальном размере кадра и параметрах канального уровня.

На этом этапе «канальный» уровень завершен, далее начинается обмен на более высокоуровневом протоколе, в зависимости от приложения, содержащегося на карте. Операция SELECT одинакова для всех бесконтактных карт стандарта ISO 14443A, в том числе NFC-меток, билетов на общественный транспорт, и т.д.

Настройка android pay

Чтобы избежать неприятного момента, когда все настройки произведены верно, а Андроид Пэй все равно не работает на Xiaomi, следует сделать следующее:

Для дальнейшей настройки требуется:

  • Посетить Play Market и установить приложение Android Pay.
  • Android Pay

  • Запустить установленную программу, выбрать профиль Google (если на устройстве подключено несколько учетных записей).
  • В случае, когда к аккаунту уже была привязана кредитная карта – она сразу отобразится в окне. Иначе следует приступить к ее добавлению.
  • Android Pay

  • Нажать кнопку с плюсом в центре, которая расположена в нижнем правом углу.
  • Выбрать тип карты: кредитная или дебетовая, постоянного клиента (например, дисконт от магазина), подарочная.
  • Android Pay выбор карты

  • Используя видоискатель, можно отсканировать 16 цифр на передней части карты. Они автоматически будут вписаны в соответствующее поле. Ввод также доступен вручную, для этого требуется нажать ссылку внизу окна.
  • Указать срок действия и секретный код CVC.
  • Подтвердить добавление, выбрав желаемый способ. Обычно это СМС-сообщение или звонок.
  • Android Pay

  • Ввести код, полученный в СМС, или нажать цифру на клавиатуре при поступлении звонка.
  • Android Pay

  • Добавление завершено. Для проверки работоспособности со счета может быть списана минимальная сумма денег (вскоре она вернется на баланс).

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

Некоторые проблемы с nfc на android

Что такое NFC на андроиде разобрали, теперь остается понять, почему периодически модуль не работает. Отсутствие сигнала может быть связано как с внешними, так и внутренними причинами. Рассмотрим самые распространенные.

Суть проблемыПричина возникновения ошибкиСпособы решения проблемы
Устройство не поддерживает бесконтактную связь.Не все мобильные, как уже упоминалось выше, содержат в себе НФС. Может быть куплена неподходящая модель смартфона или телефон является китайской поделкой.Чтобы не попасть в просак, стоит всегда изучать инструкцию к гаджету при покупке и проверять функционал в самом мобильном.
Модуль не был включен или отключился.Невозможна передача данных, если в настройках не активирован модуль-NFC.Включить бесконтактную оплату можно в основных настройках телефона или же в «шторке».
Неправильно настроено приложение.Все данные нужно вводить внимательно, дабы не ошибиться. Все действия выполнять по инструкции. Если где-то что-то сделать не так, функционировать НФС не будет.Желательно сбросить все настройки и повторить процедуру снова.
Привязана неподдерживаемая карта.Нельзя платить через НФС тем платежным инструментом, который не поддерживается системой. Это же касается и финансового учреждения. К примеру, если в телефоне установлен Андроид Пей, то карта должна принадлежать банку, который сотрудничает с сервисом. Нужно заранее убедиться, что банк заключил договор с бесконтактной системой и выбранная карта поддерживается. Только после этого начинать привязку.
На счету маленькая сумма.Плата не пройдет, если денег на привязанной карте меньше, чем требуется.Нужно следить за балансом, заранее пополнять счет. Если таковой возможности нет, то придется расплатиться другим способом.
Произошел системный сбой.Повлиять на подобное может переполненная память телефона, вирусы и пр.

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

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

Выше приведены самые распространенные причины отсутствия бесконтактной связи. Руководствуясь приведенными рекомендациями, можно свести к минимуму проблемы связанные с NFC.

Удобство или риск: вся правда о бесконтактных платежах

1

Для чего вообще придумали бесконтактные платежи?

PayPass - что это, как работает технология бесконтактной оплаты?

В первую очередь — для удобства плательщика и реализации мобильных платежей. Высокая скорость обмена данными карты и терминала через радиоинтерфейс, а также отсутствие необходимости вставлять карту в ридер терминала позволяют реализовать удобный для держателя карты режим «дотронулся и пошел» (tap & go). Также платежи размером ниже определенного лимита не требуют проведения верификации держателя карты (например, ввода ПИН-кода), что тоже удобно и ускоряет выполнение операции. Ну и возможно, самое главное: без бесконтактных платежей не реализовать мобильные платежи — телефон ведь в ридер терминала не вставишь.

Напомним, лимит на сумму покупки без верификации держателя карты (например, ввода ПИНа) зависит от правил платежной системы, на базе которой выпущена карта. Например, по картам «Мир» он составляет до 1 тыс. рублей, по Visa — до 3 тыс. Поскольку карта и терминал взаимодействуют бесконтактным способом, минимизирована возможность физического повреждения карты. Поэтому такие карты можно выпускать с увеличенным сроком действия.

2

Что происходит между картой и терминалом при бесконтактной оплате?

«Когда мы прикладываем карту к терминалу на расстояние до четырех сантиметров, карта попадает в переменное магнитное поле терминала, и в ней, по закону Фарадея, возникает индукционный ток. Меняя напряженность магнитного поля терминала, можно передавать сигналы, кодирующие команды, направляемые карте. Наоборот, используя нагрузочную модуляцию на стороне карты, можно менять напряженность поля на терминале. В результате меняется напряжение на антенне ридера. Таким способом с карты передаются ответы на команды терминала. Кроме того, энергия магнитного поля терминала накапливается в конденсаторе колебательного контура карты и используется чипом карты для реализации логики платежного приложения карты», — рассказывает директор департамента инноваций и главный архитектор НСПК (оператора платежной системы «Мир») Игорь Голдовский.

3

Чем бесконтактный платеж отличается от контактного?

PayPass - что это, как работает технология бесконтактной оплаты?

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

4

Возможность украсть деньги с карты с помощью фальшивого терминала — она существует?

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

«С расстояния 40—50 сантиметров при определенной модернизации терминала возможно инициировать операцию по бесконтактной карте без авторизации ее держателя. Но важно понимать, что сам терминал, с помощью которого мошенники собираются похищать средства, должен быть зарегистрирован в банке — участнике платежной системы, а сам магазин, к которому приписан терминал, должен иметь счет в банке, — объясняет он. — Без наличия счета мошенники не смогут получить средства, которые якобы заплатили магазину-мошеннику держатели тех бесконтактных карт. Как уже выше отмечалось, размер бесконтактной трансакции без верификации держателя карты ограничен лимитом (в Visa в России он недавно был увеличен до 3 тыс. рублей, во всех остальных системах составляет 1 тыс. рублей. — Прим. ред.). У нас в стране подавляющее большинство трансакций выполняется в онлайновом режиме с авторизацией у банка-эмитента. Поэтому сразу срабатывают процедуры управления рисками на стороне банка — эмитента карты.

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

5

А есть зарегистрированные случаи такого мошенничества?

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

6

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

PayPass - что это, как работает технология бесконтактной оплаты?

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

7

Я хочу платить с помощью телефона. Google Pay, Samsung Pay, Mir Pay и прочие Pay — как это все работает?

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

8

Эти платежные приложения как-то отличаются друг от друга?

Платежные приложения для мобильного кошелька и карты разные. У мобильного кошелька есть своя специфика, связанная с его реализацией. Если, например, кошелек реализован на основе встроенного в телефон элемента безопасности, платежное приложение очень напоминает приложение карты. Его использует кошелек Apple Pay. В Samsung многие модели смартфонов поддерживают «Доверительную среду исполнения» (Trusted Execution Environment), что позволяет кошельку Samsung Pay обеспечивать безопасную среду для работающих через него платежных приложений.

«В самом общем случае смартфона, работающего на Android, кошелек пользуется только средствами этой операционной системы (например, Android Key Storage, Host Card Emulation). Их не так много, поэтому платежное приложение должно само обеспечивать свою безопасность, — указывает Игорь Голдовский. — Для этого используется удаленная аттестация телефона на предмет его рутованности и наличия вредоносного ПО, хранение приложения в затрудняющем анализ виде, хранение в приложении ограниченного набора конфиденциальных данных, изменение которых требует реализации специальных процедур с центрального сервера системы, использование специальной реализации криптографических алгоритмов (White Box Cryptography) и т. п. Пример такого мобильного кошелька — Google Pay».

Одним словом, сколько есть Pay, столько платежных приложений платежная система должна иметь.

11

Сейчас появляются платежные кольца, браслеты, часы, какие-то наклейки — есть ли в этом смысл?

Многие эксперты платежного рынка считают, что у носимых устройств (wearables) — колец, браслетов, часов, брелоков, активных наклеек / стикеров и т. д. — хорошее будущее. В первую очередь они безопасны потому, что в основе их архитектуры лежит элемент безопасности, операционная среда носимого устройства поддерживает ограниченный набор приложений, и вредоносное ПО на них поместить непросто. Устройства взаимодействуют с внешним миром через ограниченный набор интерфейсов (как правило, лишь NFC, к которому иногда добавляется BLE), и, наконец, некоторые устройства имеют биометрический сенсор для захвата отпечатка пальца, позволяющий верифицировать пользователя.

Эксперимент

Итак, на карте нанесены некие цифры. Было логично предположить, что это и есть ее ID. Для того, чтобы это выяснить, я взял данные аналогичной карты, получилось следующее:

Цифры на карте: 0013396136 204.26792
ID: 4A00CC68A8

После преобразования ID из HEX в DEC, получилось 317840976040, что не похоже на цифры с карты. Спойлер: если бы я сделал наоборот, и конвертировал цифры с карты в шестнадцатеричный формат, то я добился бы успеха сразу, но тогда эта статья была бы не такой содержательной 🙂

Размышляя над тем, что еще оно может значить, я вспомнил, что Proxmark помимо ID карты показывает еще кое-какие данные:

Ага, 0013396136 и 204.26792 — это именно то, что написано на карте!Но ведь на ней хранится всего лишь 5 байт, значит эти числа должны вычисляться из ID по некому алгоритму ридером или его клиентом. К счастью, Proxmark – open-source проект, его исходные коды доступны на гитхабе . Я сделал поиск в репозитории по строке «DEZ 10» и нашел функцию cmdlfem4x.c.

Часть кода cmdlfem4x.c:

...
    //output 88 bit em id
            PrintAndLog("nEM TAG ID      : X6" PRIX64, hi, id);
        } else{
            //output 40 bit em id
            PrintAndLog("nEM TAG ID      : 0" PRIX64, id);
            PrintAndLog("nPossible de-scramble patterns");
            PrintAndLog("Unique TAG ID  : 0" PRIX64,  id2lo);
            PrintAndLog("HoneyWell IdentKey {");
            PrintAndLog("DEZ 8          : " PRIu64,id & 0xFFFFFF);
            PrintAndLog("DEZ 10         : 0" PRIu64,id & 0xFFFFFFFF);
            PrintAndLog("DEZ 10         : 0" PRIu64,id & 0xFFFFFFFF);
            PrintAndLog("DEZ 5.5        : lld." PRIu64,(id>>16LL) & 0xFFFF,(id & 0xFFFF));
            PrintAndLog("DEZ 3.5A       : lld." PRIu64,(id>>32ll),(id & 0xFFFF));
            PrintAndLog("DEZ 3.5B       : lld." PRIu64,(id & 0xFF000000) >> 24,(id & 0xFFFF));
            PrintAndLog("DEZ 3.5C       : lld." PRIu64,(id & 0xFF0000) >> 16,(id & 0xFFFF));
...

Из кода выше становится ясно, что эти числа – части ID карты:0013396136 (DEZ 10) – первые 4 байта, если считать от младшего к старшему.204.26792 (DEZ 3.5C) – третий байт отдельно (он же Facility Code) и непосредственно 2 байта серийного номера карты.

Таким образом, по цифрам на карте можно восстановить часть ее ID. Но как быть, если известны 4 байта, а требуется 5? И если четвертый байт имел значение 0 на всех считанных мной картах, то пятый байт всегда ненулевой. Перебирать этот байт в конкретном случае не вариант — не хочется вызывать подозрения у охраны.

Тут я вспомнил, что СКУД в этом бизнес-центре установлен достаточно давно, поэтому я предположил, что там может использоваться для передачи данных популярный, но устаревший Wiegand-26. Этот протокол предназначен для связи считывателя с контроллером, и позволяет передавать за одну посылку 24 бита данных и 2 бита четности, итого 3 байта полезной нагрузки.

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

Ну что же, теперь осталось проверить на практике все изыскания выше. Для создания копии карты я взял заготовку T5577 и записал на нее полученный ID (пятый байт — случайный):

Получилась почти полная копия карты с фото, отличается только старший байт. Для уверенности можно еще раз ввести команду lf search и проверить, совпадают ли DEZ 10 и DEZ 3.5C с цифрами на оригинальной карте.

После этого я записал уже преобразованный аналогичным образом ID нужного мне пропуска.Как и ожидалось, карта считалась корректно, турникет щелкнул, мигнул зеленым индикатором.

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

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