Pull to refresh

Comments 25

Вообще протокол там довольно забавный. В самом начале (до передёргивания рычажка) пульт флудит на адрес abacadaeaf пакетом, содержащим новый адрес (в моём случае это был f52f0c00a2), который будет использоваться в дальнейшем. Я так понял, этот адрес должен генерироваться случайным образом, но нормальный seed не сделали и поэтому генерируется всё время один и тот же. В процессе ревёрсинга наткнулся на кусок сорцов, который объясняет многое, в том числе вычисление контрольной суммы: http://www.deviationtx.com/media/kunena/attachments/3559/syma_try1.txt

С детектированием чипа возникло больше всего проблем: я ревёрсил с помощью анализа сигналов на SPI линиях чипа и там встречались команды, которых не было в даташите nRF24L01+. Каким-то чудом по константам нагуглил исходник, приведенный выше, а по нему уже нашёл наименование чипа и даташит на него.

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

В Syma используется чип BK2423 который содержит второй банк регистров, которые активируются командой 0x53, к оригинальному nRF это не имеет никакого отношения, именно их Вы наблюдали на шине SPI
DeviationTX – проект opensource пульта, который позволяет не ревёрсить протоколы конкретных дронов, мы надеялись на то, что кто-то из участников конкурса его найдет)
Используемые каналы в данном случае довольно легко детектируются с помощью флага детектора несущей из регистра RPD: у меня даже есть скетч, выдающий «водопад», с ним всё более чем наглядно видно.

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

Не надо сразу о плохом. Я бы тоже развернулся и ушёл, просто здраво оценив затраты времени на возню с SDR и реверсом протокола — и сколько таких дронов я мог бы купить за зарплату на основной работе за то же время. Оптимизация усилий, видите ли.


P.S. Это не значит, что я такой тормоз — это значит, что у меня такая зарплата. ;)


P.P.S. А для удовлетворения исследовательского зуда мне достаточно прикинуть, что решение существует.

UFO just landed and posted this here
Лично я хотел бы принять участие.

Ну так и приняли бы? Автор как раз и жалуется, что мало народу приняло участие. А я говорю, что из этого не следует, что способных и любопытных мало (а я напоминаю, что у способных могут быть другие приоритеты).

Вы неправильно поняли посыл, мы не жалуемся, а констатируем факт, который подтверждает то, что безопасность мира IoT держится на отсутствии внимания к нему.
Вы, конечно же, относитесь к способным и судите по собственному примеру? :)
Жаль что вы все измеряете в бабках, таких бы способных людей да побольше, вот жизнь бы была… куда ни глянь, везде разработчики.
А то люди ерундой занимаются, могли бы зарплату получать.

Вы не поверите, но в некоторых {странах, компаниях} существует определённая положительная корреляция между способностями и зарплатой.


(Места, где корреляция отрицательная, всем известны — спасибо Мизулиной).

Дада, конечно же вы живете в правильной стране и правильной компании. Верно?
Можно вопрос? А зачем же вы сидите на хабре со своими способностями и зарплатой, вам же за это не платят :)
А зачем же вы сидите на хабре со своими способностями и зарплатой

Ну не везде же я работать должен, могу я где-то отдыхать?

Воот, а некоторые отдыхают угоняя дронов и реверся нафиг ненужные протоколы.
n1tra не читатель, а писатель?

Напоминаю мой первый коммент в ветке:
Заинтересовавшихся было гораздо больше, но многие, узнав, что ломать нужно не Wi-Fi, разочарованно уходили. Многие боятся браться за что-то новое и непонятное
Не надо сразу о плохом. Я бы тоже развернулся и ушёл, [...] А для удовлетворения исследовательского зуда мне достаточно прикинуть, что решение существует.
Я и говорю, что не все реверсят протоколы, чтобы отдохнуть; некоторые (мне кажется, что большинство) реверсит протоколы из любопытства, а отреверсив штук 5, наработав методологию и поняв, что большинство «нафиг ненужных протоколов» пишутся иНдиотами не требуют особого интеллектуального напряжения для взлома, просто (как и я) оптимизируют усилия — «а, я нечто подобное уже видел; надо будет — взломаю, а пока — только время зря тратить.»
Если все понимаете правильно, зачем намеки на зарплату, занятость и проживание в другой стране? Тупо почесать ЧСВ?
Думаю все уже поняли что вы-крутой опытный девелопер живущий за бугром, гребущий бабло и не занимающейся хренью, не нужно больше намеков, пожалуйста. Закончим флуд, ок? :)
Нет, я указал автору на его неверное допущение:

> Многие боятся браться за что-то новое и непонятное

И сказал, что, наоборот, дело в том, что многим просто лень браться за старое и многократно уже повторённое.
Одно другому не противоречит. Казалось бы, при чем здесь вы. Было приятно пообщаться, правда ;-)
DJI так ломаются? Как они данные передают?
DJI Lightbridge имеет три логических канала (управление, видео, телеметрия), и два физических (туда и обратно), в трех словах не рассказать как они передают данные. Кроме этого у них есть и другие уязвимые места.
UFO just landed and posted this here

Это Вы ещё с X10 не возились. Я ещё лет 5 назад после близкого знакомства со всей этой "начинкой умного дома" зарёкся что-то подобное использовать в ближайшие 20 лет, потому что уровень иНдиотизма её разработчкиков (и полного игнорирования проблем как безопасности, так и совместимости) зашкаливает до невообразимых высот (знаменитое "хренак, хренак — и в продакшн"), и не вижу, чтобы положение улучшалось.

Сам лениво занимаюсь конструированием передатчика, совместимого с turnigy 9x, для вертолёта WLtoys v977.
Протокол расписан в интернете, все исходники есть в проекте Deviation. В этом же проекте есть и исходники протокола для Syma X5C. Понимаю, что это неспортивно, но можно же было погуглить «Syme X5C protocol», как в своё время сделал я, когда искал протокол для вертолёта и набрёл на проект Deviation.
На практике 4-х каналов для переключения хватает? Я делаю пульт для р/у авто, сделал рандомное переключение по 100 каналам с первоначальной инициализацией. Т.е. тру рандом канал на передатчике, инициализация приемника и переключение с первоначальным randomSeed, при потере пакета система самовосстанавливается. На прогоне на «стенде» при практически пустом эфире получалась потеря 1 пакета раз в 15-20 минут при частоте отправки 50Гц. В принципе меня устраивает, только думаю не усложнил ли я систему?
Несколько каналов делают для улучшения помехоустойчивости, их количество не так важно по сравнению с разносом каналов подальше друг от друга так, чтобы при активной работе одного канала WiFi все продолжало работать.

Главный вопрос при реализации тру рандома — алгоритм восстановления, для подобных систем потеря 90% пакетов не должна приводить к потере управления. Лучше использовать больше каналов, широкий диапазон, непредсказуемую схему переходов, кодирование с исправлением ошибок, передачу с максимально возможной частотой, ну и конечно же — шифрование.
Sign up to leave a comment.