Протокол X10 и что он из себя представляет (копипаст)

Vlad_hacker

Эксперт
Статус
offline
Регистрация
30.06.2016
Сообщения
468
Репутация
323
Знаю, тема старая, но найдутся люди, которым информация будет интересной.

X10: протокол для управления электропитанием

Представь ситуацию: ты сидишь с девушкой в парке и собираешься приятно удивить ее. Смело достаешь свой лэптоп и двумя кликами мыши заставляешь окна в офисном здании напротив зажечься в таком порядке, чтобы получилось сердце или имя любимой. «Сказки, - скажешь ты. - Как же можно управлять светом?» Можно, а главное - это очень удобно и эффективно. Если хочешь узнать, как работают системы управления светом и как их ломать, то читай дальше.

Тернистый путь

Изначально и я считал, что все это сказки. Как можно программно включить или выключить свет, если выключатель жесткий и механический?! Это то же самое, что попытаться программно извлечь дискетку на PC-машине (конечно же, на Маке такое возможно). Но все оказалось гораздо интереснее, чем я предполагал.

Существует целая наука – автоматика, которой занимается куча ученых по всему миру. Уже очень давно они решили задачу автоматического управления электропитанием: научились удаленно включать и выключать различные электроприборы, вроде ламп освещения, электродвигателей и кофеварок. И уж конечно они решили проблему управления освещением в крупных зданиях. Или ты думаешь, что такой проблемы нет? Ты ошибаешься.

Погасить свет сразу во всем здании – очень просто, а что делать, если одному сотруднику-трудоголику вздумается поработать ночью? Во всех коридорах и офисах погашен свет, а этому засранцу надо дойти до своего офиса и ходить время от времени в туалет. Не включать же из-за него свет во всем здании!

И уж точно нельзя доверять ему пользоваться ручными выключателями: он обязательно забудет что-нибудь погасить, и охраннику снизу придется из-за этого чапать на 26 этаж. Само собой, таких засранцев в большом офисном центре может быть пара сотен, и вручную включать и выключать для них свет - непростая задача. Самая маразматическая идея – нанять для этого специального человека. Не далеко ушла и задумка с выводом на единый пульт у охраны всех выключателей. Только представь, какую кипу проводов придется прокладывать! Для примера, если в здании 1000 выключателей, то толщина связки всех подходящих к пульту проводов составит 4 метра! Да и сориентироваться в тысяче кнопок для подпитого охранника – нелегкое дело.

Значительно разумнее подошли к этому вопросу ученые-автоматчики, разработавшие автоматическую систему управления освещением. Давай разберемся, как же она работает.

Концепция

Представь себе, что каждый из выключателей – это не тупой механический замыкатель контактов, а умная релюшка с собственным логическим адресом. Все реле, естественно, подключаются к общей сети электропитания и, как легко понять, физически связаны друг с другом. Также к сети подключается некоторое управляющее устройство, которое координирует работу реле, посылая им специальные сигналы.

История

Идея автоматизировать управление электропитанием родилась достаточно давно, и сразу было решено передавать управляющие сигналы по силовым проводам. В этом случае нет необходимости прокладывать дополнительные кабели, на порядок упрощается и удешевляется установка системы. Было разработано множество различных протоколов, но в силу разного ряда причин большинство из них не получили широкого распространения.

Одним из первых и в последствии самым распространенным стал протокол Х10. Этот протокол был впервые представлен в 1978 году компанией PICO Electronics. До этого счастливого момента инженерами компании было разработано целых девять (!) неудачных протоколов. Но только десятая попытка оказалась успешной, в результате чего был утвержден протокол Х10. На сегодняшний день это практически стандарт автоматики управления электропитанием. Под него клепают девайсы все кому не лень: даже в России существует несколько компаний, производящих устройства, совместимые с ним. Особенностью стандарта Х10 является полная совместимость устройств от различных производителей. Так, купив блок отечественного производителя, можно легко подсосать его к импортным модулям.

Особенно ценно то обстоятельство, что протокол целиком открыт и описан. А значит, мы с тобой в два счета разберемся, как и что работает, и отыщем пути для взлома сетей X10.

Как работает

Прежде всего, несколько слов об электрической составляющей этого протокола. Как я уже говорил, для передачи информации используется обычная электрическая сеть 220 вольт 50 Гц, доступ к которой можно получить через любую розетку. Хитрость тут в том, что провода могут легко передавать радиосигналы вместе с сетевым напряжением. Информация распространяется в виде наложенных на синус сети пакетов переменного напряжения с амплитудой в 5 вольт и частотой 120 кГц. Длится каждый пакет 1 мс. Данные передаются в последовательном виде. Синхронизация импульсов определяется переходом переменного напряжения через ноль. Единица кодируется тремя импульсами с интервалом 3,33 мс (это справедливо для частоты сети 50 Гц), что соответствует переходу всех трех фаз через ноль. Нулевой бит является отсутствием этого импульса. Проще говоря, если у нас в сети идет переменный ток синусоидальной формы, то на экране осциллографа в момент передачи сигналов в месте перехода сетевого напряжения через ноль будут видны небольшие всплески, напоминающие шум или даже некоторую рябь. А при передаче нулевого бита подобного всплеска не будет. Это была электрическая составляющая протокола. Теперь расскажу о логической.

Логика работы

В Х10 существует адресация получателя сигнала. Есть так называемый «адрес дома», который символически обозначается латинской буквой от А до O. В каждой такой «ячейке» имеется адрес кода прибора - число от 0 до 16-ти. «Адрес дома» – это абстрактное понятие, просто дополнительный адрес. Можно в одной квартире поставить один светильник на дом А и пятый адрес, второй - на В и десятый адрес. Команда передачи по сети занимает 22 перехода фазового напряжения через нулевой уровень (22 бита информации, по биту на переход через ноль). Начальная команда называется стартовым кодом, она всегда равна 1110b. Когда на исполнительное устройство приходит такая последовательность бит, то оно понимает, что началась передача. Дальше передается адрес кода дома, который занимает один байт. Затем - 10 бит, несущих код устройства или код команды для всех устройств в адресе этого дома (например, выключить все приборы). Если передается адрес, то он еще содержит в себе команду, что сделать с тем или иным прибором (например, можно сделать свет менее ярким, если в качестве приемника используется диммерный модуль). Получается, что посылка выглядит так. Сначала идет стартовый код, потом - адрес дома, затем - адрес исполняемого устройства с командой, либо команда для всех устройств в этом «доме». Чтобы исключить помехи в осветительной сети от разных устройств, посылка отправляется дважды. Между посылками делается небольшая пауза, чтобы отделить их друг от друга. Вся посылка обычно занимает 94 бита, которые занимают 47 периодов силового напряжения и по времени длятся 0,94 секунды. Поэтому работа осуществляется достаточно медленно, но этого вполне хватает для управления освещением, бытовыми приборами и т.д.

Существует еще возможность подключения расширенных кодов для добавления функций. То есть последняя команда передает «включить расширенные коды», и дальше идет еще 256 бит. Это можно использовать в сложных системах, например, в сигнализациях. Но для нас это не особенно актуально, поэтому идем дальше.

Управление

Это все была «электрическая лирика». Теперь поговорим о практическом применении рассматриваемого протокола. Для включения/выключения света используются два типа устройств: реле и диммер. Они включаются в цепь вместе со светильником или другим управляемым устройством, например двигателем. Диммер отличается от реле тем, что реле, по принципу его действия, может только включать и выключать свет, а диммер позволяет еще и регулировать яркость освещения. Но если на диммерный модуль подать команду «выключить», то он сработает как релейный модуль. Оба эти устройства устанавливаются в цепь питания лампы и управляются по сети 220 вольт. В них достаточно просто программируется адрес, на котором они находятся, чтобы можно было включить именно эту лампу.

Также они могут сидеть на одном адресе, например А5. Тогда при приходе команды «включить лампу А5» они включатся вместе. Все просто, как шина адреса в компьютере: у каждого устройства свой адрес; если адреса совпадают, то устройства одновременно получают одну и ту же команду. Однако в компьютере это нештатная ситуация, приводящая к ошибкам и конфликтам устройств, а тут - очень простое решение для одновременного управления разнесенными светильниками.

Итак, мы познакомились с исполнительными устройствами, но ими еще нужно управлять. В основе всей этой системы лежит некоторый передатчик формата Х10, которым может управлять либо человек, либо некоторый автономный девайс. Я расскажу о нескольких основных типах устройств.

Начнем с трансивера. Представь, что ты уже лежишь в постели и тут вспоминаешь, что забыл погасить свет во всей квартире, но тебе чудовищно лень вставать. Ты берешь пульт, нажимаешь пару кнопок, и свет везде гаснет. Этот пульт тоже работает по стандарту Х10 на частоте 433,92 МГц, но только передает команды в виде радиоволн, то есть без проводов. Передача сигналов с пульта в сеть 220 вольт осуществляется трансивером – девайсом, преобразующим радиосигнал в команды Х10. Получается, что если в нашем здании стоит управление автоматикой с такого пульта, то тебе не составит большого труда просто взять его и включить лампы по необходимым адресам. Остается только добыть карту адресов освещения этого здания или просто самому вечером с пульта составить ее методом перебора. Если трансивера в здании нет, то ничего не мешает его туда тихо пронести, воткнуть в ближайшую розетку… и осуществить описанный выше взлом.

Но это слишком простой и неинтересный путь, к тому же чтобы получилось что-то стоящее, нужно долго и нудно набирать команды на пульте. Куда более занимательно управлять освещением с компьютера. Или вообще в определенное время включить свет везде по заданному алгоритму. Или зажигать и гасить лампы, например, для создания «эффекта присутствия» на случай, если ты отдыхаешь с подружкой на Канарах, но хочешь, чтобы смотрящие в твои окна люди думали, что ты дома, раз свет в твоей квартире то включается, то выключается. Необходимый тебе для этих целей девайс называется таймером. На нем ты выставишь время и адрес включения интересующего тебя устройства. Минус этой штуки состоит в том, что программирование осуществляется различным тумблерочками и ручками, что, собственно, не достойно настоящего гика.

Для настоящих программеров есть замечательное хакерское устройство, которое называется Marmitek CM11. На мой взгляд, это самое удачное решение. Девайс подключается к компьютеру через USB- или COM-интерфейс и позволяет с помощью программы Home Control управлять освещением, писать небольшие макросы, которые можно сохранить в него и выполнить в определенное время уже без компьютера. Нам останется лишь узнать адреса ламп в заветном офисном помещении, написать соответствующий макрос, который включится в определенное время, затем залить его в CM11 и подключить этот девайс к любой офисной розетке.

Фрикерство

Я не был бы фрикером, если бы отделался только обзором промышленных устройств и описанием интерфейса. Мне захотелось покопаться в том, как все работает.

Методично разобрав все устройства, которые мне предоставил интернет-магазин www.magichome.ru, я неплохо сориентировался в их схемотехнике. Препарируя устройства, я поражался, насколько узко мыслят производители. Например, тот же CM11 собран на примитивном процессоре PIC. Имея небольшой опыт программирования подобных устройств, посидев пару дней и покурив его схему (разумеется, перерисовав ее с рабочей платы), можно запросто повторить этот девайс.

Но архитектура убогих пиков меня не особо радовала (35 ассемблерных команд радости), и я начал разбираться в устройстве релейных модулей. К слову сказать, релейный или диммерный модуль может на запрос от передатчика дать ответ, в каком он состоянии (включен или выключен), то есть сам работать как передатчик. Это означает, что если понять, как работает релейный модуль, и немного его модернизировать, то можно получить передатчик а-ля троянский конь в железе и записать в него нашу программу вывода романтического признания в любви.

Когда я разобрал релейный модуль, моему взору престала плата, аккуратно покрытая лаком, со сточенной маркировкой на центральном процессоре. По слухам, в эти устройства устанавливались микроконтроллеры фирмы Atmel. Поразмыслив, я пришел к выводу, что в таком примитивном устройстве не будут использовать крутой процессор ARM, а С51 достаточно убоги для этих задач. Следовательно, в нем нет моего любимого AVR. Но вот какой, маркировки же нет? Тут производители, конечно, лоханулись, поставив такой хитрый корпус. Полазив по даташитам AVR-микроконтроллеров, я понял, что там установлен процессор Tiny26.

Осмотрев внимательно плату, я обнаружил разъем программирования. Производитель тщетно пытался испортить нам праздник, залив плату лаком. Взяв ацетон и ватную палочку, я методично очистил ножки контроллера от лака. Буквально через полчаса изучения доков на камень и прозвонки контактных площадок для программирования процессора я уже знал, куда подпаивать программатор. Дальше было дело техники. Когда я запаял программатор, моей радости не было предела - как и предполагалось, это была Tiny26. Одну хорошую головоломку я решил.

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

В заключение

Взломать можно все, и чем более сложные системы приходят в нашу жизнь, тем больше они несут в себе уязвимостей. Теперь ты понимаешь, что управление светом с компьютера не оригинальный ход режиссера в фильме о хакерах, а насущная реальность. Ты можешь поставить подобную систему и потренироваться в хаке у себя дома, а затем перенести свой опыт уже на офисные здания. Заодно получишь свою собственную систему интеллектуального дома.

Другие стандарты

Кроме Х10, существует еще множество стандартов управления. Для многих из них надо прокладывать дополнительные провода, что, конечно, сразу заметно повышает цену на установку и обслуживание этих устройств. Но для крупных компаний это не проблема.

Например, есть протокол BACnet (Building Automation and Control network). Этот протокол разрабатывался как универсальный протокол систем автоматизации здания, при этом не зависящий от производителей устройств. Проще говоря, он разрабатывался как стандарт для автоматизации. В принципе, это протокол прикладного уровня, и в качестве физического уровня может использовать разные технологии, такие как Etheet, RS-232, RS-485 и другие. Следовательно, используя этот протокол, надо выбрать еще и физический уровень передачи данных (кстати, для этих целей можно использовать и сеть Х10 J ).

Также существует LonWorks - промышленный стандарт организации управляющих сетей. Как и в протоколе BACnet, у него достаточно широкий выбор используемых технологий для передачи данных, в том числе CAN, Modbus, N2, DALI, Profibus, EIB и прочие. Эта сеть имеет распределенную архитектуру, то есть в ней нет главного центра управления. Каждый узел этой сети управляет освещением, обрабатывает информацию, поступающую из другого узла или с датчиков, занимается приемом-передачей данных и общается с другими узлами. Узлы этой сети могут представлять собой датчики, например температуры, движения, освещенности, вибраций и т.д., также исполнительные устройства, такие как реле или диммеры. Оборудование связывается стандартной сетью Etheet по TCP/IP, и обычный ПК запросто может управлять ею.
 

SS4t

Новичок
Статус
offline
Регистрация
11.01.2018
Сообщения
23
Репутация
6
Может под спойлер. Я на телефоне устал пролиствать. Не судите меня
 

Vlad_hacker

Эксперт
Статус
offline
Регистрация
30.06.2016
Сообщения
468
Репутация
323

TonyBalls

Новичок
Статус
offline
Регистрация
25.04.2018
Сообщения
8
Репутация
0
Ты просто новичек.