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 ключа на SD-карту и выбирать нужный ключ в любой момент
- Вручную ввести ID ключа — даже если в руках нет нужного ключа, но его ID известен, его можно ввести вручную. Так, например, можно сфотографировать ID ключа и отправить его другу с флиппером, без необходимости передавать физический ключ
Для запуска эмуляции ключа нужно зайти в меню iButton —> Saved, выбрать нужный ключ и запустить Emulate. На экране появится надпись с ID ключа, который эмулируется. После этого можно подносить Флиппер к считывателю. Важно помнить, что в этом режиме используются другие пины на контактной площадке Флиппера.
В режиме эмуляции Флиппер передает конкретный 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 байт следующая:
- 1 байт — код семейства (Family Code), для iButton он всегда равен 0x01
- 6 байт — серийный номер ключа
- 1 байт — контрольная сумма СRC
Код семейства у ключей Dallas всегда 0x01. Если у вас этот код отличается, то скорее всего, это не ключ от домофона.
Серийный номер в некоторых случаях выгравирован на ключе, но может:
- Не содержать все 8 байт
- Иметь последовательность символов задом-наперед
- Иметь начало в непонятном месте
На оригинальном ключе iButton выгравирован ID, но его формат записи немного отличается от представления во Флиппере: сперва идет family code, потом инвертированный серийный номер, потом контрольная сумма
На картинке выше показан неочевидный пример гравировки ID на оригинальном ключе iButton. В нем читать байты нужно справа налево, контрольная сумма написана слева, а family code справа.
Ошибки чтения
При некорректном чтении ключа Flipper Zero сообщает об ошибках. Возможные ошибки:
- Некорректная контрольная сумма — ошибка в CRC
- Неправильный код семейства — когда family code отличается от 0x01, Флиппер ругается что это не ключ iButton.
Возможные ошибки при чтении ключей Dallas: неправильный байт CRC — CRC ERROR; байт Family-code не равен 0x01 — THIS IS NOT A KEY.
Ввод 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 примитива передачи:
- Синхронизирующий бит
- Бит 0
- Бит 1
Структура посылки выглядит так:
- Синхронизирующий бит
- 4 байта информации, где каждый байт содержит:
- 1 бит четности
- 7 бит данных
На практике, эти домофоны в 99% случаев открываются с помощью универсального ключа, который легко гуглится.
Смотрим на 1-Wire через осциллограф
Захват сигнала осциллографом в момент чтения ключа Dallas
Линия передачи устроена по принципу «монтажного И» и может иметь одно из двух состояний: логический “0” и логическая “1”.
Устройства (ключи и домофон) имеют внутренние транзисторы, которые в нужное время подтягивают линию к нулю. Вся линия передачи переходит в состояние логического “0”, если любое из устройств перевело ее в нуль, т.е. если домофон перетянул линию в нуль — ключ об этом узнает, и наоборот.
С помощью перетяжек напряжения и удержания уровней 1-wire имеет 4 примитива для работы на шине:
- импульс сброса (RESET)
- импульс присутствия (PRESENCE)
- отправка бита 0
- отправка бита 1 и она же по совместительству чтение бита
Чтение ключа Dallas на Flipper. Состоит из команд Search ROM и Read ROM. Каждая команда имеет Reset sequence.
Чтение ключа на Flipper Zero устроено так: командой поиска проверяется наличие ключа, а затем происходит чтение ID. Это сделано, чтобы избежать случайных совпадений с другими ключами Cyfral/Metakom, тайминги которых могут случайно совпасть с требуемыми.
На осциллограмме виден длинный сигнал из 2 команд, где каждая состоит из:
- Инициализации команды:
- Импульс сброса
- Импульс присутствия
- Передачи команды для Slave
- Ответа Slave на принятую команду
Разберем более детально каждый из пунктов.
Reset sequence — инициализация команды. Состоит из Импульса Сброса и Импульса Присутствия. Импульс Сброса — уровень опускает Master. Импульс Присутствия — уровень опускает Slave.
Инициализация (reset sequence) состоит из двух импульсов:
- Импульс Сброса (Reset pulse)
- Импульса Присутствия (Presence pulse)
Для Импульса Сброса — линию к земле подтягивает Master (домофон).
Для Импульса Присутствия — линию к земле подтягивает Slave (ключ).
Некоторые домофоны не подают импульс сброса, так как отсутствие контакта между ключом и домофоном и есть сигнал сброса.
Команда чтения ID с ответом. Тайм-слот бита информации состоит из 2 участков: синхронизации и значения бита. В КОМАНДАХ за уровни напряжения на обоих участках отвечает Master. В ОТВЕТЕ на команду чтения за синхронизацию отвечает Master, за значение бита отвечает Slave.
После инициализации команды происходит обмен информацией:
- отправка команды для Slave
- ответ Slave на команду
Обмен информацией ведется тайм-слотами: один тайм-слот для обмена одним битом информации. Данные передаются бит за битом, начиная с младшего бита младшего байта.
Синхронизация Master и Slave происходит в одно действие: Master (домофон) подтягивает линию к низкому уровню. Далее через конкретное время, Master или Slave измеряет напряжение на линии и записывает бит информации (Master — при чтении ключа, Slave — при записи ключа). Правила выдержки временных интервалов для команд чтения и записи одинаковы. Каждый тайм-слот синхронизируется независимо, поэтому передача информации может приостанавливаться, не вызывая ошибок.
Важно, что все сигналы имеют конкретные временные ограничения, которые обязательно должны быть соблюдены! Бывает, что производители домофонов упарываются, и соблюдают какие-то свои временные задержки.
Еще у iButton есть режим Overdrive, в котором временные задержки сокращены, из-за чего передача информации происходит быстрее. Есть вероятность, что в дикой природе существуют домофоны, работающие в этом режиме… Но на практике они не встречались.
Стандартные команды 1-wire ключей Dallas
Для iButton характерны команды размером 1 байт (8 бит).
Зачастую домофон использует команды поиска и чтения ID (Search ROM и Read ROM).
Некоторые производители домофонов — люди оригинальные, поэтому придумывают разные последовательности команд, чтобы проверить, а действительно ли к домофону прикладывают ключ, а не эмулятор. Поэтому ознакомимся с существующими командами.
Стандартные команды iButton для Regular режима следующие:
Бонус про домофонные ключи
Почему старые домофоны это плохо?
Некоторые старинные домофоны с ключами Dallas имеют в памяти базу ID ключей, заполненную не полностью. Незаполненные поля имеют некоторое значение, иногда соответствующее всем нулям (0x00) или всем единицам (0xFF). Для проверки домофона на дремучесть создаются два ключа: один со всеми нулями, другой со всеми единицами.
Эти ключи содержат неправильный код семейства (не 0x01) и неправильный CRC (вообще не контрольная сумма)!!! — Да, бывают и такие исключения.
Как почтальоны разносят по подъездам рекламу?
Никак, почтальоны разносят письма :) Но очевидно, что в почтовом отделении нет огромной связки с ключами для каждого подъезда. Часто используют универсальные ключи, они же “вездеходы”, подходящие на группу домофонов, например для всего района. Этот ключ может быть один на город, один на группу домов, может быть дефолтным для какой-то модели, а может и вовсе отсутствовать.
Что такое мастер ключ?
Обычно это ключ, который сам не открывает дверь, а позволяет добавлять в память новые ключи. Он записан в отдельную область памяти домофона. Такой ключ может одновременно для одних домофонов быть мастер-ключом, а для других обычным. Это всего лишь циферки, которые записаны в одну или другую область памяти домофона.
Играясь заблокировали домофон?
Такой вариант возможен, когда в домофоне есть “блокирующий ключ”. Он блокирует домофон для всех остальных ключей, пока не снимут блокировку с помощью мастер-ключа.
Какие болванки нам известны
В ходе работы с iButton мы зафиксировали некоторые известные нам “болванки” ключей. Вот они, на здоровье!
Наши соцсети
Все обновления по проекту первым делом публикуются в Telegeram-канале @zhovner_hub
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Предзаказ Flipper Zero
Сейчас запущено производство первой партии Flipper Zero для бекеров заказавших устройство на Kickstarter. Вторая партия будет доступна для покупки осенью 2021. Вы можете зарезервировать устройство из второй партии заранее здесь shop.flipperzero.one Это важно для нас, чтобы более точно прогнозировать объемы производства.
Комментарии (128)
horon
09.06.2021 21:40А разве в флиппере нет брутфорса ключей?) Ну там по модели домофона или ещё как то.
ps. Понимаю что это малореально и долго, но всё равно спрошу.
koteeq
10.06.2021 00:09+4Эта функция была бы абсолютно неюзабельна, поэтому её нет, цитирую статью:
Перебирать сразу несколько ключей в этом режиме нельзя, так как нельзя однозначно убедиться, прочитал ли домофон наш ключ, и нельзя знать задержку в домофоне, между ошибкой чтения. Поэтому для дома, офиса, дачи, подвала нужно будет каждый раз выбирать конкретный ключ из меню.
opanas
10.06.2021 00:37+1Задержку можно было б сделать регулируемую пользователем.
zhovner
10.06.2021 02:22+3Тогда такой режим будет выглядеть как список с пролистыванием, где юзер руками нажимает next после каждого теста.
ohm
10.06.2021 05:53-1Приложил и держишь пока дверь не откроется. Слабо так?
zxosa
10.06.2021 09:24+1948 бит перебором с задержкой ввода в две секунды после каждого? я напомню, что серийник содержит 281474976710655 вариантов, даже при задержке ввода в секунду понадобиться около 8и миллионов лет
IronHead
10.06.2021 13:37У большинства домофонов с завода зашит мастер ключ, все 0xFF или все 0x00.
Умные установщики его удаляют, а большинство — забивают на это.zxosa
10.06.2021 17:33основные игроки избавились от этих кодов на уровне прошивки в 12-14х годах
freemanon
11.06.2021 09:00но сами домофоны остались
neco
12.06.2021 06:40я тоже думал о такой штуке, обычно ключи сериями берут и у них как правило много общих бит, перебором можно пробовать, контрольную сумму подсчитать главное, но на практике не выстрелило, действительно ключи сильно различаются… неадекватное время перебора получается…
быстрее у соседа реальный ключ скопировать выходит )
neco
12.06.2021 06:21давно уже такие штуки перпрошили, только если в деревнях каких…
и про 0xff в статье рассказано, но там с 0xff прикол в том что это игралось раньше на переполнении памяти, флеш-память по умолчанию забита 0xff на этом и играли, типа массив ключей перебирается, и если он не полный то гдето будет 0xff, это была ошибка в прошивке домофонов которые не проверяли контрольную сумму и код серии (кстати вот вам хак 0xffffffffffffffff как посылка по протоколу далласа контрольная сумма сходится ;)
а по поводу CRC там вроде один из вариантов CRC-16(или 8) считается вполне там стандартный алгоритм и даже полином приведён в документах далласа…
zxosa
11.06.2021 09:53+1Но на ключах то все 6 меняются,
4 случайных ключа
Но и ваша цифра это примерно год полного брутфорса.
ComodoHacker
12.06.2021 18:30Если ограничить варианты списком (дом, офис, дача, подвал), то гораздо меньше.
VerninovskiyD
17.06.2021 13:42Держишь, пока кто-то не откроет дверь чтобы выйти, я правильно понимаю?
Serega_Barsukov Автор
17.06.2021 13:46Нет, речь шла о брутфорсе и возможности его реализации. Имелось ввиду, что Флиппер поднесут к домофону и он через какое-то время подберет ключ сам. Такого функционала в поставляемом устройстве нет.
opanas
10.06.2021 07:43Врядли брутфорс сможет быть выполнен за приемлемое время, конечно. Но занудства ради:
1. Пользователь инициирует брутфорс с интервалом в 2 секунды.
2. По звукам и табло домофона видит, что интервал достаточный и на каждый новый неправильный код приходит отказ.
3. Пользователь изменяет интервал на 1.75 секунды и инициирует его заново.
4. Продолжает уменьшать интервал до тех пор, пока не поймет, что домофон не успевает считывать все генерируемые коды.
5. Успех :)neco
12.06.2021 06:44тут есть логика, но в современных домофонах как раз специально делают интервал примерно в 2 секунды…
Andrusha
10.06.2021 07:46+2Не знаю, есть ли в таких домофонах защита от брутфорса, но если нет, то алгоритм достаточно простой: при запуске после отправки первого кода ключа флиппер ждёт нажатия кнопки, а кнопку нажимаем когда домофон закончил показывать ошибку, дальше флиппер листает их сам с запомненным интервалом.
neco
12.06.2021 06:49Не знаю, есть ли в таких домофонах защита
есть. уже лет пять как делают паузу в 2 секунды между считыванием ключа.
но опятьже в дальних местах вполне вероятно остаются непропатченные модели домофонов )
LoadRunner
10.06.2021 10:34+10Так можно же не ради брутфорса сделать, а просто облегчить юзеру выбор нужного ключа из уже записанных. Юзер создаёт «плейлист», где сам выбирает порядок ключей, и этот «плейлист» уже отправляется последовательно на домофон.
Не знаю, конечно, насколько это было бы частым кейсом и было бы быстрее ручного выбора.eurol
11.06.2021 09:46Пожалуй, стоять с приложенной таблеткой, ожидая секунд 15, пока дверь откроют, не дело. :)
Тем более что флиппер — не таблетка, держать наверняка сложнее.LoadRunner
11.06.2021 11:12+2Ну если перебирать из двух ключей, причём первый — чаще всего используемый, то почему бы и да?
neco
12.06.2021 06:54из двух проще выбрать самому куда юзер входит при подходе, быстрее получается ) это как нужный ключ в кармане найти…
anonymous
00.00.0000 00:00DoctorMoriarty
10.06.2021 07:14+2Вы хотите использовать флиппер для преступного проникновения на чужую территорию и чтобы разработчики встроили в устройство функции для воров, киллеров и т.п.? Смело, смело. (@сарказм)
immortal555
10.06.2021 13:55+7Функция для воров и киллеров обычно встроена в жильцов подъезда. Дверь открывается по голосовому ключу "почта" почти в 100% случаев.
lagduck
10.06.2021 10:50+3Большинство домофонов уходят в блокировку на полминуты после ~5 неправильных вводов.
DarkByte
09.06.2021 21:42+2Этим пользуются некоторые домофоны, пробуя перезаписать ключ перед считыванием, чтобы избежать поддельных ключей.
Занятные технологии.После финализации ключ больше не может быть перезаписан.
А у беспроводных mifare такое имеется?KorDen32
09.06.2021 23:07А у беспроводных mifare такое имеется?
У каждого сектора Mifare есть свои ключи A/B и правила доступа к блоку. В зависимости от заданных правил, например, ключ A дает read-only доступ, а ключ B — read-write.
grishkaa
09.06.2021 23:36А у беспроводных mifare такое имеется?
У конкретно mifare память поделена на секторы по по-моему 64 байта, для каждого сектора два ключа — один для чтения, другой для записи. Чип в карточке достаточно умный, и не даёт вообще ничего делать с сектором, пока правильный ключ не передашь.
Но если речь про RFID-ключи для домофона и прочие СКУД, там обычно нечто под названием EM-Marin, и оно весьма тупое.
koteeq
10.06.2021 00:24+8В домофонах редко используются ISO14443A (13.56 MHz) метки вроде Mifare Classic 1k, а даже если используются, чаще всего авторизация происходит по UID, а не по содержимому секторов.
UID у оригинальных меток зашивается на заводе в нулевой сектор и изменить его нельзя. Для копирования таких меток есть Mifare Classic 1k с «китайским бэкдором», в которых UID изменить всё же можно.
Китайский бэкдор бывает двух видов:
А) Метка понимает особые китайские команды, позволяющие перезаписать нулевой сектор. Такую команду СКУД может попробовать вызвать, и по реакции определить, легальная ли перед ним метка. Опять же, домофоны так, кажется, не делают.
Б) Нулевой сектор с UID можно перезаписывать, как и все остальные. У таких болванок можно запаролить этот самый сектор штатными A/B ключами и домофон ничего не сможет определить.
Как я уже сказала выше, такие метки в домофонах встретить трудно. Чаще всего из бесконтактных там EM-Marine (125 kHz), по сути лишь простой UID из нескольких байт, который копируют на болванки T5577.
Т5577 — отличный эмулятор, который можно заставить эмулировать ключ почти любого стандарта на частоте 125 kHz, для этого у него есть особый набор команд. И правда существуют СКУДы, которые пытаются тыкать эти особые команды, чтобы проверить, не болванка ли перед ним. Эта проблема тоже легко решается: болванку нужно запаролить. Тогда Т5577 не будет выдавать себя, пока ему не пришлёшь правильный пароль, и будет вести себя как самый обычный ключ. Эта функция будет реализована во Флиппере.JerleShannara
10.06.2021 04:39Ну есть ещё одна домофонная контора, которая типа изобрела своё детище, приписав к Mifare свою фирму через дефис. В каких-то режимах их домофон занимается перезаписыванием чего-то на картах (по другому я не могу объяснить «работает только последняя копия, обкопируйтесь сколько влезет»), правда то, что стоит у нас к mifare вообще отношения не имеет(кроме слов в инструкции), т.к. работает на 125 КГц и умеет только палить болванки (да и то не все, метрополитеновский брелок Mifare+EmMarin оно не опознало как болванку).
Плюс сейчас для некоторых СКУДов, которые умеют в Mifare есть опция антикопирования, на каждый проход СКУД перезаписывает данные на карте, что тоже уменьшает уровень комфорта.NickProgramm
10.06.2021 18:26это делают домофоны фирмы «Факториал» (у них свой формат ключей, но частота таже), а также Eltis DP5000
parukhin
10.06.2021 13:55У нас в городе в конце прошлого года начали массово заменять (Безопасный город) установленные домофоны, на новые, с видеонаблюдением/IP/ и как раз Mifare Classic с авторизацией по UID (все остальные секторы пустые).
neco
12.06.2021 07:02вот это нормальная практика как раз, считывается UID и передается на бэкенд а там севак разбирается вошёл человек уже как быстро, а рядом ли он со вторым входом, и прочие алгоритмы которые как раз позволяют отловить компроментацию ключей… и не надо никакой шифрации…
но есть и минусы — нужна постоянная связь с бэком
DarkByte
10.06.2021 16:15Спасибо за ответ, стало понятнее. У нас как раз домофоны с Mifare Classic 1k, но полагаю, что авторизация там действительно только по UID, хотя к секторам дефолтные ключи на чтение не подходят.
NickProgramm
10.06.2021 18:23+2А вот тут вы не правы, на большинстве домофонов стоит считыватель CP-Z-2 (от IronLogic) и там как раз идет авторизация по всем секторам. Авторизации по секторам (криптозащиты) нет только на Beward, и Спутник
koteeq
10.06.2021 19:33+1Интересные новости! Спасибо за инфу. Ну во всяком случае crypto1 легко ломается, поэтому секторы достаточно легко прочитать и клонировать на болванку с бэкдором.
NickProgramm
11.06.2021 06:59+1Могу вам сказать как работают промышленные снифферы вроде SMKey. При создании криптоключа к 14 сектору в создании учавствует только UID, а не как в остальных случаях UID+Карта объекта. Спуфите криптоключ к 14 сектору, hard-nested'ом ломаете метку, получаете 0 сектор, Profit — Можно делать копию
neco
13.06.2021 14:49proxmark v3 ) но это достаточно дорогая игрушка, зато умеет…
NickProgramm
31.10.2021 15:58Да, пусть у меня китайский proxmark3 Easy но я просто перепрошил его на официальный загрузчик/прошивку и все работает, в частности Nested-аттаки на метки, а имея на руках спуфер для IronLogic то вообще метки как орешки щелкаются :D
anonymous
00.00.0000 00:00ade
10.06.2021 00:29+1Есть домофоны, которые пытаются сразу перезаписать беспроводной ключ, а потом уже прочитать.
koteeq
10.06.2021 00:43+1Это они пытаются определить T5577 скорее всего, да. В комментарии выше в последнем абзаце написала, как от этого защититься.
ade
10.06.2021 00:59+2Да, в основном на T5577 атака, но домофоны все умнее становятся, недавно пришлось брутить сектора в майфейровском ключе, чтобы товарищу сделать копию, не удивлюсь, если скоро будут китайский бэкдор пробовать заюзать.
koteeq
10.06.2021 13:59+1Китайский бэкдор тоже разный бывает!
Есть не только карты с особыми китайскими командами, но и карты, в которых тупо можно писать в нулевой сектор, как и в остальные.
Если его запаролить или финализировать, ридер никак не поймёт, что он особый.
Dr_Zlo13
10.06.2021 05:50Мне кажется вы имели в виду low frequency RFID ключи, по типу EM-Marin. Да, там тоже зоопарк болванок и у некоторых есть режим финализации либо защиты паролем.
DarkByte
10.06.2021 18:00-1Насколько я знаю, железо домофона установленного у меня поддерживает и EM-Marin и Mifare, но жильцам раздают именно Mifare Classic 1k ключи.
endlessnights
09.06.2021 21:55+18
Может быть тут нужно написать: Successfully written!Evengard
09.06.2021 22:50+12Мне кажется тут просто порядок слов надо поменять «Writing successful!». Ваш вариант слишком длинный, будет наверное не помещаться нормально.
netch80
13.06.2021 14:37"Write succeeded"?
(write как существительное — практическая норма в IT, даже если не совсем по английски)
"Writing succeeded"?
MarkWatney
09.06.2021 22:01Может написать приложение на телефон, чтобы по фото домофона определять тип ключа? И уменьшить таким образом множество для перебора? Насколько это реально?
python273
09.06.2021 22:12+1Проще уж тогда по геолокации определять нужный ключ
NetBUG
09.06.2021 22:21В Zero нет GPS и других беспроводных интерфейсов вроде.
python273
09.06.2021 22:23+2Есть Bluetooth и будут приложения
ade
10.06.2021 01:01+3Если сделать такую фичу, будет просто убийца iKey
NickProgramm
10.06.2021 18:29Неа, у iKey намного больше поддерживаемых форматов ключей (Все возможные, кроме магнитных)
onlinehead
11.06.2021 12:32Ну, насколько я понимаю, в целом концептуально никто не мешает сделать к нему GPS модуль. Интерфейсы то выведены, I2C и SPI есть.
vilgeforce
09.06.2021 22:36+5А может стоить добавить опцию «показать команды iButton от домофона»? На случай тех самых хитрецов с перезаписью и финализацией…
Dr_Zlo13
10.06.2021 05:59+1Ниже ответил про способы защиты домофона от болванки, они не ограничиваются просто командами.
invite_ciel
09.06.2021 23:51+2Тут ещё в бонусе для полноты картины очень не хватает кое-чего для Vizit:
0x01, 0xBE, 0x40, 0x11, 0x5A, 0x36, 0x00, 0xE1
Sly_tom_cat
10.06.2021 01:09+2А можете поподробнее про этого зверя… а то задолбался искать кто может ключ о этого визита скопировать.
На RW1990 копировать бесполезно (хоть код программатором и считывается, но домофон просто никак на него не реагирует). Методом перебора удалось скопировать на TM01C.
Но почему так — хотелось бы понять…KorDen32
10.06.2021 11:16Скопировать как раз могут многие программаторы, проблема в поиске подходящих болванок.
RW1990 умеют только iButton вроде бы.
Dr_Zlo13
10.06.2021 05:56+4Домофоны ну очень капризны, и способы определения копий\болванок\эмуляторов у всех свои. Кто-то меряет ток ключа, кто-то использует интервал reset не по спецификации шины, кто-то кидает импульс резет посреди чтения ключа, чтобы проверить реакцию болванки. Плюс к этому в домофонах куча защиты от шокеров и прочего что накладывает свою специфику на работу с шиной.
scorp_nv
10.06.2021 13:56Тоже хотел сказать, что почему-то в описании ничего про домофоны vizit ничего нет. У нас в городе их едва ли не 30%. К каким они возможно относятся и чем отличаются от остальных?
Serega_Barsukov Автор
10.06.2021 14:10+1Домофонов очень много, те же Eltis, Tantos, Cyfral, Metakom, AXIS и пр. У всех компаний есть разные модели, которые могут иметь свои нюансы. Например у Vizit могут быть домофоны и RFID и iButton. И при этом iButton тоже разный. В основном домофоны не очень хотят чтобы их открывали все подряд, поэтому эту информацию нужно найти или зареверсить и проверить — долго.
Если разобрать отдельно популярные домофоны, то это скорее отдельная статья. Возможно после разбора других возможностей Flipper мы ее сделаем:)zxosa
10.06.2021 16:46+2Вам тестеры не нужны? Имеем доступ к огромной номенклатуре домофонов различных годов выпуска, считывателей от iron logic до huawei. Единственная проблема, мы тупые, можем тыкать и считывать что-то по готовому скрипту.
vp7
10.06.2021 23:04+2Есть смысл добавить в флиппер функцию сниффера обмена данными с домофоном - подключать параллельно родному ключу и собирать логи обмена. Хорошо подойдёт для реверс-инженеринга средств защиты домофонов.
elfukado
10.06.2021 05:52Будет ли возможность монтировать iso с microsd на виртуальный дисковод по usb?
Dr_Zlo13
10.06.2021 05:57Точно нет, и не планировалось.
elfukado
10.06.2021 07:33А можно добавить дисковод в список желаемых функций? Просто позиционируется как брелок-мультитул, карты 64 гига хватит для нескольких образов. Тогда бы точно предзаказ сделал, можно будет вообще без флешки обходиться, носить только флиппер.
Dr_Zlo13
10.06.2021 13:27Не имеет смысла, скорость работы с картой у нашего устройства по определенным причинам очень мала, для конфигов, мелких файлов и того что можно загрузить в память девайса она вполне достаточна, а вот грузить гиговые образы со скорость 500 килобайт\сек — очень сомнительно.
esaulenka
10.06.2021 13:46+1У флиппера довольно примитивный для таких целей процессор c USB Full Speed (это 12 мегабит/сек максимум, по факту — раза в полтора-два меньше, недавно были статьи EasyLy на эту тему). Отдельного интерфейса для SD-карт там нет, работа наверняка идёт через SPI (эй, команда флиппера! где у вашего самого-опенсорсного-изделия-на свете схемы и исходники?). Мало того, что SPI медленный сам по себе (там скорость те же 10..15 мегабит/сек), так ещё современные карточки в этом режиме тормозят (вероятно, потому, что его никто не оптимизирует за ненадобностью).
Так что тут максимум эмулятор флопика можно сделать :-)koteeq
10.06.2021 13:58По поводу скоростей и SPI вы правы.
Исходники откроем ближе к началу массовых отправок девайсов.
Думаю, интереснее тыкать код, который можно где-то запустить :>esaulenka
10.06.2021 23:37+1Думаю, интереснее тыкать код, который можно где-то запустить :>
Нет, мне не очень интересно, я вашу штуку не заказывал. Чтобы что-то неизвестное исследовать, инструмент должен быть значительно более гибким, и предоставлять сильно больше данных. А тут… Прочитать можно. Записать. Ну скопирую я две таблетки, подкараулю владельца брелка от шлагбаума в соседнем дворе, и заброшу все эти весёлые анимации в дальний ящик…
Я вот никак не сподоблюсь проксмарк купить поиграться, чтоб было видно как все эти битики бегают. Это, на мой взгляд, куда интереснее надписи "writing successful" ;-)Ну или меня окончательно достанет нынешняя работа, и я вам резюме пришлю. Делать подобную штуку — прикольно, хоть на выходе и игрушка получается.
neco
13.06.2021 15:05ну они же обещали, что после удачного запуска этого флиппера сделают FlipperOne на линуксе куда кали предустановлено будет )…
Xobotun
10.06.2021 14:16Про исходники они говорили, что не хотят открывать, пока не вышлют бекерам всё и не начнут нормально продаваться — а то брат-китаец быстро сделает клоны в более паршивом корпусе, и те, кто ждал продаж флиппера, купят клон и будут недовольны.
UPD: буду обновлять комменты, ага.
Dr_Zlo13
10.06.2021 15:41Про SPI вы абсолютно правы, у нас емнип 30 мегабит, но скорость шины почти не влияет на максимальную скорость чтения карты, да, карты очень долго ищут нужный сектор в этом режиме.
13werwolf13
10.06.2021 07:23+2elfukado
10.06.2021 07:30Спасибо, конкретно про эту не слышал, попробую, но у меня нет проблем с созданием загрузочной флешки. Просто устройство позиционируется как брелок, всегда с собой, карты на 64 гига хватит на несколько образов, badusb есть, было бы здорово обходиться без лишней флешки.
ohm
10.06.2021 05:56+5Расскажи про универсальные ключи
NickProgramm
10.06.2021 18:35+2А че там рассказывать? Все эти ключики не работают на новых моделях. Ключи основаны на уязвимости с ячейкой памяти, или как случаем с визитом вшиты как спецключ для полиции и т.д
efcadu
10.06.2021 10:27Хочу сделать предзаказ — не могу оплатить ни с одной российской карты. Ни через Gpay, ни через Shop.app, никак. «The card was declined»
unwrecker
10.06.2021 13:52Там вверху страницы где 2 кнопки — это экспресс заказ, у меня тоже не заработал.
А ниже, где формочка, там нормальный — вот он работает.
MuscleMan
10.06.2021 10:28+4Может, представитель компании заодно и ответит, наконец, когда уже оплаченные девайсы рассылать начнут?
xakep2011
10.06.2021 12:06Ещё всё в процессе, активно допиливаются корпуса, исправляются дефекты. Вот-вот выпустят первую партию.
Подписывайтесь на канал Павла в Телеграм t.me/zhovner_hub
Там постят самые свежие новости, и в комментариях можно связаться как с ним, так и с другими членами команды Flipper Zero.
koteeq
10.06.2021 14:12Как и обещали в январе, начнём в этом сезоне. Если будут какие-то задержки, сделаем пост с обновлённым графиком.
Нам «повезло», что приходится набивать первые шишки в разработке и производстве прямо во время пандемии и мирового дефицита чипов, поэтому точные сроки предсказывать тяжело, а даже самые примерные в итоге приходится сдвигать :(
Все заказавшие обязательно получат свои устройства, а пока можно наблюдать за нашей активной работой в соцсетях и здесь, на Хабре.
v1000
10.06.2021 10:38+1к подпружинненым контактам небольшие вопросы.
например, почему из сделали перпендикулярными плоскости устройства, а не контактной площадке?
и второе — зачем вообще этот функционал? неужели он настолько первостепенно необходим?TIGER535
10.06.2021 10:42+3То что вам он не нужен не означает что не нужен никому, я вот наоборот теперь решил прикупить себе флиппер, эта функция мне пригодится =)
Shnurokspb
10.06.2021 13:36Перепендикулярно скоро всего из-за плоскости платы, чтобы не городить бутерброд из плат под наклоном.
Serega_Barsukov Автор
10.06.2021 13:53Это наилучшее расположение, которое дает удобство и в использовании, и в изготовлении большой партией устройств. Чем больше плат и переходников, тем существенней становятся затраты на полный цикл изготовления.
По поводу функционала — устройство является мультитулом, швейцарским ножом. Кому-то нужен штопор, кому-то шило, а кому-то ножницы.
Xobotun
10.06.2021 14:23+2Зачем этот функционал? Я брал флиппер на 66% только из-за этой фичи!
Ну, да, аналоги есть, но мне не так сильно нужны ключи от четырёх других домов, в которых я иногда бываю. Проще позвонить по домофону, чем таскать с собой четыре разных ключа, или покупать специальный мультиключ.
А тут и мультиключ, и пачка других функций, которыми я вряд ли буду пользоваться. Но скопировать rfid бывает полезно. Мне пару раз в этом году было слегка нужно.
А вот gpio мне даром не надо, но кто-то другой наверняка брал флиппер именно из-за возможности залить на sd-карточку скрипт и непринуждённо помигать светодидом "в поле".
ntitov007
10.06.2021 11:18Продвинутые у вас почтальоны с универсальными ключами, у нас звонят в домофон всем подряд. Мне три-четыре раза точно звонили.
ilfa
10.06.2021 12:56Не совсем по теме статьи, но я было вдохновился на предзаказ, а Google pay что-то отказывается работать. Стоит ли говорить, что желания вводить данные своей банковской карты на сайте страшновато? =)
koteeq
10.06.2021 14:00Мы используем облачный движок магазина Shopify, а платежи принимаем через их же Shopify Payments, поэтому бояться нечего, ведь к данным ваших карты мы доступа не получаем.
С Google Pay у них какие-то проблемы, поэтому изначально он у нас был отключен. Недавно включила, чтобы посмотреть, не починили ли, но, видимо, нет. Спасибо за сигнал, отключаю обратно :(
ITMatika
10.06.2021 13:28Больше интересует реальное качество и дальность работы антенны на 125 кГц. В проекте числилась антенна, мягко говоря, не очень.
И сможет ли Flipper через неё работать на экзотических протоколах, отличных от EM-Marin, HID и T55XX.koteeq
10.06.2021 14:04+1Помимо перечисленных ещё Indala умеем.
А антенна в целом неплохая, при определённой сноровке даже получается прочитать T5577 из имплантированной стеклянной капсулы, которая многими ридерами читается очень слабо.talbot
10.06.2021 14:15Это вы чипы у собак и кошек читали?
koteeq
10.06.2021 14:18+2У себя (ᵔ.ᵔ)
У кошек и собак обычно максимально тупенькие FDX-B, которые работают на 134 kHz, такие ещё в грудных силиконовых имплантах используются для трекинга гарантии. Но да, у них примерно тот же принцип: слабая цилиндрическая антенна и стеклянная капсула.
Dr_Zlo13
10.06.2021 15:33+1Я читал Animal Tag ID и обычные перезаписываемые Т5577 в стеклянной капсуле на сантиметр-двух вполне успешно. Естественно её надо сначала поискать чуток, но все как с обычными ридерами.
Dr_Zlo13
10.06.2021 15:30Для индалы есть интересный хак с которым некоторые считыватели считывают эмулируемую карту метрах на 5-10.
Но вообще у нас довольно стандартные 50-100мм дальности эмуляции, что сравнимо с обычными картами.
ITMatika
11.06.2021 07:52+1Речь про экзотические протоколы, можно ли их как-то настроить самостоятельно или только перекомпиляцией всей прошивки? И доступна ли вообще самостоятельная перекомпиляция прошивки с исходниками отдельных протоколов?
Dr_Zlo13
10.06.2021 15:38+1С тех пор мы перешли на многослойную печатную антенну с переносом поля магнитной плёнкой, это положительно повлияло на дальность считывания.
Да, почти любое фазовое, амплитудное и частотное кодирование аппаратно поддерживается, вопрос только в программной реализации протокола.
ITMatika
10.06.2021 13:48Поэтому для дома, офиса, дачи, подвала нужно будет каждый раз выбирать конкретный ключ из меню.
Вот есть у меня два или три сохранённых ключа, которыми регулярно пользуюсь. И постоянно лезть в меню, чтобы выбрать нужный? А перебирать их автоматом по очереди с настраиваемой паузой, скажем, в полсекунды — не вариант?koteeq
10.06.2021 14:05+2К сожалению, не вариант.
Домофоны при ошибке долго пиликают, и только потом снова начинают слушать.
Подбор будет неловко долгим, даже если у вас всего несколько ключей.
Возможно, когда-нибудь компаньон Флиппера на вашем телефоне будет по входу в геозону определять, какой сейчас нужен ключ, и по BLE предупреждать об этом Флиппер. Это самое элегантное решение.
zhovner
10.06.2021 17:56+1Для быстрого доступа к любимым ключам есть приложение "архив". Нажимаем с главного экрана Down и попадаешь в список закладок с любимым ключами.
DieSlogan
10.06.2021 16:41+1Ребята, а когда все-таки ждать заказанного еще с кикстартера комплекта флиппера?
С 15 апреля сняли деньги за доставку и ордер все еще в статусе:
Your address has been locked
следующий должен быть «Your order has shipped», но так до сих пор не отправили, видимо.
NickProgramm
10.06.2021 18:15+2Неплохая идея, но добавьте перекодировки Cyfral-Dallas, Metakom-Dallas. У Cyfral три варианта, а у Metakom — два. Могу помочь с этим :)
ade
Будет возможность написать свой плагин, используя высокоуровневые команды, что-то типа:
emulate_dallas('00 00 00 01')
wait(10ms)
emulate_dallas('00 00 00 02')
?
zhovner
Да. Сейчас можно через USB консоль посылать такие команды, позже сделаем по BLE, так что можно будет с мобилы.
ade
а чтобы именно файлик создать и запустить в самом флипере?
zhovner
Пока интерпретирумых скриптов нет. Может когда-то запилим поддержку MicroPython, но он слишком большой и не влазит в прошивку, так что скорее всего это будет отдельная прошивка.
esaulenka
Посмотрите на lua. С помощью такой-то матери его можно довольно сильно урезать без потери функционала (но с потерей удобства — компилировать скрипты придётся заранее, с помощью внешней утилиты).