- Что внутри тега?
- Em-marin
- Hid prox
- Nfc taginfo
- Nfc, iso14443 и mifare
- Tnf_well_known с rtd_text (mime-тип с записью простого текста)
- Алгоритм работы nfc
- Виды меток для оплаты
- Виртуальная карта applepay vs физическая банковская карта
- Вместо введения
- Поддержка в смартфонах
- Высокочастотные карты 13,56 мгц
- Голый uid стандарта iso 14443-a
- Домашняя автоматизация
- Зачем нужны nfc метки ?
- Как запрограммировать nfc-метки
- Как устроен rfid во flipper zero
- Какие бывают rfid-метки
- Какой длины может быть ndef-сообщение?
- Отличия rfid 125 кгц и 13.56 мгц
- Пишем данные
- Поддержка в смартфонах
- Процесс имплантации
- Разблокировка смартфона
- Смартфоны и ноутбуки
- Создание задачи
- Структура ndef
- Сценарии применения nfc-меток
- Типы nfc-меток
- Читаем ndef-сообщение
Что внутри тега?
С технической точки зрения NFC-тег — это микрокомпьютер наподобие тех, что находятся внутри SIM и банковских карт. Здесь есть свой процессор, оперативная и постоянная память, но нет традиционного источника питания. Электрический ток он получает посредством электромагнитной индукции, которая возникает между антеннами считывателя и метки, так же как это происходит в беспроводных зарядных устройствах и пассивных радиоприемниках.
Антенна занимает около 99% площади метки и передает данные на частоте 13,56 МГц со скоростью 106, 212, или 424 Кбит/с. Стандарты NFC определяют несколько протоколов передачи данных, в том числе несколько реализаций протокола обмена данными (они обозначаются буквами A, B и так далее), которые могут быть дополнены производителем самой метки.
Безопасность данных обеспечивается несколькими путями:
- Малая дальность действия. Десять сантиметров — очень приватная зона.
- Защита от клонирования с помощью уникального серийного номера.
- Возможность защиты от перезаписи и защиты данных паролем.
- Опциональное шифрование данных в памяти и при передаче.
Ведущий производитель NFC-тегов — компания NXP Semiconductors. Они производят теги семейства Mifare, которые стали настолько популярны, что совместимость с ними обеспечивают не только другие производители тегов, но и производители NFC-чипов для смартфонов (на уровне эмуляции тегов).
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 наиболее популярен, так как совместим с большинством СКУДов.
[Видео] Флиппер эмулирует низкочастотную карту и открывает турникет
Nfc taginfo
Для начала разберемся, что за теги нам достались. Китайцы обычно никаких подробностей на этот счет не сообщают, а уж о картах метро я вообще молчу. Запускаем NFC TagInfo и подносим смартфон к тегу. Далее тапаем по пункту Tag Information и смотрим (скриншот «Читаем NFC-тег»), что мы имеем:
- UID — уникальный идентификатор тега;
- RF Technology — стандарт, поддерживаемый тегом. В данном случае это ISO/IEC 14443 Type A, то есть обычный RFID-тег c поддержкой первой версии протокола обмена данными (Type A);
- Tag Type — тип (или, лучше сказать, «модель») тега. В данном случае NTAG203 — это Mifare Ultralight C, самый дешевый на данный момент тег. Буква C означает поддержку криптозащиты данных. Еще бывает Topaz 512, который вмещает 450 байт информации, и Mifare Classic 1K (716 байт), используемый в тегах TecTile и нередко в картах метро;
- Manufacturer — производитель тега. NXP Semiconductors — 90% всех NFC-тегов делают они (семейство Mifare).

Nfc, iso14443 и mifare
Стандартов ближней радиосвязи и беспроводных меток в частности, существует великое множество. Чаще всего используются частоты 125 кГц (LF-диапазон, см. первую часть, самые частые представители — EM-Marin, HID Proximity), 13,56 МГц (HF-диапазон, представители — семейство Mifare, семейство HID iClass) и 860-960 МГц (UHF-диапазон).
Вообще в пределах каждого диапазона существует такая легкая мешанина из стандартов ISO, расширений стандартов ISO другими, но совместимыми, коммерческих названий семейств и продуктов, частично или полностью реализующих один из стандартов. Это может добавить сложностей и неожиданных проблем, когда вы ожидаете, что ваша метка будет открывать вот эту дверь, а стандарт на самом деле не совсем тот — и ничего не работает.
Давайте кратко пробежимся по основным стандартам:
ISO 14443 — один из базовых стандартов для карт беспроводного доступа, определяет рабочую частоту (13,56 МГц), предельное расстояние (10 см), прочие физические параметры интерфейса, скорости (до 106 кбодс в изначальном стандарте) и протоколы передачи данных между считывателем и картой, определение коллизий, если в поле считывателя более одной карты и т.д. Стандарт не оговаривает применяемого шифрования, а также точного формата данных на карте.
ISO 15693 — менее распространенный стандарт, несовместимый с предыдущим. Предполагает ту же рабочую частоту, но меньшую скорость обмена данных (до 26 кбодс) в обмен на большую дальность считывания.
NFC — Near Field Communication — довольно большой набор стандартов, частично совместимый с ISO 14443, описывающий как физический уровень интерфейса (в целом основанный на ISO 14443), так и многое другое, формат хранения данных NDEF (стандартизирующий способы кодирования URL, контактных данных и т.д.), режим совместимости с ISO 14443.
Благодаря последнему, каждое NFC-устройство (и радиометка, и смартфон) может как минимум вернуть свой идентификационный номер в понятном считывателю, рассчитанному на более старые карты, формате. Ну и обычно NFC-считыватель способен читать и другие RFID-карты, не являющиеся NFC, но тоже основанные на ISO 14443.
MIFARE — большое семейство стандартов, также основанное на ISO 14443, отличающееся объемом памяти (от сотен байт до десятков килобайт), шифрованием (от отсутствия или проприетарного алгоритма до AESDES), часто используемое в качества карт доступа, платежных карт.
Tnf_well_known с rtd_text (mime-тип с записью простого текста)
Создать NDEF-запись TNF_WELL_KNOWN можно следующим образом:
Kotlin
fun createTextRecord(payload: String, locale: Locale, encodeInUtf8: Boolean): NdefRecord { val langBytes = locale.language.toByteArray(Charset.forName("US-ASCII")) val utfEncoding = if (encodeInUtf8) Charset.forName("UTF-8") else Charset.forName("UTF-16") val textBytes = payload.toByteArray(utfEncoding) val utfBit: Int = if (encodeInUtf8) 0 else 1 shl 7 val status = (utfBit langBytes.size).toChar() val data = ByteArray(1 langBytes.size textBytes.size) data[0] = status.toByte() System.arraycopy(langBytes, 0, data, 1, langBytes.size) System.arraycopy(textBytes, 0, data, 1 langBytes.size, textBytes.size) return NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, ByteArray(0), data)
}Java
public NdefRecord createTextRecord(String payload, Locale locale, boolean encodeInUtf8) { byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII")); Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16"); byte[] textBytes = payload.getBytes(utfEncoding); int utfBit = encodeInUtf8 ? 0 : (1 << 7); char status = (char) (utfBit langBytes.length); byte[] data = new byte[1 langBytes.length textBytes.length]; data[0] = (byte) status; System.arraycopy(langBytes, 0, data, 1, langBytes.length); System.arraycopy(textBytes, 0, data, 1 langBytes.length, textBytes.length); NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data); return record;
}Intent-фильтр для такой NDEF-записи будет таким:
Алгоритм работы nfc
У NFC, как и у RFID, при обмене есть инициатор и цель, но новая технология позволяет куда больше, чем простой обмен идентификатором и чтение или запись информации цели. Наиболее значимым различием между этими двумя технологиями является то, что у NFC целями часто являются программируемые устройства, такие как смартфоны.
У NFC устройств есть два режима взаимодействия. Если инициатор излучает радиочастотные волны, а цель за счёт инициатора получает питание, то такой режим взаимодействия называют пассивным. При активном режиме у инициатора и цели свои собственные источники питания, и они независимы друг от друга. Данные режимы совпадают с режимами RFID.
NFC устройства также имеют три способа работы. Они могут работать в режиме чтения информации с цели или записи на неё. Они могут эмулировать карты, ведя себя как RFID-метки, когда они в поле другого NFC или RFID устройства. Или они могут работать в режиме peer-to-peer (P2P), в котором они обмениваются данными сразу в обоих направлениях.
Первым главным отличием NFC от RFID является способ взаимодействия peer-to-peer, который реализован с помощью ГОСТ Р ИСО/МЭК 18092. Обмен данными P2P реализуется двумя протоколами — протоколом подуровня управления логической связью (LLCP — logical link control protocol) и простым протоколом обмена данными NDEF (SNEP — simple NDEF exchange format).
Виды меток для оплаты
На сегодняшний день производители предлагают на выбор 4 категории микротэгов. Они подразделяются по объему памяти и скорости передачи информации:
| Категория | 1 | 2 | 3 | 4 |
| Объем памяти | 48 Байт | 2 Кб | 20 Кб | 32 Кб |
| Скорость передачи данных | 106 Кб | 106 Кб | 212 Кб | 424 Кб |
Стоит обратить внимание, что 1 и 2 категория микрочипов относятся к перезаписываемым моделям, в среднем рассчитаны на 100 000 циклов перезаписи, а 3 и 4 категории от перепрограммирования имеют защиту.
На первый взгляд, скорость передачи данных даже у самой мощной метки из 4 категории покажется очень несущественной. Однако микрочипы прекрасно справляются со своей задачей и ни разу не подводили пользователей. Они обеспечивают скорость, надежность и высокую безопасность сохранения всех запрограммированных данных.
Перед приобретением микрочипов, в первую очередь следует учитывать один небольшой нюанс – совместимость с мобильным гаджетом. NFC-метки подразделяются на два типа: универсальная и ограниченная совместимость. Универсальная модель чипов подходит ко всем мобильным гаджетам без исключения, независимо от установленной операционной системы.
| Универсальные метки | Метки с ограниченной совместимостью |
| Ntag 203 | Classic Mifare (ОС Android выборочно) |
| Ntag 212-216 | UltraLight (Android, BlackBerry, Windows Phone) |
В любом случае, информация о полноценной совместимости мобильного устройства с разным типом NFC-меток располагается на официальной странице производителя.
Виртуальная карта applepay vs физическая банковская карта
Сравнение безопасности виртуальных и физических банковских карт
В сравнении с пластиковой банковской картой, виртуальная карта в телефоне выдает меньше информации и более безопасна для платежей оффлайн.
Преимущества виртуальной карты Apple Pay, Google Pay:
- Не позволяет использовать перехваченные данные для оплаты в интернете – обычная карта может быть использована для операций типа Card not present (CNP), то есть для оплаты в интернете, по телефону и т.д. Данные из виртуальной карты Apple Pay нельзя использовать подобным образом. Это связано с тем, что электронная карта при регистрации выпускает новую карту, операции по которой обязаны иметь криптографическую подпись. Считывание Apple Pay выдает PAN и expiration date новой выпущенной электронной карты, а не физической, регистрируемой. Поэтому, если указать перехваченные данные виртуальной карты для оплаты в интернете, платеж будет отклонен, так как эти транзакции требуют специальной подписи.
- Не раскрывает данные владельца — некоторые физические бесконтактные карты могут передавать имя владельца (Cardholder name) и историю последних покупок. Виртуальная карта так не делает.
Поддержка банковских карт во Флиппере сделана исключительно для демонстрации работы высокоуровневых протоколов. Мы не планируем никак развивать эту функцию в дальнейшем. Защита бесконтактных банковских карт достаточно хороша, чтобы не переживать о том, что устройства вроде Флиппера могут быть использованы для атак на банковские карты.
Вместо введения
NFC расшифровывается как Near Field Communication или «ближняя бесконтактная связь», если по-русски. По своей сути это небольшой чип, который может быть встроен в смартфон с целью передачи данных на очень короткие расстояния с весьма мизерной скоростью.
NFC очень близка к технологии RFID, которая уже давным-давно используется для пометки продуктов в супермаркетах, но базируется на ее более позднем стандарте ISO/IEC 14443 (смарт-карты) и спроектирована для использования в переносной электронике (читай: смартфонах) и выполнения безопасных транзакций (читай: оплаты покупок).
Как и в случае со стандартом ISO/IEC 14443, дальность действия NFC всего 5–10 см, но разница в том, что чип NFC способен выполнять функцию тега и считывателя одновременно. Другими словами, оснащенный NFC смартфон может быть как смарт-картой (картой метро, например), которую достаточно поднести к считывателю, чтобы расплатиться, так и самим считывателем, что можно использовать, например, для перевода средств между картами-смартфонами и превращения реальных карт с поддержкой стандарта ISO/IEC 14443 в виртуальные.
Но это только «одно из» и наиболее очевидное применение NFC. Благодаря тому, что чип NFC способен передавать данные в обе стороны и не требует аутентификации устройств, его можно использовать как простую и более удобную замену Bluetooth. С помощью NFC, например, можно делиться ссылками, паролями, контактными и другими данными между смартфонами, просто поднеся их друг к другу.
Появившаяся в Android 4.0 технология Beam еще больше расширяет границы применения NFC, позволяя быстро переносить между устройствами целые файлы и папки, что достигается с помощью предварительной аутентификации Bluetooth-устройств по NFC и последующей установки Bluetooth-соединения и отправки файлов.
Как и в предыдущем случае, все, что требуется для передачи, — просто поднести телефоны друг к другу. В прошивках Samsung эта функция носит имя S-Beam и позволяет использовать в качестве «транспортного канала» не только синезуб, но и Wi-Fi (один из смартфонов превращается в точку доступа).
Еще одна возможность — использование пассивных NFC-тегов. Такие теги в виде небольших наклеек можно приобрести за полдоллара за штуку и перепрограммировать с помощью смартфона. Каждый из них может вмещать в себя 137 байт информации (в случае самого распространенного и дешевого тега Mifire Ultralight C), для считывания которой опять же достаточно просто поднести смартфон.
В тег можно записать пароль от домашнего Wi-Fi и приклеить на роутер. Или кодовое слово, на которое будет реагировать смартфон. Можно организовать автоматический запуск навигатора при установке смартфона в держатель в автомобиле или включение бесшумного и энергосберегающего режимов, когда телефон находится на прикроватной тумбочке. Небольшой список покупок в 137 байт тоже вполне вместится.
В этой статье мы поговорим обо всех возможных применениях NFC на практике, но так как в нашей стране оплата покупок с его помощью внедрена примерно нигде, то речь пойдет преимущественно об автоматизации на основе меток.
Поддержка в смартфонах
Первым телефоном с интегрированной поддержкой NFC был Nokia 6131, выпущенный еще в 2006 году. Тогда встроенный NFC-чип был всего лишь игрушкой для демонстрации возможностей созданной два года назад технологии. Смартфон был оснащен софтом для считывания NFC-меток, но ввиду их тогдашней дороговизны и почти нулевой популярности технологии ни на какое серьезное применение данная особенность смартфона не претендовала.
После некоторого затишья популяризацией NFC занялась компания Google, выпустившая в 2021 году смартфон Samsung Nexus S и приложение Google Wallet, которое позволяло расплачиваться виртуальными кредитками, используя NFC. На следующий год Google стала ведущим участником NFC Forum и представила Android 4.0 и основанный на нем смартфон Samsung Galaxy Nexus, который теперь мог похвастаться наличием той самой функции Beam. Позже появился Nexus 4, и наконец начали подтягиваться другие производители.
Сегодня NFC оснащаются почти все выпускаемые смартфоны. Соответствующий модуль есть даже в сверхбюджетных чипах Mediatek, так что большая часть новых китайских смартфонов стоимостью 5000 рублей тоже им оснащены. В любом случае присутствие чипа NFC легко проверить по наличию пункта «Беспроводные сети -> NFC» в настройках.
Высокочастотные карты 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 для авторизации.
Домашняя автоматизация
Наиболее простой и очевидный способ использования тегов — это просто расклеить их по дому с целью получить своего рода систему автоматизации. Здесь существует множество различных вариантов. Приведу наиболее интересные и полезные.
- Пароль от домашнего Wi-Fi. Клеим тег на роутер и записываем в него пароль с помощью приложения InstaWifi. Пригодится не только тем, кто часто принимает гостей, но и любителям экспериментов с прошивками.
- Запуск автосинхронизации или приложения для обмена данными с ПК. Тег можно приклеить на ноутбук или системник и прописать в него запуск приложения для синхронизации данных (AirDroid, WiFi ADB и другие).
- Включение точки доступа. Опять же клеим тег на ноутбук, далее устанавливаем приложение Trigger. В нем добавляем новое задание, в качестве триггера выбираем NFC, пропускаем выбор ограничений, в качестве действия выбираем «Беспроводные и локальные сети -> Wifi-зона», пропускаем следующий экран (добавление переключателя) и на последнем экране подносим к NFC-тегу.
- Включение режима полета на ночь. Клеим метку куда-нибудь ближе к кровати. Запускаем Trigger, новое задание -> триггер: NFC -> действие: «Экспериментальные -> Режим в самолете». Как вариант, вместо включения режима самолета можно настроить отключение передачи данных и Wi-Fi, добавив соответствующие действия в задание.
Зачем нужны nfc метки ?
Когда в 2004 году Philips, Sony и Nokia создали свой NFC forum, данная технология была известна разве что в среде увлеченных технарей. Три кита электронной индустрии ставили своей целью исследование, продвижение, ну и конечно, коммерческую прибыль от внедрения новой технологии бесконтактной передачи данных. Но большого прогресса они не достигли – все их достижения казались не более, чем игрушкой.
Для справки: NFC (от англ. Near Field Communication) – технология передачи данных на очень близком расстоянии, порядка 5-10 см. Является разновидностью технологии RFID – радиочастотной идентификации.
В 2021 к ним присоединяется Google и вот тогда начинается настоящий расцвет технологии, ведь NFC чипы стали поставляться с большинством смартфонов под Android. Пользователи сразу же оценили удобство и безопасность Google Pay – не нужно вводить всем надоевшие пароли; считывание карт происходило быстро и без ошибок. А самое главное пропала необходимость вообще доставать банковскую карту – все данные хранятся в памяти смартфона.
Но это было только начало, ведь новая технология позволяет обмениваться генерируемыми на лету данными, в отличие от RFID, где данные прошиваются один раз и навсегда.
“NFC – это просто приветственное рукопожатие”, – говорит Рэй Хартьен из компании Sony – “Потоковая передача данных идет уже через Bluetooth”. А NFC технологии позволяют обойтись без необходимой проверки безопасности соединения. Сама технология полностью безопасна для человека, так как использует безопасную частоту 13.56 МГц. А из-за небольшой дальности действия, уровень магнитного излучения очень мал.
Как запрограммировать nfc-метки
Считывать информацию с беспроводных носителей и лично упаковывать текст, теги, URL-ссылки или контактные данные в метки NFC помогут специальные софтверные инструменты, представленные для операционных систем iOS и Android в цифровых магазинах App Store и Google Play соответственно. После загрузки софта останется разобраться в деталях:
- Режим «Чтения». Современные смартфоны хотя и не нуждаются в помощниках для считывания NFC меток и автоматически распознают вложенные данные и запрограммированные задачи- все же порой страдают от недопонимания и нуждаются в дополнительной поддержке. Тот же набор «NFC Tools для Android» записывает историю считываний и помогает перенести обнаруженный текст в подходящее место для сохранения содержимого.
С iOS схожая ситуация: «Simply NFC» (и аналоги) – упрощают использование NFC меток и добавляют прозрачности каждому действию.
В момент чтения инструменты способны: распознавать текст, ссылки, записи vCard (своеобразные контактные листы), содержимое SMS и E-mail, конфигурацию Wi-Fi сетей, а еще – конкретные тематические действия. В среде iOS популярны автоматически воспроизводимые команды для HomeKit (включить музыку, сменить свет, проверить погоду). Для Android – настройка звуковых профилей, запуск таймеров, подготовка текста через синтезатор речи.
Как устроен rfid во flipper zero
Работа RFID-антенны во Flipper Zero
Флиппер поддерживает низкочастотные и высокочастотные метки. Для поддержки обеих частот, мы разработали двухдиапазонную RFID антенну, расположенную на нижней крышке устройства.
Для высокочастотных протоколов (NFC) во Флиппере установлен отдельный NFC-контроллер ST25R3916. Он реализует всю физическую часть работы с картами: чтение, эмуляцию. Низкочастотные протоколы 125 kHz у нас реализованы полностью программно — Флиппер «дрыгает» ногой микроконтроллера для передачи и принимает низкочастотный сигнал через аналоговую схему прямо на ногу GPIO.
[Видео] Расположение платы с антеннами RFID во Flipper Zero
Сверху плата с антеннами экранирована слоем ферромагнетика — он изолирует остальную электронику от наводок, перенаправляя высокочастотное поле в другую сторону, что дополнительно увеличивает дальность работы.
Антенна на этапе сборки вклеивается в нижнюю крышку Флиппера и подключается к плате через подпружиненные контакты. Это сильно облегчает процесс сборки, так как не требует подключения шлейфов или UFL разъемов к антенной плате.
Какие бывают rfid-метки
Внешний вид RFID-меток может быть совершенно разный: толстые/тонкие карты, брелоки для домофонов, браслеты, кольца, монеты и даже наклейки. При этом только по внешнему виду нельзя однозначно сказать, на какой частоте и по какому протоколу работает метка.

Внешне RFID-метки могут выглядеть по-разному
Часто производители RFID-брелков используют одинаковые пластиковые корпуса для меток разных частотных диапазонов, поэтому бывает, что две метки, выглядящие абсолютно одинаково, работают в разных диапазонах. Это важно учитывать, когда пытаетесь определить на глаз, что за метка перед вами.
Существует множество RFID-протоколов, работающих на других частотах, вроде UHF 840-960 МГц. Они применяются для отслеживания грузов, оплаты проезда на платных дорогах, отслеживания диких животных при миграции и т.д. Эти метки могут иметь собственную батарею и работать на расстояниях от нескольких метров, до нескольких километров. При этом, они достаточно редкие, и в привычном обиходе почти не встречаются. В статье мы их рассматривать не будем.
Какой длины может быть ndef-сообщение?
Место на информацию в NDEF-записи ограниченно по размерам 2^32-1 байтами, однако можно делать цепочки записей внутри сообщения, чтобы переслать информацию большего размера. В теории нет ограничений на NDEF-сообщения, но на практике размер сообщения ограничивается возможностями устройств или меток, участвующих в обмене информацией.
Если в обмене участвуют только устройства, то длина сообщения будет ограничена вычислительной мощностью самого слабого из устройств, но стоит учесть, что устройства придётся долго держать рядом для пересылки всех данных. При взаимодействии смартфона и карты длина сообщения будет ограничена размером памяти карты.
В общем, обмен данными через NFC достаточно быстрый. Человек подносит мобильное устройство к метке, происходит краткий обмен информацией, и человек идёт дальше. Данная технология не была спроектирована для длительных обменов информацией, потому что устройства в буквальном смысле должны находится в паре сантиметров друг от друга.
Для того чтобы передать большой объем информации, устройства придётся держать друг рядом с другом длительное время, это может быть неудобным. Если нужно длительное взаимодействие между устройствами, то можно воспользоваться NFC для быстрого обмена данными о возможностях устройств и последующего включения одного из более подходящих способов передачи данных (Bluetooth, Wi-Fi и т.д.).
Отличия rfid 125 кгц и 13.56 мгц
Проще всего понять в каком диапазоне работает RFID-метка по виду антенны. У низкочастотных меток (125 кГц) антенна сделана из очень тонкой проволоки, буквально тоньше волоса, и огромного числа витков. Поэтому такая антенна выглядит как цельный кусок металла.
Если просветить карту фонариком, можно узнать на какой частоте она работает
Чтобы увидеть антенну внутри RFID-карты, можно просветить ее фонариком. Если у антенны всего несколько крупных витков — это скорее всего высокочастотная карта. Если антенна выглядит как цельный кусок металла без просветов — это низкочастотная карта.
Антенны у низкочастотных карт из очень тонкой проволоки, а у высокочастотных из более толстой
Низкочастотные метки обычно используются в системах, которые не требуют особенной безопасности: домофонные ключи, абонементы в спортзал и т.д. Из-за большей дальности действия их удобно применять в качестве пропусков на автомобильные парковки: водителю не нужно близко прислонять карту к считывателю, она срабатывает издалека.
При этом, низкочастотные метки очень примитивны, у них низкая скорость передачи данных, из-за этого в них нельзя реализовать сложный двусторонний обмен данными, вроде проверки баланса и криптографии. Низкочастотные метки передают только свой короткий ID без всяких средств аутентификации.
Высокочастотные метки используются для более сложного взаимодействия между картой и считывателем, когда нужна криптография, долгий двусторонний обмен, аутентификация и т.д., например для банковских карт, надежных пропусков.
Сравнение RFID-меток 125 кГц и 13,56 МГц
Пишем данные
Для записи данных будем использовать NFC TagWriter. Пользоваться приложением довольно просто. Запускаем, тапаем по пункту Create, write and store, выбираем New, далее выбираем тип записываемых данных. Наиболее полезные типы: контакт, простой текст, телефонный номер, данные для Bluetooth-соединения, URI и приложение. В списке есть даже закладка веб-браузера и email-сообщение, но для чего они нужны, не совсем понятно.

Далее заполняем необходимые поля (например, адрес веб-сайта в случае с URI), нажимаем Next и попадаем на экран опций (скриншот «NFC TagWriter: опции сообщения»). Здесь можно указать приложение, которое будет запущено после прочтения метки (Add launch application) и установить защиту на перезапись сторонним устройством (Apply Soft Protection).

Вновь нажимаем Next и подносим смартфон к тегу. Вуаля, наши данные в нем. Теперь их можно прочитать любым смартфоном с поддержкой NFC. Но что это в конечном итоге дает?
Поддержка в смартфонах
Первым телефоном с интегрированной поддержкой NFC был Nokia 6131, выпущенный еще в 2006 году. Тогда встроенный NFC-чип был всего лишь игрушкой для демонстрации возможностей созданной два года назад технологии. Смартфон был оснащен софтом для считывания NFC-меток, но ввиду их тогдашней дороговизны и почти нулевой популярности технологии ни на какое серьезное применение данная особенность смартфона не претендовала.
После некоторого затишья популяризацией NFC занялась компания Google, выпустившая в 2021 году смартфон Samsung Nexus S и приложение Google Wallet, которое позволяло расплачиваться виртуальными кредитками, используя NFC. На следующий год Google стала ведущим участником NFC Forum и представила Android 4.
Сегодня NFC оснащаются почти все выпускаемые смартфоны. Соответствующий модуль есть даже в сверхбюджетных чипах Mediatek, так что большая часть новых китайских смартфонов стоимостью 5000 рублей тоже им оснащены. В любом случае присутствие чипа NFC легко проверить по наличию пункта «Беспроводные сети -> NFC» в настройках.
Процесс имплантации

А вот и нет — на самом деле, ничего этого не понадобится! Это фотография инструментов из первой части статьи.
Так как метка приходит уже стерилизованной и в шприце, ее имплантация существенно более проста, без проблем выполняется самостоятельно без чьей-либо помощи. В общих чертах, процесс выглядит примерно так:
- Выбор места размещения метки. Как уже было сказано в первой части, чаще всего выбирают пространство между большим и указательным пальцами руки, так как это место обычно не испытывает давления при повседневной жизни. Если меток больше одной, как у меня, нежелательно располагать их совсем близко, лучше отступить 1-2 см друг от друга.
- Анестезия новокаином — вводим раствор новокаина 20 мг/мл подкожно в предполагаемое место разреза, попутно раздвигая ткани и упрощая дальнейшее размещение метки, ждем в течение 5-10 минут для проникновения в окружающие ткани. Осторожнее с новокаином — при наличии у вас аллергии иили кривых рук может вызвать множество самых неприятных последствий, вплоть до смертельного исхода! Не делайте этого самостоятельно, если вы не врач. Также не делайте этого в одиночестве и будьте готовы звонить в «скорую», если что.
В принципе, обезболивание можно пропустить, пережить укол толстой иглы в руку не так уж сложно. В таком случае желательно, чтобы введение метки все же выполняли не вы сами, а другой человек — чтобы другой рукой сделать кожную складку.
- Имплантация — дважды протираем кожу спиртом, прокалываем кожную складку или «пузырь» с новокаином, держа иглу почти горизонтально к коже, вводим иглу на 15-20 мм, затем, нажимая на поршень шприца, выдавливаем метку через иглу под кожу. Аккуратно извлекаем иглу.
Вот видео (не мое) о том, как это выглядит:
- Завершение — разрез в данном случае еще меньше, чем был в первый раз, поэтому достаточно просто заклеить его лейкопластырем. Если все было сделано правильно, через 3-5 дней пластырь можно будет снять, а на коже останется лишь небольшой шрам, который через несколько месяцев исчезнет совсем. Если в течение этих дней поднимется температура — опять же, идем к врачу, не откладывая.
Разблокировка смартфона
У Motorola есть довольно интересный аксессуар для смартфонов под названием Motorola Skip. Это клипса на одежду для быстрой разблокировки смартфона без необходимости введения PIN-кода или графического ключа. Аксессуар в некоторых случаях довольно полезный, но работает он только со смартфонами той же компании. К счастью, аналогичную штуковину можно собрать на коленке.
Не буду рассказывать, как сделать саму клипсу, — тут каждый волен проявить свою фантазию, NFC-тег можно и на руку наклеить, — а вместо этого скажу, как настроить разблокировку смартфона при ее касании. Есть несколько способов, но самый простой и эффективный — это Xposed-модуль NFC LockScreenOff Enabler.
Дело в том, что в целях безопасности Android запрещает использовать NFC до тех пор, пока экран не будет разблокирован (не просто включен, а именно разблокирован), что сводит на нет многие эффективные приемы его использования. NFC LockScreenOff Enabler решает эту проблему.

Смартфоны и ноутбуки
Дальше — как это применять? Мне больше всего была интересна возможность использования метки для быстрой разблокировки техники — датчики отпечатков пальцев в 2021-м году были не везде, не было их и в моих смартфоне и ноутбуке.
Тех программ, которые были в 2021 году, уже нет в активном состоянии, поэтому просто опишу в общих чертах.
NFC на Android — xNT — обычная и вполне полноценная метка, поэтому все программы, которые вы можете найти в маркете по запросу NFC — работают. Можно хранить в вашей метке какую-нибудь информацию (например, приватный ключ от чего-нибудь, хотя это может быть и не очень безопасно), можно автоматизировать действия при поднесении метки к телефону.
Разблокировка Android по NFC — в маркете по запросу «nfc unlock» или «nfc logic» программы, которые вполне выполняют эту функцию, и какое-то время я ее использовала на своем HTC.
Разблокировка Windows по NFC — тут две особенности. Во-первых, NFC-метки не считаются полноценными смарт-картами, и требуется сторонний «провайдер» для их работы. Во-вторых, Windows не позволяет использовать смарт-карту для локального входа, без домена.
Создание задачи
В пункте меню «Настроить задание» нажмите « » и в списке заданий активируйте необходимые задачи. Для профиля «На работе» выберите «Беспроводные и локальные сети — Wi-Fi Вкл/выкл», «Беспроводные и локальные сети — Вкл/выкл мобильные данные», а также «Звуки и громкость — Звуковой профиль».
Затем необходимо включить Wi-Fi, выключить мобильные данные, а в строке «Звуковой профиль» выбрать пункт «Вибрация» и нажать кнопку «Добавить в задание». После этого дайте имя данному заданию — например, «На работе» — и нажмите «Далее». В пункте меню «Настроить переключатель» вы можете настроить последовательность задач, которую приложение Trigger будет поочередно выполнять после подключения смартфона к NFC-метке.
Для завершения работы в профиле «На работе» снова выберите те же функции, только в этот раз выключите Wi-Fi, включите мобильные данные и деактивируйте «Звуковой профиль», либо задайте настройки по своему усмотрению. Нажмите «Добавить в задание» и задайте имя, например, «Домой». Теперь осталось нажать кнопку «Готово».
Структура ndef
NDEF содержит информацию о байтовом представлении сообщений, которые могут содержать несколько записей. У каждой записи есть заголовок, в котором находятся метаданные (тип, длина и т.д.), и информацию для отправки. Если вернуться к аналогии с параграфом, то параграф формируется из предложений, относящихся к одной теме, так и в NDEF-сообщениях — хорошо, когда все записи относятся к одной тематике.
NDEF-сообщения в основном короткие, каждый обмен состоит из одного сообщения, каждая метка также содержит одно сообщение. Так как обмен NFC данными происходит при касании одного устройства другим или меткой, то будет неудобно передавать в одном сообщении текст целой книги, поэтому длина NDEF-сообщения сопоставима с длиной абзаца, но не целой книги.
NDEF-запись содержит информацию для пересылки и метаданные, как эту информацию интерпретировать. Каждая запись может быть разного типа, о чем объявляется в заголовке этой записи. Также в заголовке описывается какое место занимает запись в сообщении, после заголовка следует информация.
На рисунке ниже представлена полная информация о расположении бит и байт информации в NDEF-записи. Информация для пересылки занимает большую часть записи. Тип информации уточняет, как её интерпретировать, идентификатор информации опционален и используется для пересылки большого количества записей или перекрёстного обмена данными.
Сценарии применения nfc-меток
Беспроводная и бесконтактная связь изначальна применялась для эмуляции карт, используемых на производстве в качестве пропуска, и способных разграничивать права доступа конкретных работников и специалистов. Чуть позже появилась возможность поддержка мобильных покупок и платежей, а сейчас технологией управляют NFC-метки, специальные чипы, программируемые вручную и способные передать важную информацию или запустить сгенерированный алгоритм действий. Сторонние примеры использования:
- Передача доступа к интернету. Если на компьютере или ноутбуке часто заканчивается трафик, то пользоваться NFC наклейкой полезно для быстрой организации режима «модема» на смартфоне или планшете. Уже через секунду с ПК появится шанс подключиться к подготовленной на основе мобильного трафика Wi-Fi сети.
- Активация специальных режимов работы. Способы применения NFC-меток в повседневной жизни за пределами стандартной оплаты, во многом зависит от фантазии. Прикрепленная наклейка на спинке кровати может стать сигналом для активации ночного режима, бесшумного или же – расслабляющего (фоновая музыка, любимая книга). А еще схожим образом может включаться будильник и полностью отключаться push-уведомления.
- Таймеры, секундомеры и часы. Спортивные тренировки, кулинарные эксперименты, ежедневные гигиенические процедуры – следить за временем в некоторых ситуациях особенно важно. Программирование NFC-меток на кухне, в ванной комнате или в импровизированном домашнем спортивном зале поможет автоматизировать процессы наблюдения за потраченными часами и минутами.
- Запуск медиаплееров. Беспроводные колонки, музыкальные плееры, Bluetooth-наушники – заранее расставленные метки помогают быстрее разбираться с сопряжением мобильной техники и выбранной акустики, а заодно – еще и включать подходящую радиостанцию или альбом для воспроизведения.
- Визитки с полезной информацией. Поделиться контактом через NFC Tag проще, чем через тот же QR-код. Номера телефонов, имена и прочая статистика сразу заносится в адресную книгу и «распаковывается» для последующего использования.
Типы nfc-меток
Существует четыре типа меток, описанных NFC-форумом, все они базируются на RFID-протоколах. Это делает NFC метки частично совместимыми со многими уже существующими RFID системами (например, Mifare и FeliCa). Хотя эти более старые системы не поддерживают NDEF, они, однако, могут опознавать NFC метки, которые совместимы с ними.
Например, считыватель RFID, который предназначен для работы с метками Mifare Ultralight, может считать идентификационный номер метки NFC 2 типа, хоть и не может прочитать закодированную NDEF информацию. Есть также пятый тип, который совместим с технологией, но при этом не является частью NFC-спецификации.
Типы 1, 2 и 4 основаны на ГОСТ Р ИСО/МЭК 14443A (состоит из четырёх частей: 1, 2, 3, 4), тип 3 — на ГОСТ Р ИСО/МЭК 18092. Более подробно про каждый из типов можно прочитать под спойлером.
- Основан на ГОСТ Р ИСО/МЭК 14443A;
- Может быть как только для чтения, так и для чтения/записи;
- Содержит от 96 байт до 2 кбайт памяти;
- Нет защиты данных от коллизий (прим. — коллизии могут возникнуть; когда два активных источника передают данные одновременно);
- Примеры: Innovision Topaz, Broadcom BCM20203.
Тип 2:
- Аналогично типу 1 основан на NXP/PhilipsMifareUltralight метках (ГОСТ Р ИСО/МЭК 14443A);
- Может быть как только для чтения, так и для чтения/записи;
- Содержит от 96 байт до 2 кбайт памяти;
- Скорость взаимодействия 106 кбит/с;
- Поддержка анти-коллизий;
- Пример: NXP Mifare Ultralight.
Тип 3:
- Основан на метках SonyFeliCa (ГОСТ Р ИСО/МЭК 18092 и JIS-X-6319-4) без поддержки шифрования и аутентификации, которая предоставлена спецификацией FeliCa;
- Может быть либо только для чтения, либо для чтения/записи;
- Скорость взаимодействия 212 или 424 кбит/с;
- Поддержка анти-коллизий;
- Пример: Sony FeliCa.
Тип 4:
- Аналогично типу 1, тип 4 основан на ГОСТ Р ИСО/МЭК 14443A;
- Может быть либо только для чтения, либо для чтения/записи;
- 2, 4 или 8 кбайт памяти;
- Скорость взаимодействия 106, 212 или 424 кбит/с;
- Поддержка анти-коллизий;
- Пример: NXP DESFire, SmartMX-JCOP.
Пятый тип является собственностью NXPSemiconductors и, вероятно, самым распространённым на сегодняшний день MifareClassictag (ГОСТ Р ИСО/МЭК 14443A):
- Память: 192, 768 или 3584 байта;
- Скорость взаимодействия 106 кбит/с;
- Поддержка анти-коллизий;
- Пример: NXP Mifare Classic 1K, Mifare Classic 4K, Mifare Classic Mini.
Читаем ndef-сообщение
Когда телефон на Android считывает NFC-метку, он сначала её обрабатывает и распознает, а затем передаёт данные о ней в соответствующее приложение для последующего создания intent. Если с NFC может работать больше одного приложения, то появится меню выбора приложения. Система распознавания определяется тремя intent, которые перечислены в порядке важности от самой высокой до низкой:
ACTION_NDEF_DISCOVERED: Этот intent используется для запуска аctivity, если в метке содержится NDEF-сообщение. Он имеет самый высокий приоритет, и система будет запускать его в первую очередь.ACTION_TECH_DISCOVERED: Если никаких activity для intentACTION_NDEF_DISCOVEREDне зарегистрировано, то система распознавания попробует запустить приложение с этим intent. Также этот intent будет сразу запущен, если найденное NDEF-сообщение не подходит под MIME-тип или URI, или метка совсем не содержит сообщения.ACTION_TAG_DISCOVERED: Этот intent будет запущен, если два предыдущих intent не сработали.
В общем случае система распознавания работает, как представлено на рисунке ниже.
Когда это возможно, запускается intent ACTION_NDEF_DISCOVERED, потому что он наиболее специфичный из трёх. Более того, с его помощью можно будет запустить ваше приложение.
Если activity запускается из-за NFC intent, то можно получить информацию с отсканированной NFC-метки из этого intent. Intent может содержать следующие дополнительные поля (зависит от типа отсканированной метки):
EXTRA_TAG(обязательное): объект Tag, описывающий отсканированную метку.EXTRA_NDEF_MESSAGES(опциональное): Массив NDEF-сообщений, просчитанный с метки. Это дополнительное поле присуще только intentACTION_NDEF_DISCOVERED.EXTRA_ID(опциональное): Низкоуровневый идентификатор метки.
Ниже представлен пример, проверяющий intent ACTION_NDEF_DISCOVERED и получающий NDEF-сообщения из дополнительного поля.
Kotlin
override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) ... if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) { intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)?.also { rawMessages -> val messages: List = rawMessages.map { it as NdefMessage } // Обработка массива сообщений. ... } }
}Java
@Override
protected void onNewIntent(Intent intent) { super.onNewIntent(intent); ... if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMessages != null) { NdefMessage[] messages = new NdefMessage[rawMessages.length]; for (int i = 0; i < rawMessages.length; i ) { messages[i] = (NdefMessage) rawMessages[i]; } // Обработка массива сообщений. ... } }
}Также объект Tag можно получить из intent, который будет содержать полезную информацию и позволит перечислить технологии метки:
Kotlin
val tag: Tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
Java
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);





