Нахлобучиваем домофонные ключи iButton с помощью Flipper Zero
Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14]
iButton — это общее название для формата электронного ключа в форм-факторе металлической “таблетки”. Еще его называют Dallas Touch Memory. Часто его ошибочно называют “магнитным” ключом, но это неправильно, ничего магнитного в нем нет. Внутри iButton полноценный микрочип, работающий по цифровому протоколу.
В статье разберем формат ключей iButton от физического устройства до протоколов, а также трюки, которые можно с ним делать при помощи Flipper Zero.
Что такое iButton
Название iButton — это продукт фирмы Dallas Semiconductor, в 1991 году выпустившей на рынок ключ под торговой маркой Touch Memory, потом замененной на iButton.
Схематическое устройство ключа iButton: в центре корпуса контакт плюс, потом пластиковая изоляция, и внешняя часть корпуса это минус
Обычно под словом iButton принято понимать именно физический формфактор ключа и считывателя — круглая таблетка с двумя контактами. Существуют разные вариации оправ самой таблетки. Кроме привычного пластикового держателя с отверстием бывают варианты в виде колец, кулонов и т.д.
Внутреннее устройство iButton: внутри металлической оболочки находится микрочип
Считыватель
При поднесении ключа к считывателю, контакты соприкасаются, и на ключ подается питание. Далее осуществляется передача ID ключа. Иногда ключ не считывается сразу, потому что внешние контуры ключа и считывателя не соприкоснулись. В этом случае нужно упереть ключ в одну из стенок считывателя.
Касание контактов iButton ключа с домофонным считывателем
В формфакторе «таблетки» iButton бывают не только простые ключи с ID, но и климатические датчики, устройства для хранения криптографических ключей со своей батарейкой, часами и прочими наворотами. Эти устройства выглядят так же как ключи, но ими не являются.
Как устроен iButton во Flipper Zero
Разработка контактной площадки iButton во Flipper Zero — это огромная боль. Дело в том, что не существует готовых контактных площадок для одновременного чтения и эмуляции. Если бы мы просто взяли существующие модули, из флиппера бы торчала огромная металлическая кнопка, и рядом такая же огромная площадка для считывания. Это бы многократно увеличило размер устройства.
Нам пришлось изобретать собственную конструкцию контактной площадки с нуля, которую можно было бы реализовать на печатной плате так, чтобы итоговый размер устройства не увеличился. Было решено использовать 3 подпружиненных пого-пина. В итоге было протестировано около 20 разных конструкций.

Прототипы конструкций контактной площадки iButton во Flipper Zero, которые мы печатали на 3D-принтере в процессе разработки
Самая большая сложность конструкции контактной площадки в эмуляции, когда флиппер сам выступает ключом и его нужно прикладывать к домофону. Каждый производитель изобретает собственную конструкцию считывателя, из-за этого постоянно находятся домофоны в которых конструкция не работает: пины просто не дотягиваются либо до центрального контакта Data+, либо до бокового контакта GND.
Левая часть контактной площадки используется для считывания и записи ключей, правая для эмуляции. Центральный пин GND общий для обоих режимов.
Финальная конструкция получилась компромиссной: 100% ключей считывается успешно, примерно 80% считывателей успешно работают с эмуляцией. В оставшихся 20% считывателей приходится корячиться, чтобы контакт достал до нужных стенок. Для этих редких случаев можно использовать внешние контакты GPIO, на которые выведены контакты ibutton: подключиться макетными проводами и ткнуть их в считыватель.
Режим считывателя
В режиме считывателя флиппер ожидает поднесения ключа, при этом готов прожевать сразу три типа ключей: Dallas, Cyfral, Metakom. Флиппер сам определит тип ключа при чтении. Название протокола ключа отобразится на экране над ID номером.
Чтение ключа ibutton формата Dallas. Прочитанный ключ сохраняется на SD-карту.
Для считывания ключа необходимо зайти в меню iButton —> Read и приложить читаемый ключ к контактной площадке. Считанный ключ можно сразу эмулировать, записать на болванку, либо сохранить на SD-карту. Хоть контактная площадка находится на задней стороне от экрана, можно быстро наловчиться читать ключи не разворачивая флиппер, просто на ощупь.
В режиме чтения iButton используются два правых контакта Flipper Zero
Режим эмуляции iButton
В режиме эмуляции ключа, Флиппер сам выступает ключом и программно эмулирует iButton из памяти. ID ключа для эмуляции во Flipper Zero можно добавить двумя способами:
В режиме эмуляции Флиппер передает конкретный ID и эмулирует только один, заранее заданный, протокол ключа, так что его можно подносить только к конкретному домофону, который знает этот ключ. Перебирать сразу несколько ключей в этом режиме нельзя, так как нельзя однозначно убедиться, прочитал ли домофон наш ключ, и нельзя знать задержку в домофоне, между ошибкой чтения. Поэтому для дома, офиса, дачи, подвала нужно будет каждый раз выбирать конкретный ключ из меню.
В режиме эмуляции ключа iButton Флиппер нужно подносить к домофону как ключ. При этом нужно убедиться, что оба контакта коснулись контактной площадки считывателя.
iButton через внешний GPIO
Контакт iButton на нижней крышке также выведен на гребенку GPIO. Это можно использовать для подключения к нестандартным считывателям, ключам, любым устройствам работающим по протоколу 1-Wire вроде датчиков. Мы используем эти контакты для анализа сигналов через осциллограф. При этом, этот контакт не совсем честный GPIO, потому что имеет подтяжку к 5V.

Контакты iButton соединены с гребенкой GPIO. Порт iButton работает в режиме open-drain и подтянут к напряжению 5 В через резистор 1 кОм.
Протокол 1-Wire

В протоколе 1-Wire всегда есть главное устройство Master и ведомые Slave
Ключи Dallas обмениваются данными по протоколу 1-wire. Всего один контакт на передачу данных(!!) в обе стороны, от мастера к слейву и наоборот. Протокол 1-wire работает по модели Master-Slave. В этой топологии устройство Master всегда инициирует общение, а Slave следует его указаниям.
При контакте ключа (Slave) с домофоном (Master) чип внутри ключа включается, получив питание от домофона и происходит инициализация ключа, после чего домофон запрашивает ID ключа. Далее мы разберем подробно этот процесс.
Флиппер умеет работать в режимах Master и Slave. В режиме чтения ключа Флиппер выступает в роли считывателя, то есть работает как Master. А в режиме эмуляции ключа, флиппер прикидывается ключом, то есть работает в режиме Slave.

При чтении ключа Флиппер выступает мастером, а при эмуляции с домофоном работает как slave
Формат данных в ключе Dallas
Домофон считывает из iButton 8 байт (64 бита) информации, чтобы решить, открывать дверь или нет.
Структура данных этих 8 байт следующая:
Код семейства у ключей Dallas всегда 0x01. Если у вас этот код отличается, то скорее всего, это не ключ от домофона.
Серийный номер в некоторых случаях выгравирован на ключе, но может:
На картинке выше показан неочевидный пример гравировки ID на оригинальном ключе iButton. В нем читать байты нужно справа налево, контрольная сумма написана слева, а family code справа.
Ошибки чтения
При некорректном чтении ключа Flipper Zero сообщает об ошибках. Возможные ошибки:
Ввод ID вручную
Если ID ключа известен, его можно ввести во Флиппер вручную. Это удобно когда самого физического ключа нет, например можно передать нужные байты просто в чате или скинув другу фото. На видео показан пример создания нового ключа Cyfral из 2 байт. Новый сгенерированный ключ сохраняется на SD-карту.
Создание нового ключа с помощью ручного ввода айдишника
При создании ключа нужно выбрать его тип: Dallas, Cyfral или Metakom. От этого будет зависеть длина ID и протокол, используемый при эмуляции. После ввода ID Флиппер предложит ввести имя нового ключа, либо использовать сгенерированное.
Запись ключей 1-Wire Dallas
Существуют ключи Dallas, которые можно записать и которые нельзя. Популярные перезаписываемые iButton болванки: RW1990, TM2004, TM01C. Процесс записи имеет свои нюансы, разберем их.
Запись болванки может требовать повышенного напряжения — например, для записи менее популярной RW2000 требуется напряжение 8 В (правда это Cyfral, но смысл понятен).
Некоторые болванки требуют финализиации — после финализации ключ больше не может быть перезаписан. Этим пользуются некоторые домофоны, пробуя перезаписать ключ перед считыванием, чтобы избежать поддельных ключей. Обычно для финализации используют импульс напряжения и специальную команду, которая может отличаться для разных ключей.
Существуют болванки, которые могут подходить ко всем типам ключей: Dallas/Cyfral/Metakom. Флиппер умеет записывать основные популярные болванки.
Запись ключа Dallas на болванку RW1990 с помощью Flipper Zero
Чтобы записать ключ на болванку, нужно выбрать желаемый ключ из меню iButton —> Saved —> Имя_ключа и выбрать пункт Write. Далее прислонить перезаписываемый ключ к контактной площадке. После записи на болванку, флиппер проверяет корректность записи и показывает сообщение об успешной записи ID.
Русские народные ключи Cyfral, Metakom
Протоколы Metakom и Cyfral — отечественные разработки, распространенные только в СНГ. В отличие от ключей Dallas, они работают не по напряжению, а по току. Это менее распространенные и более дорогие ключи. Они очень чувствительны к параметрам ключа (частота, сила тока, амплитуда сигнала и пр.), из-за чего изготовление дубликатов бывает капризным процессом.
Cyfral и Metakom не принимают никакие команды. При подаче питания на ключ, он сразу начинает бесконечно посылать ID за счет изменения сопротивления. Таким образом, логические уровни определяются сопротивлением ключа. По документации ключей условно принимается, что информационные слова кода выдаются начиная с младшего бита.
Cyfral
Логические уровни в Cyfral, так же как и в Dallas имеют временные ограничения: если сопротивление остается низким около 50 мкс — это логический “0”, если 100 мкс — это логическая “1”.
Формат передаваемых данных специфичен.
Cyfral циклично отправляет 9 нибблов (1 ниббл = 4 бита): 1 стартовый и 8 ID. Ниббл может иметь всего 4 значения для ID и одно значение для стартового слова. Все остальные записи — некошерные.
В итоге ID записывается в 2 байта (Всего 8 нибблов ID. 4 ниббла = 16 состояний = 1 байт информации).
Бывает, что домофоны Cyfral занимаются проверкой ключа, подавая некорректные данные.
У Cyfral нет никаких контрольных сумм. Хочешь убедиться в целостности ID — прочитай ключ еще раз, а хочешь пять. Так как сигнал аналоговый, то чтение сигнала требует наличия АЦП или компаратора. Проще всего использовать компаратор, выход которого является низким или высоким уровнем напряжения.
С эмулированием ключа на практике проблем не возникает. Замыкания на землю (отсутствия сопротивления) вполне достаточно, чтобы ключ выдал логический «0».
Metakom
Ключ Metakom посылает 4 байта, где каждый байт заканчивается битом четности.
Metakom имеет 3 примитива передачи:
Структура посылки выглядит так:
Смотрим на 1-Wire через осциллограф
Захват сигнала осциллографом в момент чтения ключа Dallas
Линия передачи устроена по принципу «монтажного И» и может иметь одно из двух состояний: логический “0” и логическая “1”.
Устройства (ключи и домофон) имеют внутренние транзисторы, которые в нужное время подтягивают линию к нулю. Вся линия передачи переходит в состояние логического “0”, если любое из устройств перевело ее в нуль, т.е. если домофон перетянул линию в нуль — ключ об этом узнает, и наоборот.
С помощью перетяжек напряжения и удержания уровней 1-wire имеет 4 примитива для работы на шине:
Чтение ключа на Flipper Zero устроено так: командой поиска проверяется наличие ключа, а затем происходит чтение ID. Это сделано, чтобы избежать случайных совпадений с другими ключами Cyfral/Metakom, тайминги которых могут случайно совпасть с требуемыми.
На осциллограмме виден длинный сигнал из 2 команд, где каждая состоит из:
Разберем более детально каждый из пунктов.

Reset sequence — инициализация команды. Состоит из Импульса Сброса и Импульса Присутствия. Импульс Сброса — уровень опускает Master. Импульс Присутствия — уровень опускает Slave.
Инициализация (reset sequence) состоит из двух импульсов:
Некоторые домофоны не подают импульс сброса, так как отсутствие контакта между ключом и домофоном и есть сигнал сброса.

Команда чтения ID с ответом. Тайм-слот бита информации состоит из 2 участков: синхронизации и значения бита. В КОМАНДАХ за уровни напряжения на обоих участках отвечает Master. В ОТВЕТЕ на команду чтения за синхронизацию отвечает Master, за значение бита отвечает Slave.
После инициализации команды происходит обмен информацией:
Важно, что все сигналы имеют конкретные временные ограничения, которые обязательно должны быть соблюдены! Бывает, что производители домофонов упарываются, и соблюдают какие-то свои временные задержки.
Еще у iButton есть режим Overdrive, в котором временные задержки сокращены, из-за чего передача информации происходит быстрее. Есть вероятность, что в дикой природе существуют домофоны, работающие в этом режиме… Но на практике они не встречались.
Стандартные команды 1-wire ключей Dallas
Для iButton характерны команды размером 1 байт (8 бит).
Зачастую домофон использует команды поиска и чтения ID (Search ROM и Read ROM).
Некоторые производители домофонов — люди оригинальные, поэтому придумывают разные последовательности команд, чтобы проверить, а действительно ли к домофону прикладывают ключ, а не эмулятор. Поэтому ознакомимся с существующими командами.
Стандартные команды iButton для Regular режима следующие:
Бонус про домофонные ключи
Почему старые домофоны это плохо?
Некоторые старинные домофоны с ключами Dallas имеют в памяти базу ID ключей, заполненную не полностью. Незаполненные поля имеют некоторое значение, иногда соответствующее всем нулям (0x00) или всем единицам (0xFF). Для проверки домофона на дремучесть создаются два ключа: один со всеми нулями, другой со всеми единицами.
Эти ключи содержат неправильный код семейства (не 0x01) и неправильный CRC (вообще не контрольная сумма). — Да, бывают и такие исключения.
Как почтальоны разносят по подъездам рекламу?
Никак, почтальоны разносят письма 🙂 Но очевидно, что в почтовом отделении нет огромной связки с ключами для каждого подъезда. Часто используют универсальные ключи, они же “вездеходы”, подходящие на группу домофонов, например для всего района. Этот ключ может быть один на город, один на группу домов, может быть дефолтным для какой-то модели, а может и вовсе отсутствовать.
Что такое мастер ключ?
Обычно это ключ, который сам не открывает дверь, а позволяет добавлять в память новые ключи. Он записан в отдельную область памяти домофона. Такой ключ может одновременно для одних домофонов быть мастер-ключом, а для других обычным. Это всего лишь циферки, которые записаны в одну или другую область памяти домофона.
Играясь заблокировали домофон?
Такой вариант возможен, когда в домофоне есть “блокирующий ключ”. Он блокирует домофон для всех остальных ключей, пока не снимут блокировку с помощью мастер-ключа.
Какие болванки нам известны
В ходе работы с iButton мы зафиксировали некоторые известные нам “болванки” ключей. Вот они, на здоровье!
Touch Memory (1-Wire, iButton)
В первую очередь, понятие iButton используется для обозначения домофонных ключей, выполненных в форме брелка с металлической таблеткой. Однако распространенность систем, работающих по 1-Wire, сделала Touch Memory одним из основных интерфейсов связи считывателя и контроллера СКУД.
Электронный ключ Touch Memory
Принцип работы
Популярные ключи Dallas Touch Memory, они же таблетки iButton, функционируют следующим образом.
При этом таблетка Touch Memory выступает в качестве пассивного идентификатора, поскольку и питание, и опрос осуществляются через контроллер СКУД.
Конструктивные особенности таблеток iButton
Достоинства электронных ключей Dallas Touch Memory
Сфера применения iButton
В силу невысокой стоимости, надежности, простоты считывающих устройств и открытому протоколу этот тип iButton (DS1990) получил массовое внедрение в качестве электронного ключа в системах охранной сигнализации, разграничения доступа к информации и физическим объектам, электронным проходным, электронным замкам и в системах безопасности для банков и офисов.
Также применяется для маркировки объектов и маршрутов в системах контроля патрульно-постовой службы, контроля передвижения транспорта, системах инвентарного и складского учёта и в качестве кредитных карт в локальных платежных системах. Но наиболее частым применением идентификаторов Touch Memory остаются домофонные системы.
Недостатки использования электронных идентификаторов
Самый главный из них – это недостаточная вандалозащищенность самого считывателя: воздействие элекрошокером, пьезозажигалкой, да просто скачок напряжения могут вывести прибор из строя.
Особенно печальные последствия могут быть от воздействия электрошокера у проводной клавиатуры: электрический разряд может уничтожить ПКП, нарушив работу всей системы. Да и вообще, считыватель можно просто-напросто замазать краской или залепить жвачкой.
Интерфейс Touch Memory (1-Wire, iButton)
Интерфейс для связи между считывателем и контроллером СКУД Touch Memory – это разработанная корпорацией Dallas Semiconductor (с 2001 года — Maxim Integrated) двунаправленная шина 1-Wire, где используются всего два провода для питания и передачи данных.
Второй по популярности интерфейс для систем контроля доступа после интерфейса Wiegand.
Принцип работы интерфейса Touch Memory в СКУД
В случае использования интерфейса iButton для связи между контроллером и считывателем, последний эмулирует поведение ключа и контактора. Таким образом осуществляется возможность использовать простую схему передачи данных и, одновременно, идентификатор лучше защищенный от считывания, чем ключ Touch Memory.

Преимущества и недостатки использования интерфейса iButton
Говоря о преимуществах интерфейса Touch Memory отмечают, в первую очередь, минимальное количество жил для передачи сигнала.
В качестве преимущества для решения определенных групп задач можно назвать возможность контроля удержания карты перед считывателем.
Некоторые производители реализуют двустороннюю связь считывателя и контроллера СКУД на базе протокола iButton.
Недостатками интерфейса 1-Wire являются:
Материал спецпроекта «Без ключа»
Спецпроект «Без ключа» представляет собой аккумулятор информации о СКУД, конвергентном доступе и персонализации карт
Электронные идентификаторы iButton
Идентификация для персональных компьютеров и СКУД
iButton — это семейство многофункциональных микроэлектронных устройств, разработанных фирмой Dallas Semiconductor (USA) в настоящее время выпускаемых фирмой Maxim
iButton — это семейство микроэлектронных устройств, разработанных фирмой Dallas Semiconductor, USA (в настоящее время выпускаемых фирмой Maxim).
Каждое устройство iButton заключено в стальной герметичный цилиндрический корпус и имеет уникальный номер (ID), записываемый в процессе изготовления.
Все устройства iButton помещаются в стальной цилиндрический корпус MicroCan, выполнены по жестким стандартам и выдерживают серьезные механические и температурные нагрузки.
Обмен данными с iButton производится через интерфейс 1-Wire. Информация в этом интерфейсе передается по единственному проводнику. Питание iButton получают из этого же проводника, заряжая внутренний конденсатор в моменты, когда на шине нет обмена данными.
Скорость обмена достаточна для обеспечения передачи данных в момент касания контактного устройства.
Для подключения iButton к компьютеру компанией «Аладдин Р.Д.» выпускаются считыватели (адаптеры), преобразующие сигналы стандартных портов компьютера (RS232, USB) в сигналы 1-Wire.
Брелки-держатели позволяют надежно закрепить «таблетку» iButton.
| Тип | Наименование | Объем памяти | Особенности |
|---|---|---|---|
| DS-1990 | Электронный идентификатор Touch Serial Number | 0 | |
| DS-1991 | Электронный ключ с защищенной памятью Touch MultiKey | 4 страницы по 48 байт | Первые три страницы имеют защиту от доступа Снята с производства, рекомендуем заменять на DS-1977 |
| DS-1992 | Электронный ключ с памятью 1К-бит Touch Memory 1K-bit | 4 страницы по 32 байта | |
| DS-1993 | Электронный ключ с памятью 1К-бит Touch Memory 4K-bit | 16 страниц по 32 байта | |
| DS-1994 | Электронный ключ с памятью 1К-бит Touch Memory 4K-bit | 16 страниц по 32 байта | Дополнительно часы/календарь реального времени |
| DS-1995 | Электронный ключ с памятью 1К-бит Touch Memory 16K-bit | 64 страницы по 32 байта | |
| DS-1996 | Электронный ключ с памятью 1К-бит Touch Memory 64K-bit | 256 страниц по 32 байта | |
| DS-1977 | Электронный ключ с защищенной памятью Touch MultiKey | 4 страницы по 48 байт | Первые три страницы имеют защиту от доступа Рекомедуется для замены устаревшей модели DS-1991 |
48-битный уникальный серийный номер, присваиваемый методом «прожигания» лазером при изготовлении чипа. Первый байт ROM-памяти содержит код семейства, восьмой байт – CRC первых семи байт.
Считыватели для iButton
Cчитыватели представляют собой контактные устройства, предназначенные для считывания / записи информации при прикосновении к ним электронного идентификатора («таблетки») iButton.
Считыватель имеет удобный пластмассовый корпус и снабжен клеящейся подложкой, что позволяет прикрепить его к поверхности стола или к корпусу монитора. Форма и устройство считывателя защищены патентом РФ на полезную модель (патент №32353 от 22 апреля 2003 г.).
Для удержания «таблетки» при длительной работе считыватели могут иметь специальный фиксатор.
Для подключения к компьютеру или к другому оборудованию считыватели могут иметь различные варианты адаптеров:
Возможные варианты исполнения считывателей:
Для крепления «таблетки» iButton и удобной работы рекомендуется приобрести брелок-держатель, позволяющий прикрепить его на связку ключей.
Модели считывателей для iButton
RDS-01
Контактное устройство без фиксатора, телефонный провод 70 см, разъем DB9 для последовательного порта RS-232 (9 pin).
RDS-01 USB
Контактное устройство без фиксатора для USB порта.
RDS-03
Контактное устройство без фиксатора, телефонный провод 70 см, разъем RJ-11.
RDS-04
Контактное устройство без фиксатора, телефонный провод 70 см, без разъема.
RDS-11
Контактное устройство с фиксатором, телефонный провод 70 см, разъем DB9 для последовательного порта RS-232.
RDS-11 USB
Контактное устройство с фиксатором для USB порта.
RDS-13
Контактное устройство с фиксатором, телефонный провод 70 см, разъем RJ-11.
RDS-14
Контактное устройство с фиксатором, телефонный провод 70 см, без разъема.
Брелки-держатели для iButton
Брелок служит для надежного удержания электронного идентификатора («таблетки») iButton и удобной работы с ней при использовании практически любых считывателей.
Брелок выполнен из прочной пружинящей неломающейся пластмассы, позволяет многократно менять «таблетку» iButton, крепящуюся в своем посадочном месте с помощью двух защелкивающихся направляющих-фиксаторов.
Брелок с «таблеткой» удобно носить на связке с ключами.
Форма и устройство брелка-держателя защищены патентом РФ на полезную модель.
Возможные варианты поставки:
Модели брелков-держателей для iButton
RDS-21
Брелок для крепления «таблетки» iButton
RDS-20
Брелок для крепления «таблетки» iButton (вариант для использования совместно с контактными устройствами RDS-11 – RDS-14)






