• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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-свалка поддерживает загрузку оверлеев по сети...
 
Последнее редактирование:
Сверху Снизу