Flipper Zero RFID

Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19]

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

  • Низкочастотные (Low Frequency: 125 кГц) — имеют большую дальность чтения. Небезопасные и тупые. Используются в примитивных системах контроля доступа: домофонах, офисных пропусках, абонементах в спортзал.
  • Высокочастотные (High Frequency: 13,56 МГц) — имеют меньшую дальность работы по сравнению с низкочастотными, и могут иметь сложные протоколы, средства шифрования, аутентификации, криптографии. Используются в бесконтактных банковских картах, проездных билетах, безопасных пропусках.

В статье мы сравним два основных типа RFID меток, разберем основные протоколы и научимся с ними работать с помощью Flipper Zero — читать, эмулировать, сохранять, перезаписывать. Я покажу как сохранить во Флиппер RFID-ключи от домофона, офиса, спортзала, и что Флиппер может прочитать из банковской карты.


Как устроены RFID-метки



RFID чип включается, когда на него подается питание от радиополя считывателя

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

Какие бывают RFID-метки


Внешний вид RFID-меток может быть совершенно разный: толстые/тонкие карты, брелоки для домофонов, браслеты, кольца, монеты и даже наклейки. При этом только по внешнему виду нельзя однозначно сказать, на какой частоте и по какому протоколу работает метка.


Внешне RFID-метки могут выглядеть по-разному

Часто производители RFID-брелков используют одинаковые пластиковые корпуса для меток разных частотных диапазонов, поэтому бывает, что две метки, выглядящие абсолютно одинаково, работают в разных диапазонах. Это важно учитывать, когда пытаетесь определить на глаз, что за метка перед вами. В статье мы будем рассматривать 2 самых популярных типа RFID-меток, которые используются в системах контроля доступа. Флиппер поддерживает оба этих диапазона.

Существует множество RFID-протоколов, работающих на других частотах, вроде UHF 840-960 МГц. Они применяются для отслеживания грузов, оплаты проезда на платных дорогах, отслеживания диких животных при миграции и т.д. Эти метки могут иметь собственную батарею и работать на расстояниях от нескольких метров, до нескольких километров. При этом, они достаточно редкие, и в привычном обиходе почти не встречаются. В статье мы их рассматривать не будем.


Отличия RFID 125 кГц и 13.56 МГц


Проще всего понять в каком диапазоне работает RFID-метка по виду антенны. У низкочастотных меток (125 кГц) антенна сделана из очень тонкой проволоки, буквально тоньше волоса, и огромного числа витков. Поэтому такая антенна выглядит как цельный кусок металла. У высокочастотных карт (13.56 МГц) антенна имеет намного меньше витков и более толстую проволоку или дорожки. Так что между витками видны зазоры.

Если просветить карту фонариком, можно узнать на какой частоте она работает

Чтобы увидеть антенну внутри RFID-карты, можно просветить ее фонариком. Если у антенны всего несколько крупных витков — это скорее всего высокочастотная карта. Если антенна выглядит как цельный кусок металла без просветов — это низкочастотная карта.

Антенны у низкочастотных карт из очень тонкой проволоки, а у высокочастотных из более толстой

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

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

Сравнение RFID-меток 125 кГц и 13,56 МГц

Низкочастотные метки 125 кГц


  • Дальнобойность — большая дальность действия таких меток достигается за счет низкой частоты. Существуют считыватели карт EM-Marin и HID, который работают на расстоянии около метра. Их часто применяют на автомобильных парковках.
  • Примитивный протокол — из-за низкой скорости передачи данных, такие метки могут передать только свой короткий ID. В большинстве случаев не используются никакие средства аутентификации и защиты данных. Как только карта попадает в поле действия считывателя, она начинает передавать свой идентификатор.
  • Низкая безопасность — из-за примитивности протокола, такие метки легко скопировать или прочитать у владельца из кармана.

Высокочастотные метки 13,56 МГц


  • Малая дальность — высокочастотные метки специально разработаны так, чтобы их нужно было прикладывать вплотную к считывателю. Это сделано в том числе для защиты от несанкционированного считывания. Максимальная дальность считывания, которую я видел у пассивных таких карт — около 15 см на специальных дальнобойных считывателях.
  • Продвинутые протоколы — скорость передачи данных до 424 kbps позволяет реализовать сложные протоколы обмена данными с полноценным двусторонним обменом: криптографию, передачу файлов и т.д.
  • Безопасность — высокочастотные бесконтактные карты не уступают контактным смарт-картам. Существуют карты, поддерживающие стойкие алгоритмы шифрования, вроде AES, и реализующие ассиметричную криптографию с открытым ключом.


Как устроен RFID во Flipper Zero


Работа RFID-антенны во Flipper Zero

Флиппер поддерживает низкочастотные и высокочастотные метки. Для поддержки обеих частот, мы разработали двухдиапазонную RFID антенну, расположенную на нижней крышке устройства.

Для высокочастотных протоколов (NFC) во Флиппере установлен отдельный NFC-контроллер ST25R3916. Он реализует всю физическую часть работы с картами: чтение, эмуляцию. Низкочастотные протоколы 125 kHz у нас реализованы полностью программно — Флиппер «дрыгает» ногой микроконтроллера для передачи и принимает низкочастотный сигнал через аналоговую схему прямо на ногу GPIO.

[Видео] Расположение платы с антеннами RFID во Flipper Zero

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

Антенна на этапе сборки вклеивается в нижнюю крышку Флиппера и подключается к плате через подпружиненные контакты. Это сильно облегчает процесс сборки, так как не требует подключения шлейфов или UFL разъемов к антенной плате.

Низкочастотные протоколы 125 кГц


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



Популярные типы 125 kHz протоколов:
  • EM-Marin — EM4100, EM4102. Самый популярный протокол в СНГ. Очень простой и стабильный в работе, может считываться с расстояния метра.
  • HID Prox II — низкочастотный протокол от компании HID Global. Более распространен на западе, но встречается и в СНГ. Более сложный в работе, считыватели и карты относительно дорогие.
  • Indala — очень старый низкочастотный протокол, придуманный компанией Motorola, но потом выкупленный HID. Встречается реже двух предыдущих, выходит из использования, но по-прежнему иногда встречается.


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

EM-Marin


[Видео] Считывание Флиппером меток EM-Marin

В СНГ наиболее распространен RFID-формат EM-Marin. Он прост и не защищен от копирования. EM-Marin обычно выполнен на базе чипа EM4100. Существуют и другие чипы, работающие по тому же принципу, например EM4305 – в отличие от EM4100 его можно перезаписывать.

Для считывания низкочастотной карты нужно зайти в меню Флиппера 125 kHz RFID —> Read и приложить метку к задней крышке. Флиппер определит протокол метки самостоятельно и отобразит его название вместе с ID карты. Так как за один проход, Флиппер пытается по очереди пробовать все типы протоколов, это занимает время. Например, для считывания карт Indala требуется несколько секунд.

Уникальный код EM-Marin на карте и на Флиппере

Уникальный код EM4100 состоит из 5 байт. Иногда он написан на RFID-карте. Уникальный код может быть записан сразу в нескольких форматах: десятичном и текстовом. Флиппер использует шестнадцатеричный формат при отображении уникального кода. Но на картах EM-Marin обычно написаны не все 5 байт, а только младшие 3 байта. Остальные 2 байта придется перебирать, если нет возможности считать карту.

[Видео] Открываем домофон, эмулируя RFID 125 кГц

Для эмуляции RFID-метки нужно перейти в меню 125 kHz RFID —> Saved, выбрать нужную метку, после чего нажать Emulate.

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

HID Prox


[Видео] Считывание Флиппером меток HID26

Компания HID Global — самый крупный производитель RFID оборудования в мире. У них есть несколько фирменных низкочастотных и высокочастотных RFID-протоколов. Наиболее популярный низкочастотный HID-протокол это 26-битный H10301 (HID26, он же HID PROX II). Уникальный код в нем состоит из 3 байт (24 бита), еще 2 бита используются для контроля четности (проверки целостности).

На некоторых HID26 картах написаны цифры – они обозначают номер партии и ID карты. Полностью узнать 3 байта уникального кода по этим цифрам нельзя, на карте написаны лишь 2 байта в десятичной форме: Card ID.

Структура данных HID26 на карте и при чтении Флиппером

Из низкочастотных протоколов семейства HID, Флиппер пока умеет работать только с HID26. В дальнейшем мы планируем расширить этот список. HID26 наиболее популярен, так как совместим с большинством СКУДов.

[Видео] Флиппер эмулирует низкочастотную карту и открывает турникет

Indala


RFID-протокол Indala был разработан компанией Motorola, и потом куплен HID. Это очень старый протокол, и современные производители СКУД его не используют. Но в реальной жизни Indala все еще изредка встречается. На момент написания статьи, Флиппер умеет работать с протоколом Indala I40134.

[Видео] Флиппером читает карту Indala

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

Все эти протоколы настолько простые, что ID карты можно просто ввести вручную, не имея оригинальной карты под рукой. Можно тупо прислать текстовый ID карты, и владелец Флиппера сможет ввести его вручную.

Ввод ID карты вручную


[Видео] Ввод ID карты Indala вручную без оригинальной карты

Чтобы добавить ID карты вручную, нужно зайти в меню 125 kHz RFID —> Add manually, выбрать протокол и ввести ID карты. Добавленная карта сохранится на SD-карту, и ее можно будет использовать для эмуляции или записи на болванку.

Запись болванки 125 кГц


Существуют специальные типы карт болванок, на которые можно записать любой из трех протоколов описанных выше (EM-Marin, HID Prox, Indala). Самый популярный тип болванок — это T5577. Для записи болванки нужно перейти в меню 125 kHz RFID —> Saved, выбрать нужный ключ и нажать Write.

[Видео] Запись болванки T5577

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

Высокочастотные карты 13,56 МГц




Высокочастотные метки 13,56 МГц состоят из целого стека стандартов и протоколов — весь этот стек принято называть технологией NFC, что не всегда правильно. Основная часть протоколов основана на стандарте ISO 14443 — это базовый набор протоколов физического и логического уровня, на котором стоят высокоуровневые протоколы, и по мотивам которых созданы альтернативные низкоуровневые стандарты, например ISO 18092.

Наиболее часто встречаемой является реализация ISO 14443-A, ее используют почти все исследуемые мною проездные, пропуска и банковские карты.

Упрощенная архитектура технологии NFC

Упрощенно архитектура NFC выглядит так: на низкоуровневой базе ISO 14443 реализован транспортный протокол, он выбирается производителем. Например, компания NXP придумала свой высокоуровневый транспортный протокол карт Mifare, хотя на канальном уровне, карты Mifare основаны на стандарте ISO 14443-A.

Флиппер умеет взаимодействовать как с низким уровнем протоколов ISO 14443, так и с протоколами передачи данных Mifare Ultralight и EMV банковских карт. Сейчас мы работаем над добавлением поддержки протоколов Mifare Classic и NFC NDEF. Подробный разбор применяемых стандартов и протоколов NFC заслуживает большой отдельной статьи, которую мы планируем сделать позднее.

Голый UID стандарта ISO 14443-A


[Видео] Чтение UID высокочастотной метки неизвестного типа

Все высокочастотные карты, работающие на базе ISO 14443-A, имеют уникальный идентификатор чипа — UID. Это серийный номер карточки, подобно MAC-адресу сетевой карты. UID бывает длиной 4, 7 и очень редко 10 байт. UID не защищен от чтения и не является секретным, иногда он даже написан на карточке.

В реальности существуют много СКУД-ов, использующих UID для авторизации доступа. Такое встречается, даже когда RFID-метки имеют криптографическую защиту. По уровню безопасности это мало чем отличается от тупых низкочастотных карт 125 кГц. Виртуальные карты (например, Apple Pay) намеренно используют динамический UID, чтобы владельцы телефонов не использовали платежное приложение как ключ для дверей.

[Видео] iPhone каждый раз генерирует случайный виртуальной UID карты в ApplePay

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

Различие чтения UID и данных внутри карты


Чтение NFC разделено на два типа – низкоуровневое и высокоуровневое

Чтение меток 13,56 МГц во Флиппере можно разделить на 2 части:

  • Низкоуровневое — первичное чтение только UID, SAK и ATQA. На основе этих данных Флиппер пытается предположить, на каком высокоуровневом протоколе работает карта. Это угадывание не может быть на 100% точным, это только предположение.
  • Высокоуровневое — чтение данных в памяти карты используя конкретный высокоуровневый протокол, например, чтение данных в картах Mifare Ultralight, чтение содержимого секторов Mifare Classic, чтение реквизитов банковской карты PayPass/Apple Pay


Для чтения карты с помощью конкретного высокоуровневого протокола нужно перейти в NFC —> Run special action и выбрать необходимый тип метки.

Для определения типа метки и чтения UID нужно перейти в NFC -> Read card. Пока Флиппер умеет определять Mifare Ultralight и EMV bank card.

Mifare Ultralight


[Видео] Чтение данных с карты Mifare Ultralight

Mifare — семейство бесконтактных смарт-карт, имеющих собственные разные высокоуровневые протоколы. Mifare Ultralight — самый простой тип карт из семейства. В базовой версии он не использует криптографическую защиты и имеет только 64 байта встроенной памяти. Флиппер поддерживает чтение и эмуляцию Mifare Ultralight. Такие метки иногда используют как домофонные брелки, пропуска и проездные. Например, московские транспортные билеты «единый» и «90 минут» выполнены как раз на основе карт Mifare Ultralight.

Банковские карты EMV (PayPass, Apple Pay)


[Видео] Чтение данных из банковской карты

EMV (Europay, Mastercard, and Visa) — международный набор стандартов банковских карт. Подробнее про работу бесконтактных банковских карт можно почитать в статье Павла zhovner Как украсть деньги с бесконтактной карты и Apple Pay.

Банковские карты — это полноценные смарт-карты со сложными протоколами обмена данными, поддержкой ассиметричного шифрования. Помимо чтения UID, с банковской картой можно обменяться сложными данными, в том числе вытащить полный номер карты (16 цифр на лицевой стороне карты), срок действия карты, иногда имя владельца и даже историю последних покупок.

Стандарт EMV имеет разные высокоуровневые реализации, поэтому данные, которые можно достать из карт могут отличаться. CVV (3 цифры на обороте карты) считать нельзя никогда.

Банковские карты защищены от replay-атак, поэтому скопировать ее Флиппером, а затем эмулировать и оплатить покупку в магазине у вас не получится.

Виртуальная карта ApplePay VS Физическая банковская карта


Сравнение безопасности виртуальных и физических банковских карт

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

Преимущества виртуальной карты Apple Pay, Google Pay:

  • Не позволяет использовать перехваченные данные для оплаты в интернете – обычная карта может быть использована для операций типа Card not present (CNP), то есть для оплаты в интернете, по телефону и т.д. Данные из виртуальной карты Apple Pay нельзя использовать подобным образом. Это связано с тем, что электронная карта при регистрации выпускает новую карту, операции по которой обязаны иметь криптографическую подпись. Считывание Apple Pay выдает PAN и expiration date новой выпущенной электронной карты, а не физической, регистрируемой. Поэтому, если указать перехваченные данные виртуальной карты для оплаты в интернете, платеж будет отклонен, так как эти транзакции требуют специальной подписи.
  • Не раскрывает данные владельца — некоторые физические бесконтактные карты могут передавать имя владельца (Cardholder name) и историю последних покупок. Виртуальная карта так не делает.


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


Наши соцсети


Узнавайте о новостях проекта Flipper Zero первыми в наших соцсетях!


_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________


Предзаказ Flipper Zero


Сейчас запущено производство первой партии Flipper Zero для бекеров заказавших устройство на Kickstarter. Вторая партия будет доступна для покупки осенью 2021. Вы можете зарезервировать устройство из второй партии заранее здесь https://shop.flipperzero.one/ Это важно для нас, чтобы более точно прогнозировать объемы производства.

Комментарии (61)


  1. Virviil
    10.08.2021 14:35
    +2

    Так всетки, есть шанс появления FlipperPay, или это слишком невозможно реализовать?


    1. agathakazar
      10.08.2021 14:44
      +5

      Для этого нужен Secure Element, отдельный чип которого в Флиппере нет.
      Плюс сертификации EMV и контракты с банками - а это самое сложное.


    1. zhovner
      10.08.2021 14:45
      +7

      Технически нет никаких ограничений. Такой же NFC-чип наверняка стоит в каких-то телефонах и POS-терминалах. Другое дело, что «провижинить» виртуальную EMV карту во Флиппер можно только если получить банковскую лицензию. Извлечь ее из телефона с ApplePay или Google Pay так просто нельзя.


      1. 13werwolf13
        10.08.2021 15:27

        а хотя бы ради интереса зондировали эту тему?

        просто интересно сколько времени денег и нервов надо потратить чтобы сделать свой ProductnamePay


        1. zhovner
          10.08.2021 15:42
          +3

          Ну я смотрел как выглядят программные SecureElement в телефонах Android, размышляя о том, что можно выковырять оттуда ключи, чтобы эмулировать карту самому на своем устройстве.
          Но для того, чтобы это работало на Флиппере нужно будет затащить целиком все протоколы, в том числе проприетарные расширения VISA, MASTERCARD и т.д. в прошивку Флиппера. Это довольно большая работа, которую непонятно зачем делать, учитывая что воспользоваться такой функцией сможет полтора человека.


          1. vsviridov
            10.08.2021 20:30

            Они-же вроде делегируют какую-то криптографию в сим-карту телефона? Помню, мой оператор какое-то время не поддерживал платежи телефоном, и потом нужно было менять симку для этого…

            Там, насколько я помню, даже есть прямое подключение NFC чипа к симке.


            1. zhovner
              10.08.2021 20:40
              +10

              Прямое подключение NFC чипа к сим-карте это протокол SWP (Single Wire Protocol) не путать с 1-Wire. Для его работы нужна специальная SIM-карт, на 6 контакте у которой есть SWP. Она называется «SIM-карта с NFC».

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

              Эта технология не имеет маркетингового названия. Такие сим-карты есть у операторов Мегафон/МТС/Билайн. В Москве, например, они используются как транспортный проездной для метро и автобусов. Эту технологию уже несколько лет поддерживают смартфоны на Android.

              Принцип таков: сим-карта подключается к NFC модулю который выполняет физическую модуляцию радиосигнала, при этом данные передает сама sim-карта.

              На физическом уровне это работает через протокол SWP (Single wire protocol), не путать с 1-Wire en.wikipedia.org/wiki/Single_Wire_Protocol

              Стандарты SWP открыты:
              www.etsi.org/deliver/etsi_ts/102600_102699/102613/11.00.00_60/ts_102613v110000p.pdf
              www.etsi.org/deliver/etsi_ts/102600_102699/102622/12.01.00_60/ts_102622v120100p.pdf

              На пальцах это работает так — контактная площадка sim-карты (iso7816) имеет 8 контактов. В наших сим-картах обычно используется только 6 контактов (C4 и C8 отсутствуют).

              image

              Контакт C6 используется для SWP, при этом он независим от всей остальной логики сим-карты. То есть подав только питание на сим-карту и подключив C6 к радиомодулю поддерживающему SWP, можно пользоваться.

              Вот как выглядит принципиальная схема из стандарта
              image

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

              Здесь упрощенно описано как работает SWP на физическом уровне hilbert-space.de/?p=93
              Лучше посмотреть эту ссылку, так будет понятнее.

              Дальше я очень слабо разбираюсь, поэтому могу писать глупо.

              Как я понимаю, сигнал S1, от NFC модуля к сим-карте (от Master CLF к Slave UICC) модулируется с помощью напряжения, как обычно.

              При этом сигнал S2 от сим-карты к радиомодулю модулируется с помощью сопротивления (нагрузки?) которую генерирует сим-карта в момент когда на контакте C6 значение High. Радиомодуль в момент передачи сигнала S1 меряет сопротивление и расчитывает сигнал S2.

              image

              Я хочу повторить схему сниффера описанную здесь hilbert-space.de/?p=168
              Но я плохо понимаю что именно в ней происходит. В идеале хотелось бы сделать полноценную печатную плату.

              В качестве NFC чипа (он же CLF, Master S1) я использую внешнюю NFC антенну. Она устанавливается как прокладка между оригинальной сим-картой и телефоном, заворачивая на себя только SWP. Это позволяет использовать технологию на любых телефонах не поддерживающих SWP и NFC вообще. Внутри антенны есть полноценный NFC чип. Называется она Gemalto N-Flex. К сожалению купить их почти невозможно, но у меня есть пару штук, и если тебе интересно, я могу выслать такую антенну вместе с сим-картой поддерживающей SWP.

              image

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

              Вот как выглядит моя конструкция сейчас. Зеленая плата это GPRS модем, но он используется только как сокет для сим-карты. Сам модем не активен. По сути здесь реализована точная копия принципиальной схемы как на картинке выше.

              image

              Конечная моя цель, сделать открытую реализацию SWP (конкретно Slave S2) которую можно повторить на микроконтроллере общего назначения. Так как эта технология позволяет эмулировать любые карты почти аппаратно, при этом работает очень хорошо. Я пробовал много разных программных способов эмуляции ISO1443 и все они работали плохо.

              Но для начала мне нужна отладочная плата (сниффер) чтобы иметь возможность тестировать как работают реальные устройства. Здесь этот же мужик пишет про свой SWP reader на FPGA hilbert-space.de/?p=140 но схемы не выкладывает, и как я понял это полноценный интерфейс для работы в качестве S1 через компьютер. Мне же достаточно сниффера, который позволит снимать сигнал без его искажения, при том что S1 и S2 у меня заводские.


              1. LuigiVampa
                11.08.2021 17:51

                Кстати, если не ошибаюсь, андроид такое уже давненько поддерживает. Это называется off-host-NFC


                1. zhovner
                  11.08.2021 18:02
                  +1

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

                  Проблема в том, что эту ногу мало кто заводит на SIM-карту, и не понятно как эта функция вообще называется. Айфон так не делает, например вообще.


                  1. LuigiVampa
                    11.08.2021 18:37

                    О, интересно. Насколько я понимаю в рамках андроида off-host означает что данные от NFC чипа будут напрямую прокидываться в UICC, которым, насколько я понимаю, может быть как SIM-карта, так и SecureElement. Но сам я таким не пользовался. Мне кажется, это довольно экзотичный случай.

                    Ещё, насколько я понимаю, по похожей схеме у NXP работают аппаратные SAM-модули для современных карт mifare. Чип делегирует им передачу данных от карты, а они занимаются расчётом криптографии необходимой для получения криптограмм в challenge-response схеме аутентификации секторов на чтение/запись. Таким образом данные о ключах спасаются от нахождения в памяти хост-системы к которой подключён кард-ридер


  1. asakasinsky
    10.08.2021 15:46
    -7

    Похекать…


  1. ohm
    10.08.2021 15:50

    А если я не знаю что за стандарт у меня?

    Хочу просто прикладывать к флипперу всё подряд и пусть он угадывает. Можно так?


    1. Serega_Barsukov Автор
      10.08.2021 16:05
      +3

      Можно, Флиппер будет определять известные ему протоколы и стандарты. А если протокол неизвестен, Флиппер не отреагирует на карту.

      Например, вы можете прочитать карту из меню 125 kHz RFID и она не определится, тогда вы можете зайти в меню NFC (для 13,56 МГц) и прочитать ее.


    1. zhovner
      10.08.2021 16:16
      +4

      > А если я не знаю что за стандарт у меня?

      Мы думали объеденить все протоколы в одно меню RFID, но это также добавляет путаницы, например из-за двухдиапазонных карт, которые одновременно работадют на 125 khz и 13,56 MHz.

      Флиппер не может одновременно активировать обе антенны RFID, поэтому нужно будет включать их по очереди. Каждое чтение занимает время и если сперва ждать все протоколы на одном диапазоне, потом на другом, чтение будет занимать несколько секунд, и чтение не будет отзывчивым. Это будет раздражать.

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


      1. Dexif
        10.08.2021 16:21

        Так может сделать отдельный режим?


  1. ECRV
    10.08.2021 15:58

    Вопрос может слишком странный, но любопытно

    Можно ли сделать взять два флиппера, соединить их по ble или wifi, поднести один к телефону с готовым Apple Pay а второй к терминалу оплаты и сделать такой хитрый проброс оплаты чего либо?

    Или же у NFC есть ограничение на время ответа. В этом случае может понадобиться связь побыстрее


    1. zhovner
      10.08.2021 16:20
      +5

      Salvador Mendoza делал готовые демки для таких атак salmg.net/2018/12/01/intro-to-nfc-payment-relay-attacks

      В целом, я не вижу никаких ограничений для такого, потому что POS терминалы очень толерантны к задержкам ответа карты, я сам удивился обнаружив, что банковская карта может думать перед ответом ДЕСЯТКИ миллисекунд. Так что вполне возможно, но сами мы делать такую функцию не будем.


      1. LuigiVampa
        11.08.2021 17:42
        +2

        Плюсую. Вообще вроде как по идеологии NFC ответ должен быть всегда очень быстрым, но при этом современные реалии существенно скорректировали это, т.к. 13.56МГц картам, в чипе которых например крутятся апплеты, считающие тот же RSA, очевидно необходимо большее время для ответа чем LF-карточке передающей только свой ID. Насколько я понимаю, время таймаутов на получение ответа настраивается на уровне драйверов и в общем PC/SC драйвере на винде например по умолчанию составляет 5 секунд.

        Я для интереса эмулировал ISO-7816 NDEF тэг на андроиде через HCE сервис. А HCE сервис в андроиде так устроен что сначала система получает ISO SELECT APDU (00 A4 04 ... ), парсит из него значение AID (идентификатора апплета с которым необходимо начать работу), затем по этому AID система смотрит есть ли среди манифестов приложений объявленые HCE-сервисы которые умеют эмулировать апплет с таким ID и если есть, то стартует этот сервис и передаёт ему управление. Это занимает время, плюс на старте сервиса у меня инициализировалось создание объектов, вычитывание данных из песочницы и т.д. что тоже занимает время, и по факту ответ на первую APDU приходил с ооооочень большой для NFC задержкой (очень много миллисекунд), но ничего - ни один ридер не подавился. Так что не исключено, что и relay-атаки вполне осуществимы


  1. eurol
    10.08.2021 16:27

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


    1. zhovner
      10.08.2021 16:32

      Не совсем понятно, что такое «считыватель mifare». Часто под этим названием имуют в виду считыватели, который читают только UID чипа (серийный номер), при этом по самому протоколу Mifare даже не пытаются общаться.

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


      1. eurol
        10.08.2021 16:37

        Прошу прощения. На али по mfrc-522 находятся. Сейчас стоят меньше 2 долларов, в комплекте идет пара токенов. Может, дело в библиотеке, которая умеет лишь некоторые протоколы? Но тогда выходит, что новые карточки протоколы используют иные.


        1. zhovner
          10.08.2021 17:10

          Да, этот ридер умеет только Mifare, но им можно прочитать UID карты. Для банковский карт рекомендую Pn532 и программы вроде nfc-frog


  1. dijapif
    10.08.2021 17:26
    +1

    Очень хочется такую же фичу для 2.4 GHZ (2.4G FSK) пультов. Для ИК пультов таких решений навалом, а вот для 2.4 GHZ найти не удалось. Могло бы стать уникальной киллерфичей флиппера, из-за которой я с удовольствием его купил бы! Надеюсь учтёте в будущей версии девайса.


    1. xakep2011
      11.08.2021 02:28

      Что-то жутко специализированное, подо что нужно ещё целый железный модуль с антенной. Где это применяется? Нагуглил только пульты для фотиков.


      1. dijapif
        11.08.2021 03:28

        Да нет, 2.4G пульты - очень распространённый вариант. Для радиоуправляемых игрушек, освещения, камер и др. Конкретно FSK я выделил, потому что это моя потребность, ради которой я купил бы флиппер. Но обычно в чипах 2.4G (напр. от тех же TI) помимо FSK поддерживаются и другие принципы передачи, так что при правильном подборе железной части, получится довольно универсально.


        1. Firelander
          11.08.2021 14:03
          +1

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


        1. buldo
          12.08.2021 15:19

          Вот репа модуля, о которой говорит @Firelander. https://github.com/pascallanger/DIY-Multiprotocol-TX-Module

          Моя аппа использует такой модуль и имеет функцию обучения. Прошивка аппы тоже открытая - OpenTX. Думаю можно сделать расширение для флиппера на основе мультимодуля и утащить кусок прошивки OpenTX


  1. vagon333
    10.08.2021 17:34

    Встречался с RFID на 134 kHz (для животных 12мм и 8мм).
    Flipper поддерживает 134 kHz?


    1. zhovner
      10.08.2021 18:18
      +1

      На уровне железа да, но протколы пока не смотрели.


    1. Serega_Barsukov Автор
      10.08.2021 18:22
      +1

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


      1. unwrecker
        11.08.2021 01:06
        +4

        Чтение меток животных было бы хорошей фичей. Сейчас кроме как специализированного аппарата в ветклиниках вариантов и нет...


    1. Dr_Zlo13
      11.08.2021 12:56

      Стандарты требующие 134кгц допускают работу и на 125кгц. Но антенна и весь тракт у нас довольно широкополосные.


  1. WGH
    10.08.2021 20:21
    +3

    Ещё есть забавная тема, что в загранпаспортах есть встроенный NFC. Там есть как минимум ФИО, номер документа, цветная фотография, и электронная подпись. Однако там есть пароль для доступа, который, впрочем, можно посчитать из номера документа (видимо, чтобы нельзя было совсем уж втупую прочесть личные данные из паспорта в сумке).


    1. zhovner
      10.08.2021 20:41
      +4

      Да, там вроде NFC-B. Скорее всего добавим поддержку этого протокола в будущем.


  1. sergsh
    10.08.2021 22:30

    Раз тут собрались спецы по RFID, может кто мне обьяснит почему не взлетел учет товаров в магазине с использованием RFID меток ?


    1. Serega_Barsukov Автор
      11.08.2021 00:47
      +3

      Местами он используется, но не в продуктах повседневного спроса (FMCG). Думаю, это связано с экономикой больше. Напечатать штрих-код дешевле, чем вести учет меток. Обычно магазины больше теряют на списании товара из-за срока годности или повреждениях в транспортировке, чем на воровстве. Но если говорить об одежде, или книгах, RFID достаточно распространен.


    1. lomalkin
      11.08.2021 02:14
      +1

      В магазинах Decathlon (спорт товары) на кассах самообслуживания есть ящик, снабженный рамкой считывателя, в который нужно просто сложить товары и они автоматически добавятся в список покупок без каких-то специальных действий, типа сканирования и прочего. Теги уникальные, поэтому с расчетом количества одинаковых товаров тоже проблем нет. Остается только оплатить.
      Там все товары снабжены тегами, UHF RFID если не ошибаюсь. Работает чуть ли не в полуметре от рамки даже.


      1. Fuzzyjammer
        11.08.2021 13:56

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


  1. NickProgramm
    11.08.2021 06:17
    +1

    Теперь ждём эмуляцию Mifare Ultralight, и Mifare Classic, и реализации nested атак


    1. neco
      11.08.2021 15:36

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


  1. ITMatika
    11.08.2021 07:44
    +1

    Спасибо за статью в популяризационном стиле, получилось вроде и обширно, но всё же несколько поверхностно.
    Небольшие замечания по LF RFID
    1) > остальные используют ту же модуляцию на физическом уровне
    Можно было бы и упомянуть про разные виды модуляции и кодирования в LF, так, для общего развития.
    2) > Мы изучили 3 протокола, другие протоколы протоколы пока не смотрели, не поддерживаем, софт под них не написан.
    Но при этом обобщаете выводы про примитивность других протоколов, даже поверхностно не изучив. А между тем, для примера, в автомобильных иммобилайзерах до сих пор (пока ещё) используются LF протоколы и уже не один десяток лет. И там не просто тупая передача идентификатора, а всё несколько сложнее. Причём это весьма широкий сегмент, а ведь есть и другие - метки животных и прочие.
    Так что ждём возможность расширения библиотеки под 134 кГц и другие протоколы.


    1. Dr_Zlo13
      11.08.2021 13:14
      +3

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

      Так же да, есть всякие FDX которым требуется настоящий FSK/PSK, но тракт под все это просто невозможно запихать в маленькую коробочку с не особо большим МК. По-хорошему тут нужен ару к антенне, ацп, и дальше sdr для этого всего великолепия, что выглядит как задача скорее для Flipper One.

      Еще большинство меток для животных, хотя и заявляют частоту 134кгц, но вполне работают на 125кгц ценой снижения SNR. Хотя железо у нас довольно широкополосное, но опять же из-за особенностей тракта очень дорого переключать частоты считывания на лету, когда мы не знаем что именно к нам поднесли и пытаемся это понять.


      1. ITMatika
        11.08.2021 13:51
        +1

        Это повод сделать во Flipper One тракт нормальным.


  1. Plovchik
    11.08.2021 09:21

    Спасибо за статью. Интересно было почитать.

    Все статьи про RFID сводятся к пропускам, меткам, банковским карточкам. Написано что низкочастнотная RFID метка может считываться на расстоянии. Можно ли использовать данную технологию на складах в логистике или в магазинах?

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


    1. ITMatika
      11.08.2021 10:41

      LF - нет.
      Для этих целей давно уже используются копеечные UHF метки.
      Вот только антенна/считыватель для них дорогие.


    1. Serega_Barsukov Автор
      11.08.2021 12:40
      +1

      У низкочастотных (LF) RFID меток есть существенный недостаток - коллизии. Это когда несколько карт находится рядом, и считыватель начинает захлёбываться полученными данными, так как метки искажают данные друг-друга. Есть специальные антиколлизионные методы, которые в основном применяются на высокочастотных метках.

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


  1. livsius
    11.08.2021 10:47

    Например, компания NXP придумала свой высокоуровневый транспортный протокол карт Mifare, хотя на канальном уровне, карты Mifare основаны на стандарте ISO 14443-A.

    На канальном уровне Mifare чуть-чуть отличается от ISO14443-А: Во время нормального обмена (не Anti-Collision процедуры) на каждую WRITE команду ридера карта шлет 4-битовую команду подтверждения ACK (OK status) или NACK(Error status) (чего нет в стандарте ISO), на каждую READ команду - либо ответ с данными либо NACK.


  1. dlinyj
    11.08.2021 10:56
    +2

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


    1. Serega_Barsukov Автор
      11.08.2021 12:58
      +3

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


      1. dlinyj
        11.08.2021 16:35
        +2

        Ух ты, вон оно как. Забавно, мы в «Хакере» писали и всем было до лампочки. О времена, о нравы. О дивный новый мир…


  1. Gray-Wanderer
    11.08.2021 12:41

    Насчёт ключей от домофона. Как-то в наш подъезд установили домофоны ДомРу. Относительно недавно я узнал, что можно открыть дверь приложив свой смартфон.

    И вот тут мне не вообще понятно, почему это можно сделать. Может кто-то знает какая информация передаётся домофону и как вообще они решили, что именно этот смартфон имеет право работать как ключ?


  1. funarg
    11.08.2021 12:41

    А метки "UHF 840-960" не поддерживаются радиочастью флиппера или они просто никому не интересны?

    Мой жилой комплекс использует такие для въезда в гараж и хотелось бы уже перестать акробатически просачиваться мотоциклом между створок шлагбаума.


    1. Serega_Barsukov Автор
      11.08.2021 15:12

      Флиппер умеет работать как пульт на частотах 315 МГц, 433 МГц и 868 МГц. Часто шлагбаумы и ворота гаража открываются с пульта, а не от автоматического считывания метки. С метками на UHF частоте Флиппер не умеет работать.


      1. neco
        11.08.2021 15:41
        +1

        реквестуем статью про пульты на этих частотах, а также подробно про протоколы DoorHan, CAME и всякие им подобные.


  1. andreishe
    11.08.2021 15:32

    Существует множество RFID-протоколов, работающих на других частотах, вроде UHF 840-960 МГц. Они применяются для отслеживания грузов, оплаты проезда на платных дорогах

    Это не оно?

    Flex pass штата Вашингтон


    1. zhovner
      11.08.2021 16:21

      Похоже.


      1. Still
        11.08.2021 17:30

        С большой долей вероятности у нас на дорогах тоже используются такие транспондеры :-)


  1. LuigiVampa
    11.08.2021 19:15

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

    Часть из них - ограничения ОС. На iOS до сих пор нет HCE интерфейса для самостоятельной эмуляции тэгов, т.к. Apple продвигает свой проприетарный протокол эмуляции который поддерживают только производимые ими ридеры, хорошо хоть с iOS 13 завезли передачу произвольных APDU, до этого вообще можно было только NDEF тэги читать, и то далеко не все. На андроиде полноценно можно работать только с полноценными ISO-7816 тэгами, хотя многие вендоры, те же NXP на ряде продуктов специально делают отходящие от стандарта команды, благодаря чему андроид бросает исключения что это "некорректно сформированное APDU" и ничего не передаёт, или наоборот НЕ делают входящие в стандарт вещи, например до mifare plus ev1 не было поддержки команды ISO SELECT, которая по правилам должна быть первым передаваемым сообщением, т.е. их тэг полноценно работает, но сэмулировать его нельзя. Впрочем, нужно отдать им должное - на новых картах соответсвие ISO было окончательно доработано и теперь всё можно реализовать программно. Ещё на HCE в андроиде применяется ряд негласных ограничений, которые кажется даже не указаны в документации, например попробуйте передать CLA-байт отличный от 0х00, и всё упадёт с исключением, хотя тэги некоторых производителей полагаются на изменение CLA, например для передачи бита сигнализирующего о наличии шифрования или HMAC в сообщениях.

    Часть из них концептуальные - многие криптографические схемы в простых картах полагаются на симметричные алгоритмы и соответсвенно, владение ключом, которому без использования SecureElement'a на андроиде практически не обеспечить надлежащую безопасность хранения, а использование SE требует системных прав. Это пожалуй главная причина по которой карты лояльности и проездные не переезжают в эмуляцию на смартфоне.

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


  1. Xo4y_3uMy
    12.08.2021 18:28

    Все высокочастотные карты, работающие на базе ISO 14443-A, имеют уникальный идентификатор чипа — UID. Это серийный номер карточки, подобно MAC-адресу сетевой карты. UID бывает длиной 4, 7 и очень редко 10 байт. UID не защищен от чтения и не является секретным, иногда он даже написан на карточке.

    Ну если занудствовать, то строго UID считать можно только 7 и 10 байт ID.
    4-байтные ID несколько раз прошли по кругу, куча китайских аналогов и прочего. Так что их сейчас называют NUID (Not Uniq ID) так как существует довольно большая вероятность совпадения ID на больших системах (типа транспортных карт или социальных карт)

    Понимаю, что дорого.... Но очень жаль что нет UHF...


  1. ragesteel
    22.09.2021 20:13

    А как можно будет получить флиппер с таким чехлом с русскоязычной надписью? Я оформил заказ на Flipper Zero Early Bird на кикстартере.


    1. Serega_Barsukov Автор
      28.09.2021 18:35

      На кикстартере его можно добавить в аддоны в backerkit