Как в фильмах.
Представь ситуацию:
Тернистый путь
Изначально и я считал, что все это сказки. Как можно программно включить или выключить свет, если выключатель жесткий и механический?! Это то же самое, что попытаться программно извлечь дискетку на PC-машине (конечно же, на Маке такое возможно). Но все оказалось гораздо интереснее, чем я предполагал.
Существует целая наука – автоматика, которой занимается куча ученых по всему миру. Уже очень давно они решили задачу автоматического управления электропитанием: научились удаленно включать и выключать различные электроприборы, вроде ламп освещения, электродвигателей и кофеварок. И уж конечно они решили проблему управления освещением в крупных зданиях. Или ты думаешь, что такой проблемы нет? Ты ошибаешься.
Погасить свет сразу во всем здании – очень просто, а что делать, если одному сотруднику-трудоголику вздумается поработать ночью? Во всех коридорах и офисах погашен свет, а этому засранцу надо дойти до своего офиса и ходить время от времени в туалет. Не включать же из-за него свет во всем здании!
И уж точно нельзя доверять ему пользоваться ручными выключателями:
он обязательно забудет что-нибудь погасить, и охраннику снизу придется из-за этого чапать на 26 этаж. Само собой, таких засранцев в большом офисном центре может быть пара сотен, и вручную включать и выключать для них свет - непростая задача. Самая маразматическая идея – нанять для этого специального человека. Не далеко ушла и задумка с выводом на единый пульт у охраны всех выключателей. Только представь, какую кипу проводов придется прокладывать! Для примера, если в здании 1000 выключателей, то толщина связки всех подходящих к пульту проводов составит 4 метра! Да и сориентироваться в тысяче кнопок для подпитого охранника – нелегкое дело.
Значительно разумнее подошли к этому вопросу ученые-автоматчики, разработавшие автоматическую систему управления освещением. Давай разберемся, как же она работает.
Концепция
Представь себе, что каждый из выключателей – это не тупой механический замыкатель контактов, а умная релюшка с собственным логическим адресом. Все реле, естественно, подключаются к общей сети электропитания и, как легко понять, физически связаны друг с другом. Также к сети подключается некоторое управляющее устройство, которое координирует работу реле, посылая им специальные сигналы.
История
Идея автоматизировать управление электропитанием родилась достаточно давно, и сразу было решено передавать управляющие сигналы по силовым проводам. В этом случае нет необходимости прокладывать дополнительные кабели, на порядок упрощается и удешевляется установка системы. Было разработано множество различных протоколов, но в силу разного ряда причин большинство из них не получили широкого распространения.
Одним из первых и в последствии самым распространенным стал протокол Х10. Этот протокол был впервые представлен в 1978 году компанией PICO Electronics. До этого счастливого момента инженерами компании было разработано целых девять (!) неудачных протоколов. Но только десятая попытка оказалась успешной, в результате чего был утвержден протокол Х10. На сегодняшний день это практически стандарт автоматики управления электропитанием. Под него клепают девайсы все кому не лень:
даже в России существует несколько компаний, производящих устройства, совместимые с ним. Особенностью стандарта Х10 является полная совместимость устройств от различных производителей. Так, купив блок отечественного производителя, можно легко подсосать его к импортным модулям.
Особенно ценно то обстоятельство, что протокол целиком открыт и описан. А значит, мы с тобой в два счета разберемся, как и что работает, и отыщем пути для взлома сетей X10.
Как работает
Прежде всего, несколько слов об электрической составляющей этого протокола. Как я уже говорил, для передачи информации используется обычная электрическая сеть 220 вольт 50 Гц, доступ к которой можно получить через любую розетку. Хитрость тут в том, что провода могут легко передавать радиосигналы вместе с сетевым напряжением. Информация распространяется в виде наложенных на синус сети пакетов переменного напряжения с амплитудой в 5 вольт и частотой 120 кГц. Длится каждый пакет 1 мс. Данные передаются в последовательном виде. Синхронизация импульсов определяется переходом переменного напряжения через ноль. Единица кодируется тремя импульсами с интервалом 3,33 мс (это справедливо для частоты сети 50 Гц), что соответствует переходу всех трех фаз через ноль. Нулевой бит является отсутствием этого импульса. Проще говоря, если у нас в сети идет переменный ток синусоидальной формы, то на экране осциллографа в момент передачи сигналов в местo перехода сетевого напряжения через ноль будут видны небольшие всплески, напоминающие шум или даже некоторую рябь. А при передаче нулевого бита подобного всплеска не будет. Это была электрическая составляющая протокола. Теперь расскажу о логической.
Логика работы
В Х10 существует адресация получателя сигнала. Есть так называемый «адрес дома», который символически обозначается латинской буквой от А до O. В каждой такой «ячейке» имеется адрес кода прибора - число от 0 до 16-ти. «Адрес дома» – это абстрактное понятие, просто дополнительный адрес. Можно в одной квартире поставить один светильник на дом А и пятый адрес, второй - на В и десятый адрес. Команда передачи по сети занимает 22 перехода фазового напряжения через нулевой уровень (22 бита информации, по биту на переход через ноль). Начальная команда называется стартовым кодом, она всегда равна 1110b. Когда на исполнительное устройство приходит такая последовательность бит, то оно понимает, что началась передача. Дальше передается адрес кода дома, который занимает один байт. Затем - 10 бит, несущих код устройства или код команды для всех устройств в адресе этого дома (например, выключить все приборы). Если передается адрес, то он еще содержит в себе команду, что сделать с тем или иным прибором (например, можно сделать свет менее ярким, если в качестве приемника используется диммерный модуль). Получается, что посылка выглядит так. Сначала идет стартовый код, потом - адрес дома, затем - адрес исполняемого устройства с командой, либо команда для всех устройств в этом «доме». Чтобы исключить помехи в осветительной сети от разных устройств, посылка отправляется дважды. Между посылками делается небольшая пауза, чтобы отделить их друг от друга. Вся посылка обычно занимает 94 бита, которые занимают 47 периодов силового напряжения и по времени длятся 0,94 секунды. Поэтому работа осуществляется достаточно медленно, но этого вполне хватает для управления освещением, бытовыми приборами и т.д.
Существует еще возможность подключения расширенных кодов для добавления функций. То есть последняя команда передает «включить расширенные коды», и дальше идет еще 256 бит. Это можно использовать в сложных системах, например, в сигнализациях. Но для нас это не особенно актуально, поэтому идем дальше.
Представь ситуацию:
Ты сидишь с девушкой в парке и собираешься приятно удивить ее. Смело достаешь свой лэптоп и двумя кликами мыши заставляешь окна в офисном здании напротив зажечься в таком порядке, чтобы получилось сердце или имя любимой.
«Сказки, - скажешь ты. - Как же можно управлять светом?» Можно, а главное - это очень удобно и эффективно. Если хочешь узнать, как работают системы управления светом и как их ломать, то читай дальше.Тернистый путь
Изначально и я считал, что все это сказки. Как можно программно включить или выключить свет, если выключатель жесткий и механический?! Это то же самое, что попытаться программно извлечь дискетку на PC-машине (конечно же, на Маке такое возможно). Но все оказалось гораздо интереснее, чем я предполагал.
Существует целая наука – автоматика, которой занимается куча ученых по всему миру. Уже очень давно они решили задачу автоматического управления электропитанием: научились удаленно включать и выключать различные электроприборы, вроде ламп освещения, электродвигателей и кофеварок. И уж конечно они решили проблему управления освещением в крупных зданиях. Или ты думаешь, что такой проблемы нет? Ты ошибаешься.
Погасить свет сразу во всем здании – очень просто, а что делать, если одному сотруднику-трудоголику вздумается поработать ночью? Во всех коридорах и офисах погашен свет, а этому засранцу надо дойти до своего офиса и ходить время от времени в туалет. Не включать же из-за него свет во всем здании!
И уж точно нельзя доверять ему пользоваться ручными выключателями:
он обязательно забудет что-нибудь погасить, и охраннику снизу придется из-за этого чапать на 26 этаж. Само собой, таких засранцев в большом офисном центре может быть пара сотен, и вручную включать и выключать для них свет - непростая задача. Самая маразматическая идея – нанять для этого специального человека. Не далеко ушла и задумка с выводом на единый пульт у охраны всех выключателей. Только представь, какую кипу проводов придется прокладывать! Для примера, если в здании 1000 выключателей, то толщина связки всех подходящих к пульту проводов составит 4 метра! Да и сориентироваться в тысяче кнопок для подпитого охранника – нелегкое дело.
Значительно разумнее подошли к этому вопросу ученые-автоматчики, разработавшие автоматическую систему управления освещением. Давай разберемся, как же она работает.
Концепция
Представь себе, что каждый из выключателей – это не тупой механический замыкатель контактов, а умная релюшка с собственным логическим адресом. Все реле, естественно, подключаются к общей сети электропитания и, как легко понять, физически связаны друг с другом. Также к сети подключается некоторое управляющее устройство, которое координирует работу реле, посылая им специальные сигналы.
История
Идея автоматизировать управление электропитанием родилась достаточно давно, и сразу было решено передавать управляющие сигналы по силовым проводам. В этом случае нет необходимости прокладывать дополнительные кабели, на порядок упрощается и удешевляется установка системы. Было разработано множество различных протоколов, но в силу разного ряда причин большинство из них не получили широкого распространения.
Одним из первых и в последствии самым распространенным стал протокол Х10. Этот протокол был впервые представлен в 1978 году компанией PICO Electronics. До этого счастливого момента инженерами компании было разработано целых девять (!) неудачных протоколов. Но только десятая попытка оказалась успешной, в результате чего был утвержден протокол Х10. На сегодняшний день это практически стандарт автоматики управления электропитанием. Под него клепают девайсы все кому не лень:
даже в России существует несколько компаний, производящих устройства, совместимые с ним. Особенностью стандарта Х10 является полная совместимость устройств от различных производителей. Так, купив блок отечественного производителя, можно легко подсосать его к импортным модулям.
Особенно ценно то обстоятельство, что протокол целиком открыт и описан. А значит, мы с тобой в два счета разберемся, как и что работает, и отыщем пути для взлома сетей X10.
Как работает
Прежде всего, несколько слов об электрической составляющей этого протокола. Как я уже говорил, для передачи информации используется обычная электрическая сеть 220 вольт 50 Гц, доступ к которой можно получить через любую розетку. Хитрость тут в том, что провода могут легко передавать радиосигналы вместе с сетевым напряжением. Информация распространяется в виде наложенных на синус сети пакетов переменного напряжения с амплитудой в 5 вольт и частотой 120 кГц. Длится каждый пакет 1 мс. Данные передаются в последовательном виде. Синхронизация импульсов определяется переходом переменного напряжения через ноль. Единица кодируется тремя импульсами с интервалом 3,33 мс (это справедливо для частоты сети 50 Гц), что соответствует переходу всех трех фаз через ноль. Нулевой бит является отсутствием этого импульса. Проще говоря, если у нас в сети идет переменный ток синусоидальной формы, то на экране осциллографа в момент передачи сигналов в местo перехода сетевого напряжения через ноль будут видны небольшие всплески, напоминающие шум или даже некоторую рябь. А при передаче нулевого бита подобного всплеска не будет. Это была электрическая составляющая протокола. Теперь расскажу о логической.
Логика работы
В Х10 существует адресация получателя сигнала. Есть так называемый «адрес дома», который символически обозначается латинской буквой от А до O. В каждой такой «ячейке» имеется адрес кода прибора - число от 0 до 16-ти. «Адрес дома» – это абстрактное понятие, просто дополнительный адрес. Можно в одной квартире поставить один светильник на дом А и пятый адрес, второй - на В и десятый адрес. Команда передачи по сети занимает 22 перехода фазового напряжения через нулевой уровень (22 бита информации, по биту на переход через ноль). Начальная команда называется стартовым кодом, она всегда равна 1110b. Когда на исполнительное устройство приходит такая последовательность бит, то оно понимает, что началась передача. Дальше передается адрес кода дома, который занимает один байт. Затем - 10 бит, несущих код устройства или код команды для всех устройств в адресе этого дома (например, выключить все приборы). Если передается адрес, то он еще содержит в себе команду, что сделать с тем или иным прибором (например, можно сделать свет менее ярким, если в качестве приемника используется диммерный модуль). Получается, что посылка выглядит так. Сначала идет стартовый код, потом - адрес дома, затем - адрес исполняемого устройства с командой, либо команда для всех устройств в этом «доме». Чтобы исключить помехи в осветительной сети от разных устройств, посылка отправляется дважды. Между посылками делается небольшая пауза, чтобы отделить их друг от друга. Вся посылка обычно занимает 94 бита, которые занимают 47 периодов силового напряжения и по времени длятся 0,94 секунды. Поэтому работа осуществляется достаточно медленно, но этого вполне хватает для управления освещением, бытовыми приборами и т.д.
Существует еще возможность подключения расширенных кодов для добавления функций. То есть последняя команда передает «включить расширенные коды», и дальше идет еще 256 бит. Это можно использовать в сложных системах, например, в сигнализациях. Но для нас это не особенно актуально, поэтому идем дальше.
