Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Записки электронщика. Эмулятор ibutton


Записки электронщика: Arduino: делаем эмулятор iButton

  Если после прочтения статьи про чтение кода ключа-таблетки iButton, Вам в голову пришла мысль, что можно сделать и обратную комбинацию – значит мы мыслим в одинаковом направлении :)

Сразу хочу сказать, что эта идея далеко не новая, и воспользовавшись поиском можно найти различные решения – примеры можно найти в конце статьи в ссылках.

Итак, что же нам нужно?А нужно нам всего-навсего произвести симуляцию 1-Ware slave-устройства, выдавая себя за iButton :)Для этого нужно вспомнить, что происходит в линии 1-Wire:Сначала происходит

1. инициализация – ведущее устройство (домофон) подаёт импульс RESET, после него ведомое устройство (это мы) должно дать ответ PRESENCE (прижать линию к земле на 60 — 240 микросекунд)

Далее происходит сам обмен информации:2. домофон выдает команду на чтение ПЗУ (ROM) – это должно быть 33h. Информация, как мы помним, передаётся побайтно, бит за битом. При этом «0» передаётся прижиманием линии к земле в течении всего тайм-слота (60 — 120 микросекунд) А «1» передаётся кратковременным прижиманием (на 1-15микросекунд) и последующим отпусканием линии.3. домофон выдерживает некоторое время и начинает посылать импульсы приема информации. Т.к. в ответ ожидается 8 байт информации – будет 64 импульса (по одному импульсу для передачи каждого бита информации от нас). Если мы хотим передать «0» — мы удерживаем линию на логическом нуле, а если хотим передать «1», то можем ничего не делать :) Эмулируя ключ, мы должны сначала передать номер серии устройства 01h. Затем собственно 6 байт номера ключа (начиная с младшего байта) и в самом конце – байт CRC-кода предыдущей информации. Для ключа, рассмотренного в статье про iButton – это будет последовательность байт: 01h51hCEh67h0Fh00h00h B6h

Попробуем это дело запрограммировать :)Чтобы не бегать постоянно к домофону – начальную проверку можно попробовать сделать в протеусе :)Поместим в проект две ардуины – в одну загрузим скетч работы с iButton, а во вторую будем грузить код нашего эмулятора :)

Кроме того, при симуляции схемы можно воспользоваться виртуальным инструментарием. Например, подключив в Протеусе на линию 1-Wire виртуальный осциллограф – можно вживую понаблюдать – как происходит обмен информацией :) блок-схема скетча для эмуляции iButton будет такой А если мы не знаем ключ – сможем ли мы его подобрать перебором?

Оценочно прикинем – сколько времени понадобится на подбор ключа :)У моего ключа-таблетки номер 00000F67CE41, что даёт нам возможность предположить, что пока для нумерации iButton-ов используются первые 4 байта номера :)Вне всяких сомнений — это меньше 281 биллиона, которые можно спрятать в шести байтах :)И даёт нам всего 4 миллиарда вариантов :)0xFFFFFFFF = 4294967295

Прикинем — сколько времени займёт проверка одного ключа:PRESENCE ~ 480 мкс8 бит команды 120 мкс * 864 бита данных 120 мкс *64

Итого ~ 10 мс => 100 ключей в секунду (в датащите упоминается про 75 ключей в секунду)Получается, что на полный перебор потребуется 497 дней :( Что-то долго :)

В интернете упоминается, что такой брутфорс (brute force) на домофонах не сработает и после трёх неправильных ключей домофон загудит и впадёт в ступор на 5 минут :)

Однако выход есть – дело в том, что на некоторых моделях домофонов в новой чистой памяти домофона (предназначенной для хранения ключей жильцов) все биты установлены в 1 (т.е. забиты FF-ами). И если ключ будет выдавать тоже единицы, то программа подумает, что в чистой памяти тоже хранятся коды ключей и они совпадают с тем, что записано в нашем универсальном ключе и дверь откроется :)))

Это действительно дыра в программном обеспечении контроллера и есть во всех дешёвых контроллерах. Причём простая до смеху. Контроллер проверяет ключ (причём обычно только последнии 4 байта — контроллер то дешёвый) с записаными в ЭСПЗУ. А как выглядят пустые ячейки? То есть если записать ключ вида FFFFFF......FFFFFF что будет? Правильно, он уже везде прописан :) Подверженны все домофоны типа Цифрал ТС, Визит, Метаком

А где же скетч эмулятора?

Ниже приводится набросок такого скетча – вам остаётся только освежить в памяти – что происходит на линии 1-Wire и наполнить кодом функции:void wire_send_byte(byte dsbyte)byte wire_read_byte()void wire_write0(void) void wire_write1(void) или же полностью переписать скетч самостоятельно ;)

Набросок скетча (ВНИМАНИЕ – СКЕТЧ НЕ ДОПИСАН ДО КОНЦА):

  1. /*

  2. * Эмулируем работу ключа-таблетки iButton типа DS1990A

  3. */

  4. int onepinio = 10; // порт для подключения 1-Wire

  5. // данные ключа  - номер серии, 6 байт номера, байт CRC

  6. byte key_data[8] = {0x1, 0x41, 0xCE, 0x67, 0x0F, 0x00, 0x00, 0xB6};

  7. void setup()

  8. {

  9.         Serial.begin(9600);

  10. }

  11. void loop()

  12. {

  13.     // считываем импульс RESET из линии

  14.     //

  15.     wire_read_RESET();

  16.        

  17.     //

  18.     // выдаём в линию импульс PRESENCE

  19.     //

  20.     wire_PRESENCE();

  21.        

  22.        

  23.     //

  24.     // считываем команду от домофона

  25.     //

  26.     int b = wire_read_byte();

  27.        

  28.        

  29.     //

  30.     // что за команду считали? :)

  31.     //

  32.     if(b==0xF0) // SEARCH ROM

  33.     {

  34.         //

  35.         // начинаем двубитную передачу :(

  36.         //

  37.         wire_send_duos_bits();

  38.     }

  39.     else

  40.     {

  41.         if(b==0x33) // READ ROM

  42.         {

  43.             //

  44.             // отправляем данные iButton :)

  45.             //

  46.             wire_send_data();

  47.         }

  48.     }

  49.     delay(300);

  50. }

  51. //

  52. // ждём пока линия не прижмётся к земле

  53. //

  54. void wire_wait()

  55. {

  56.     pinMode(onepinio, INPUT);

  57.     while(digitalRead(onepinio))

  58.     {

  59.         delayMicroseconds(1);

  60.     }

  61. }

  62. //

  63. // двубитное общение с ведущим устройством - см. AN187

  64. //

  65. void wire_send_duos_bits()

  66. {

  67. }

  68. //

  69. // считываем импульс RESET из линии

  70. //

  71. void wire_read_RESET()

  72. {

  73.     pinMode(onepinio, INPUT);

  74.     while(digitalRead(onepinio))

  75.     {

  76.         delayMicroseconds(1);

  77.     }

  78.     while(!digitalRead(onepinio))

  79.     {

  80.         delayMicroseconds(1);

  81.     }

  82. }

  83. //

  84. // выдаём в линию 1-Wire сигнал PRESENCE

  85. // для этого нужно прижать линию к земле на 60-240 микросекунд, а затем отпустить

  86. //

  87. void wire_PRESENCE()

  88. {

  89.     pinMode(onepinio, OUTPUT);

  90.     digitalWrite(onepinio,LOW);         // прижимаем линию к земле

  91.     delayMicroseconds(120);             // 60-240 микросекунд

  92.     pinMode(onepinio, INPUT);           // отключаемся

  93.     delayMicroseconds(450);

  94. }

  95. //

  96. // выдача в линию данных iButton

  97. //

  98. void wire_send_data()

  99. {

  100.     for(int i=0;i<8;i++)

  101.         wire_send_byte(key_data[i]);

  102. }

  103. //

  104. // выдача в линию байта данных

  105. //

  106. void wire_send_byte(byte dsbyte)

  107. {

  108. }

  109. //

  110. // считываем байт данных из линии

  111. //

  112. byte wire_read_byte()

  113. {

  114. }

  115. //

  116. // пишем бит "0" в линию

  117. //

  118. void wire_write0(void)

  119. {

  120. }

  121. //

  122. // пишем бит "1" в линию

  123. //

  124. void wire_write1(void)

  125. {

  126. }

electro-sketch.blogspot.com

3.Описание протокола эмулятора iButton

Данные в соответствие с протоколом iButton Standarts передаются в дискретные временные интервалы, которые называются временными сегментами (типовая длительность около 60мкс) с помощью коротких и длинных импульсов. При этом инициатором обмена (ведущим) всегда является считывающее устройство. При соприкосновении с зондом или его эквивалентом прибор эмулятор iButton выдает ответный сигнал, за которым следует код семейства, 48-битный серийный номер ключа и код контроля. Длинные или короткие активные состояния логического нуля во временных сегментах представляют единицы или нули. Ведущая система запускает передачу каждого бита. В общем случае эмулятор может работать относительно мастера как на считывание, так и на запись информации в свою энергонезависимую память. Для записи логической 1 в течение типового сегмента времени однопроводная линия передачи должна за время выборки данного вернуться в состояние логической 1, для записи нуля в течение всего этого временного окна линия должна находиться в состоянии логического 0. (Рисунок 2.6).

Рисунок 2.6 – Схема мастера для считывания iButton

Синхронизация временного сегмента осуществляется отрицательным фронтом сигнала, который формируется мастером, при этом длительность состояния логического нуля на однопроводной линии связи должна составлять не менее 1мкс. В цикле считывания идеальный момент стробирования считываемого данного - это 8мкс после начала временного сегмента (Рисунок 2.7).

Рисунок 2.7 – Время синхронизации и стробирования

Задающее устройство подает на однопроводную линию активный логический 0 на время синхронизации данного (не менее 1мкс), после чего переходит в режим приема. Далее в течение всего времени выборки данного состояние линии определяется эмулятором iButton . После начала временного сегмента состояние линии с помощью пассивной нагрузки выдерживается на уровне логической 1 от 15 до 60мкс. Возможна приостановка сеанса связи на любое время между временными сегментами, при этом на однопроводной линии связи поддерживается состояние логической 1. Во всех сеансах связи первым передается младший значащий разряд данного.

3.1. Описание работы эмулятора домофонного ключа

Вывод микроконтроллера будет считаться логической единицей. После подачи питания на контроллер мы должны ждать момента, пока наша ножка микроконтроллера прикоснется заземления, ожидаем некоторое время и переводим порт из режима чтения в режим записи. Далее переводим шину в режим чтения и ждем, «Ответа» звукового сигнала от домофона, он нам ответит командой чтения, состоящую из восьми бит. Декодировать ее не будем, так как в 99,9% случаев он нам выдаст запрос 33H. Мы же просто отсчитываем 8 импульсов от мастера. Затем наша задача побитно выдать серийный номер, состоящий из восьми байт.

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

studfiles.net

ibutton эмулятор — advODKA.com

1  arduino.ru 220 2 3 937 1 500 Эмулятор iButton DS1990... | Аппаратная платформа Arduino Нужен код реально работающего эмулятора iButton на Arduino UNO. ... В качестве ведомого будет использоваться эмулятор iButton.
2  github.com 10 000 да 8 да 40 601 5 900 Эмулятор домофонных ключей iButton/Cyfral/Metacom Эмулятор домофонных ключей iButton/Cyfral/Metacom. Contribute to ibutton development by creating an account on GitHub.
3  robocraft.ru 230 4 да 2 762 1 000 Arduino/CraftDuino и эмулятор iButton ;) Дело в том, что мы решили устроить :) Первый приславший работоспособный ардуиновский скетч эмулятора iButton-а получит в подарок!
4  blogspot.ru 11 000 0 да 472 499 221 000 Arduino: делаем эмулятор iButton Если после прочтения статьи про чтение кода ключа-таблетки iButton, Вам в голову пришла мысль, что можно сделать и обратную комбинацию – значит мы мыслим в одинаковом направлении :).
5  radioelectronika.ru 50 3 2 150 280 Схема. Эмулятор ключей iButton Если контроллер электронного замка использует только серийный номер iButton, то эмулятор будет работать и с ключами на основе других микросхем...
6  radiokot.ru 550 4 да 40 286 6 600 РадиоКот :: Два в одном флаконе или эмулятор ключей... Взор падает на лежащий на столе ключ IButton DS1993 от системы безопасности (по ... Номера ключей больше 15 выводятся с точкой. Эмулятор переходит в спящий режим...
7  vrtp.ru 325 3 9 618 1 100 эмулятор iButton, не получается прошить еепром | Форум Господа знатоки, обращаюсь к вам... нашел схему эмулятора ключей iButton( http://easyelectronics.ru/klyuch-ot-vsex-dverej-2.html ) там вроде все подробно описанно кроме того, как именно и что именно надо зашить в еепром... ладно, коды ключей я...
8  radioskot.ru 140 1 24 532 7 400 Универсальный ключ Ibuttons - Форум радиолюбителей В этом плане эмулятор полностью повторяет настоящий iButton, питаясь во время работы от линии связи (Dq на схеме).
9  microchip.su 80 2 3 831 390 Эмулятор iButton | Форум Эмулятор “iButton DS1990A” вся разнится в протоколе чтения, так что будьте внимательны. Здесь аналог DS1990A НЕ “DS19B20”.
10  cxem.net 1 100 да 5 да 64 446 20 300 Эмулятор-копир I-button - Системы контроля доступа | Форум Данный эмулятор был сделан не один раз. Иногда очень возникает потребность скопировать ключ на месте кому-то, а бежать в сервис не всегда...
11  sprinter4wd.narod.ru 10 0 184 30 ...контактных ключей типа Cyfral, Метаком и iButton. Простейший эмулятор домофонных контактных ключей типа Cyfral, Метаком и iButton.
12  easyelectronics.ru 500 3 да 12 883 2 500 Эмулятор ключей iButton | Форум Я уже несколько дней пытаюсь сделать эмулятор домофонных ключей iButton. Контроллер использую ATtiny13A на частоте 9,6Мгц.
13  nnm.me 3 700 5 151 951 20 100 Ардуино.Практическое программирование. 1-Wire + iButton... Сегодня мы познакомимся с интересным протоколом 1-Wire и попробуем поработать с устройством, использующим этот уникальный протокол. Скорее всего вы пользуетесь устройством 1-Wire и, возможно...
14  diagram.com.ua 220 да 3 да 29 591 5 200 Эмулятор ключей iButton. Скачать бесплатно, подробная... Полное название статьи и дополнительная информация: Бабиков, И. Эмулятор ключей iButton. ТЕМАТИКА: Вычислительная техника / Системы памяти.
15  radio-master.net 10 0 13 309 240 Эмулятор ключей iButton и RFID Кнопка "OPEN" нормально Эмулятор ключей iButton и RFID разомкнутая, защищена от залипания.
16  3dn.ru 8 400 0 да 804 643 350 000 Эмулятор ключей iButton. - 18 Января 2015 - Blog - Spargalka Эмулятор ключей iButton. Принцип работы универсальных домофонных ключей. Ключ общается с домофоном по двухпроводной шине 1-wire, по.
17  mysku.ru 600 4 31 566 21 800 Atmega8A в корпусе TQFP-32 прошивка через Arduino ISP Случайно наткнувшись в интернете на проект Эмулятор домофонных ключей iButton/Cyfral/Metacom — ibutton от ClusterM, решил попытаться его повторить.
18  reteam.org 20 3 да 60 0 Ibutton ID (hardware) Emulator | Forum ID emulator with mc9s12c32 MCU board(2x2cm) for both. DS1990A Serial Number iButton DS1963S SHA secure iButton.
19  yandex.ru 520 000 да 8 да 7 322 416 6 630 000 iButton Emulator - [email protected] · Личное сообщение · #3. Hello, how there functions this emulator? ... [email protected] —› Основной форум —› iButton Emulator.
20  vk.com 300 000 да 9 да 2 365 885 6 600 000 Конкурс "Напиши эмулятор iButton-а для Arduino и получи... Конкурс "Напиши эмулятора iButton-а для Arduino и получи ProtoShield в подарок!" завершился!

advodka.com


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..