dlinyj: (Default)
[personal profile] dlinyj
Нет, нет. Тут не будет сложных технических формул. Этот пост будет вполне доступен для понимания каждого. Написать я собирался его достаточно давно, но таки написал с подачи товарища [livejournal.com profile] mlen.

Собственно говоря, вторая моя статья в Хакер, которая и принесла мне славу, называлась "Ключ от всех дверей", ознакомится с версией без картинок можно тут: http://www.xakep.ru/magazine/xa/093/020/1.asp . В дальнейшем я обязуюсь выложить доредакционную версию данной статьи, с иллюстрациями и некоторыми картинками, которые не вошли в статью (либо те, которые я отсниму отдельно). На пальцах, конецепт этой статьи был в том, как на коленке собрать эмулятор ключей от домофона. Немного вдаваясь в технические тонкости, эмулятор был реализован на микроконтроллере AT89С2051 (пользуясь случаем передаю пламенный привет [livejournal.com profile] di_halt). Тогда у меня был доступ к программатору этих микроконтроллеров, и т.п. Проблемы программирования меня мало интересовали.

Идея эмулятора ключей от домофона зажгла многих! Я получил море писем, и на удивление, не смотря, что статья вышла аш в 2006 году(!) я продолжаю получать письма от читателей! (боже, я работаю в Хакере почти 4 года!). И вот однажды я получил письмо от некоторого товарища, которого зовут Роман. Он учился тогда в институте МИЭМ. И была у него курсовая работа, в качестве изучения шины one-wire - разработка аналогичного эмулятора, как раз на контроллере C51 архитектуры. При чём не просто абстрактного эмулятора, а чтобы можно было сделать конкретное действия.

Я познакомился лично с Романом, и даже поехал к нему в институт и познакомился с преподавателем, который дал это задание. В институте существует преподавательский лифт. Чтобы студенты на нём не катались, он защищён таблетками DS1990A, или говоря простым языком - ключами, аналогичными домофонным. И задача его была создать эмулятор, чтобы можно было прокатится на преподавательском лифте

http://images04.olx.ru/ui/1/57/04/15675304_1.jpg
Домофонный ключ


Я договорился с Романом, что я ему сделаю этот эмулятор. Но на микроконтроллере AT89S2051. Буковка S - говорит нам о том, что он программируется последовательным интерфейсом, яки AVR, а мой программатор для AVR как раз может шить такие ключи. К тому же, как оказалось, распиновка, даже разъёма программирования полностью соответствует ATTINY2313 в DIP корпусе. А у меня как раз были готовые платки для этих целей!

Приеъал Роман, с контроллерами и панельками. Я запаял платку, и установил компилятор. Проверить работоспособность устройства решили на моём домофоне. Следовательно я забил туда ключ от своего домофона. Кстати, для любопытствующих, в дальнейшем я подробно об этом расскажу, но если кратко - ключ написан на каждой далласовской таблетке к домофону:

http://media.digikey.com/photos/Dallas%20Semicon%20Photos/DS1990A-F5+.JPG
Один из вариантов написания ключа. Слева две шестнадцатиричные цифра - это контрольная сумма, а справа 01 - это код семейства 1990А




После того, как я всё запаял и прошил, получилось вот такое вот устройство:


Готовый эмулятор


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

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

Результатом стало безоговорочный зачёт этой курсовой работы, без лишней бумажной волокиты :).

Date: 2010-01-03 12:29 pm (UTC)
From: [identity profile] devmind.livejournal.com
Картинка с ключом выше есть. Используются 8 знакомест. Отбросим 2 как подозрительно простые. Остается 6. 6 ^ 16 = 2 821 109 907 456. Учтем, что ключ домофон читает далеко не мгновенно, значит велик шанс состариться возле первого домофона (для справки: 100 лет = 3 153 600 000 с).

Date: 2010-01-03 01:13 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Как-то неверно считаешь... 64 битный ключ, а два байта если отбросить, будет 48-битный, следовательно... 2^48 варивантов 281 474 976 710 656 вариантов... Тут не то что состариться, тут уже праправнуки будут у домофона жить...

Date: 2010-01-03 02:12 pm (UTC)
From: [identity profile] devmind.livejournal.com
Напутал - 100%. Спасибо. Первые два байта я изначально выкинул. Потом еще один для верности (как-то подозрительно выглядят эти 12 на картинке). А потом перепутал цифры местами :) Не 6 ^ 16, а 16 ^ 6. А тут уж не такая впечатляющая цифра выходит :(

В любом случае, гораздо проще, имхо, ключ украсть (незаметно скопировать). Поэтому идея скиммера гораздо интереснее.

Date: 2010-01-03 02:18 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Откуда 16 берётся не пойму? количество байт, смотри 2^(6*8). При 2^48 цифра более впечатляющая, чем у тебя вышла :).

С последним совершенно солидарен. Горадо проще взять фомку и открыть домофон :)

Date: 2010-01-03 02:31 pm (UTC)
From: [identity profile] devmind.livejournal.com
16 - это основание системы счисления. А 6 в моем случае, это не количество байтов, а количество знакомест в 16-ричном отображении, т.е. 3 байта. Т.к. я перестраховался и отбросил не 2 байта, а три :)

Кстати. Ты выше написал, что ключ 64-битный, но он я так понимаю 48-битный (6 байт). Или я чего-то не понял?

Date: 2010-01-03 02:37 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Я всё же понимаю, что для избежания этих вопросов нужно будет выложить мою статью, чтобы народ прочитал, или отправить читать даташит.

64 байта, да. Первый байт контрольная сумма, которая вычисляется по формуле в даташите. 6 байт серийники, и последний байт равный всегда 01 - говорит о коде семейства. По сему значащих байт всего 6.

Date: 2010-01-03 03:08 pm (UTC)
From: [identity profile] devmind.livejournal.com
Ага, ну я примерно так и думал. Т.к. уникальной информации там 48 бит, я исходил из этой цифры. А вообще, пора бы наверное становиться "каждым вторым" по классификации Кластера :)

Date: 2010-01-03 01:16 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Даже положим, что первые два байта практически всегда равны нулю, то выходит всёравно ооочень приличное число 4 294 967 296. Ну за 100 лет можно попробовать перебрать, при условии что домофон будет давать неограниченное количество подходов, что в жизни не так.

Date: 2010-01-03 06:37 pm (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
значит надо перехватывать, но скиммер для домофона это как-то уж совсем из пушки по воробьям. даже и незнаю чтобы еще придумать.

Date: 2010-01-03 07:42 pm (UTC)
From: [identity profile] devmind.livejournal.com
Для массовых домофонов - найти мелкую сошку в обслуживающей конторе и выпытать сервисный код. Для уникальных устройств - социальная инженерия, ловкость рук или фомка :)

Date: 2010-01-04 05:05 am (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
социальный хак - неспортивно ящитаю, с таким подходом намного проще просочиться в подьезд за кем-то или позвонить в квартиру и сказать что почта. цель - взломать саму технологию, а не людей к ней причастных.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 08:30 pm
Powered by Dreamwidth Studios