• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Как защитить свою разработку от копирования

Каким образом можно считать с ESP прошивку?
Заливается-то через уарт. А как считать?
На avr можно через SPI скачивать.
А как на ESP?
И если есть такая возможность, то как можно защитить контроллер от считывания.
 

pvvx

Активный участник сообщества
Каким образом можно считать с ESP прошивку?
Заливается-то через уарт. А как считать?
На avr можно через SPI скачивать.
А как на ESP?
И если есть такая возможность, то как можно защитить контроллер от считывания.
Никак. В ESP8266 встроена система считывания flash, памяти и ROM. Встроена в ROM-BIOS по старту. Чип создан для открытого ПО.
 
Никак. В ESP8266 встроена система считывания flash, памяти и ROM. Встроена в ROM-BIOS по старту. Чип создан для открытого ПО.
Ну а если хоть какая-то область памяти, которая уникальна.
К которой можно привязать прошивку.
Вроде как мак адрес уникален на каждом модуле.
Да. Его можно менять. Но после сброса он опять возвращается к изначальному.
И что храниться в ROM?
Из названия следует, только чтение.
Какие в нём данные?
 

pvvx

Активный участник сообщества
Ну а если хоть какая-то область памяти, которая уникальна.
К которой можно привязать прошивку.
Вроде как мак адрес уникален на каждом модуле.
Есть MAC в OTP и что? :)
Да. Его можно менять. Но после сброса он опять возвращается к изначальному.
Его может и не сменить, но пропатчить вашу прошивку запросто. Можно и перехватить управление по WiFi - там же китай код с тысячами дырок.
И что храниться в ROM?
Из названия следует, только чтение.
Какие в нём данные?
Процедуры работы используемые в SDK и система загрузки. BIOS в компе вам о чем нибудь напоминает?
Одни и те-же вопросы от больных.
Может создать тему: "Сниму любую защиту с ESP8266 за бесплатно."? :)
 
Есть MAC в OTP и что? :)
Его может и не сменить, но пропатчить вашу прошивку запросто. Можно и перехватить управление по WiFi - там же китай код с тысячами дырок.
Процедуры работы используемые в SDK и система загрузки. BIOS в компе вам о чем нибудь напоминает?
Одни и те-же вопросы от больных.
Может создать тему: "Сниму любую защиту с ESP8266 за бесплатно."? :)
Тише будь.
Можно в прошивке сделать что-то типа chek sum и если он не совпадает с тем, который высчитывается от какого-либо значения полученного из ROM то циклить модуль.
Это всё реально. Если не знаешь как - так и напиши. Чё ты умника включаешь, перехватчик управления по wifi?
 
Вопрос можно поставить не в том чтобы не считать прошивку, а чтобы она не работала на другом модуле.
 

pvvx

Активный участник сообщества
Это всё реально. Если не знаешь как - так и напиши. Чё ты умника включаешь, перехватчик управления по wifi?
Именно знаю, по тому и пишу. Но не всё положено знать всем :p
Вопрос можно поставить не в том чтобы не считать прошивку, а чтобы она не работала на другом модуле.
Давайте тот модуль. Сделаю к ему ПО для копирования и создания копий (даже закон не рушу, так-как сам применять не буду :p ). Всё за ваш счет... Так, как ваша прошивка изначально никому не нужна и замена функционала на другой лад пишется быстрее чем вы будете сочинять защиты. Все эти защиты это только болезнь, от которой теряют выручку и время.
 
Последнее редактирование:

Sss

New member
Именно знаю, по тому и пишу. Но не всё положено знать всем :p
Давайте тот модуль. Сделаю к ему ПО для копирования и создания копий (даже закон не рушу, так-как сам применять не буду :p ). Всё за ваш счет... Так, как ваша прошивка изначально никому не нужна и замена функционала на другой лад пишется быстрее чем вы будете сочинять защиты. Все эти защиты это только болезнь, от которой теряют выручку и время.
Интересно другое, ТС добился такой надежности в работе модуля, что собрался выпускать изделия на esp8266 ?
А вообще кто-нибудь видел/встречал в жизни устройства, выпускаемые серийно на esp8266?
 

Tomahawk

New member
Насчёт дырок не знаю, но если поставить пароль разработчика наподобие Hs&dfGusfsa-1!%qerdsf#, это должно несколько помочь. Пока на веб-интерфейс не зайдёшь, устройство не настроено и работать не будет, а к нему идёт пароль, который знает только тот, кто обладает исходниками. Как взломать такую систему?

Sss, ну допустим я добился стабильной работы модуля в своём применении, серийно не выпускаем, потому что модули только для внутреннего потребления, но работает прекрасно уже несколько месяцев. Так что путь есть )
 

Vitaly

Member
что-то похоже вы перемешали сетевой взлом и копирование прошивок с физ доступом к есп
 

Tomahawk

New member
Поясню свои мысли. Flash можно легко скопировать и она не защищена, но ведь можно попытаться усложнить взломщикам жизнь :) Вижу 2 пути как скопировать изделие: 1) мы просто копируем программу с flash на другой модуль, и он тут же будет работать, потому что защиты нет даже элементарной. 2) либо мы копируем программу из flash позаимствованного модуля на свой модуль, это у нас получается, потому что esp8266 нам это позволяет, о чём собственно и написано в #2. Далее пытаемся подключиться к точке доступа ESP, но Wi-Fi требует пароль. Теоретически взламываем пароль, используя некие дырки (потому что нормальный сложный пароль простым перебором не взломаешь). Хорошо, например, получилось. Заходим на веб-интерфейс, а там нас спрашивают "введите код для разрешения работы модуля", мы его не знаем. Предполагается, что это одноразовый пароль, который мы должны ввести, чтобы программа в принципе начала заниматься полезными делами, после ввода он записывается в ПЗУ один раз и больше мы с ним не столкнёмся (своеобразное разрешение от разработчика, ведь далее модулем можно будет спокойно пользоваться). Пришли в тупик, программа вроде бы есть, даже скопирована, но не работает - остаётся анализировать машинный код.

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

pvvx

Активный участник сообщества
Хорошо, например, получилось. Заходим на веб-интерфейс, а там нас спрашивают "введите код для разрешения работы модуля", мы его не знаем. Предполагается, что это одноразовый пароль, который мы должны ввести, чтобы программа в принципе начала заниматься полезными делами, после ввода он записывается в ПЗУ один раз и больше мы с ним не столкнёмся (своеобразное разрешение от разработчика, ведь далее модулем можно будет спокойно пользоваться).
Вот эту версию с уже работающим кодом в flash и скопируют обычными путями.
Для взлома более сложной версии все привязки найдут сразу - ведь у людей, озабоченных защитами, используется стандартный китай-SDK, а он хорошо разбирается в IDA (на автомате) из-за привязок хоть к то-же ROM-BIOS.
 

uanik

New member
А если использовать например, в Arduino IDE WiFi.macAddress(mac)?
И сравнивать его с забитым в скачанной прошивке?
 

pvvx

Активный участник сообщества
А если использовать например, в Arduino IDE WiFi.macAddress(mac)?
И сравнивать его с забитым в скачанной прошивке?
У CPU ESP8266 есть механизм защиты и можно переназначить что угодно.
Грузите с сайта шифрованные данные на модуль, после передачи своего личного пароля. Всё как в обычной почте - её принимает любой комп, но пароль и ник у пользователя один и не знание его не дает работать с почтой.
В итоге интерфейс к модулю будет транслироваться через ваш сайт и не работать у того, у кого нет пароля и ника.
А железки хоть укопируйтесь.
Автономное устройство вскрывается без проблем. Т.е. судьба больных - подвязываться на интернет и платить за хостинг спец. сервера. :p
Если повесите внешнюю микруху шифрования типа AT88SC0104CA, то это тоже эмулируется аппартно CPU через его защиту. :p
Чем дороже будет устройство - тем хуже будут покупать. А если функциональность кому понравится, то больше шансов получить на рынке аналог значительно дешевле, без ваших кодов и защит.
И тут даже патентование ваших решений не спасет, если это понравиться крупной корпорации, а вы не крупный игрок на мировом рынке. Просто нарисуют новый патент, составленный другими словами :p
Из опыта могу сказать, что устройство должно стоить ниже сборки с закупкой по отдельной детальке и если что-то совсем новое и нужное многим, то срок у вас не более полтора года до выхода замены вашей системы у крупных корпораций, пусть даже хуже реализованных и требующих более дорогое железо, но ваше уже покупать никто не будет. “Куй железо, пока горячо” называется. Не успел, стормозил на время потраченное на разработку и отладку защит = прогорел. Т.е. всякие "защиты" не сравняться с маркетингом и скоростью развития новой темы. Он главнее и плевать там на "защиты".

Вот пример, что будет с вашими защитами :) : Модуль управления по WIFI RGB лентой на ESP6266
 
Последнее редактирование:

sav-13

Member
Интересно другое, ТС добился такой надежности в работе модуля, что собрался выпускать изделия на esp8266 ?
А вообще кто-нибудь видел/встречал в жизни устройства, выпускаемые серийно на esp8266?
Каждая первая WiFi розетка в Китае на ESP8266
Sonoff WiFi Wireless Smart Switch for Smart Home

А вот скажите, знатоки. МАК-адрес во внешней флэш лежит? Если я программатором всю флэш скопирую, мак адрес тоже?
 

pvvx

Активный участник сообщества
Каждая первая WiFi розетка в Китае на ESP8266
Sonoff WiFi Wireless Smart Switch for Smart Home
Это DIY устройство - использование только на свой страх и риск.
В DIY входят все неудачные проекты и разработки всяких фирм. Не выкидывать же напроизведенный товар? Вместо утилизации китайцы их вам продадут, а кто другой ещё на этом заработает.
А вот скажите, знатоки. МАК-адрес во внешней флэш лежит? Если я программатором всю флэш скопирую, мак адрес тоже?
Нет. Он в другой области - в OTP части, доступ только через регистры процессора. Но всегда можно изменить программу. ESP8266 не имеет защиты от считывания даже через себя, а flash - внешняя. ESP-32S - аналогично, то там есть криптование кода в flash - требует немного больше времени для снятия в коде дешифровки, вписывания нужного и обратной свертки... Можно сделать автоматически это всё делающее программу - заявки принимаются, но итого - платно.
 
Последнее редактирование:
Решил собственный вопрос следующим образом.
В прошивке ESP я считываю заводской мак-адрес устройства и при помощи своей логики прогоняю его через определенные математические изменения и получаю 16тибитный ключ.
Потом в Proccesing сделал прогу для генерации такого же ключа.
Что имеем. Клиенту смело отдаётся устройство с наклеенным на него мак-адресом и ключом.
В программе конфигурирования ПЛК на основе ESP8266 нужно ввести ключ, иначе работать логика не будет.
Если три раза ввёл неправильно ключ - то устройство переходит в режим АР и называется GAME OVER.
Кто бросит вызов?))))
Вопрос остаётся - можно ли декомпелировать прошивку и узнать логику определения ключа?
 

pvvx

Активный участник сообщества
Вопрос остаётся - можно ли декомпелировать прошивку и узнать логику определения ключа?
Считывается Flash и вперед - вписывается точка остановки по обращению к области MAC и отдаются значения, считанные с вашего модуля.
Т.е. автоматическая вставка, без участия человека и GAME_OVER не будет. :)
Работайте, работайте, работайте - солнце ещё высоко :)
Когда надоест - обратитесь за платным решением. Плата будет за сервер в инет, которую вы повесите на пользователя, обеспечивающий контроль и загрузку кода в устройства. При этом что там в устройстве - начихать. Если пользователь оплатил 1000 загрузок, то на них может и рассчитывать в любой свой модуль по введенному в них ID или сертификату.
Web-свалка поддерживает загрузку оверлеев по сети...
 
Последнее редактирование:
Сверху Снизу