В прогах на комп можно программу привязать под конкретное железо,например на сетевую карту, можно ли такое сделать для AVR контроллера, есть ли у них записанный серийник или другой номер,если-да,то как прочитать?
Spider
Nov 27 2009, 07:14
Цитата(D&M @ Nov 27 2009, 13:05)

В прогах на комп можно программу привязать под конкретное железо,например на сетевую карту, можно ли такое сделать для AVR контроллера, есть ли у них записанный серийник или другой номер,если-да,то как прочитать?
Помоему нет. А зачем? Запиши в ЕЕПРОМ свой серийник и фьюзами запротекть его. Воля.
Есть в xmege, есть в FT232, если общаетесь через USB
В простой меге можете в ЕЕPROM записать серийник. Или в память программ. Заведите специальную команду в интерфейсе и читайте на здоровье.
Я во всех программах делаю такую строку:
Version:
.DB __DAY__,__MONTH__,__YEAR__,__HOUR__,__MINUTE__,__SECOND__ ;версия ПО
В это место AVRStudio автоматом пишет дату и время компиляции, есть специальная команда, читающая эти данные и передающая по компорту.
Или проблема глубже и что-то не понимаю?
идея была такая-я даю по инету человеку прошивку, чтобы прошивка работала только на одном контроллере
Вот программа AVR-PROG читает с мк -Device signature - 1E 94 03, я думал,может это номер мк
MSprut
Nov 27 2009, 07:35
Это номер модели микроконтроллера, т.е допустим для всех мега8 он будет одинаковым.
Spider
Nov 27 2009, 07:37
Цитата(D&M @ Nov 27 2009, 13:27)

идея была такая-я даю по инету человеку прошивку, чтобы прошивка работала только на одном контроллере
Вот программа AVR-PROG читает с мк -Device signature - 1E 94 03, я думал,может это номер мк
Это код устройства. Для всех процессоров данного типа он будет одинаковый. Видать у тебя ATMega16
Пишите свой бутлоадер, проверяющий какой-нибудь код в Application section.
Естественно, у каждого бутлоадера (защищенного от чтения и записи) будет свой индивидуальный номер. Бутлоадер считывает его, считывает соотв. код из присланной прошивки (в Application) и при несовпадении просто останавливает работу.
Помимо сигнатуры многие МК архитектуры AVR имеют уникальный серийный номер (Unique Serial Number). Хранится он рядом с сигнатурой, и достается похожими командами.
Вот, например, выдержка из даташита на AT90USB647:
Table 28-6. Signature Row Addressing
Signature Byte Z-Pointer Address
Device Signature Byte 1 0x0000
Device Signature Byte 2 0x0002
Device Signature Byte 3 0x0004
RC Oscillator Calibration Byte 0x0001
Unique Serial Number From 0x000E to 0x0018
Там много знаков - целых 10 байт!
MrYuran
Nov 27 2009, 10:37
Если высылаете голую прошивку, то вся идея яйца ломаного не стоит, ибо при желании легко можно дизассемблировать и найти обращение к разным потайным кодам и быстро всё это дело отколупать. Вот если использовать этот уникальный код для шифрования - тогда другое дело. Тогда без ключа нельзя будет с прошивкой ничего сделать.
arttab
Nov 27 2009, 14:07
если высылается прошивка, то защита только от "дурака".
высылать надо либо прошитые мк или с прошитым загрузчиком (если разные программы пребуются).
А что, есть еще наивные люди, высылающие нешифрованные прошивки? Я когда советовал писать бутлоадер, по умолчанию подразумевал, что он должен быть дешифрующим. Тогда хоть обдизассемблируйся, никаких серийников не вытащишь
Я думал-удалили, оказывается тему сюда перенесли. Похоже, другого способа,чем отправить залоченный мк нет, бутлоадер же тоже сначала зашить надо в мк и отправить сам мк, тогда какой смысл затеи.
Ага, проблема повернулась другим боком...
Тогда писать собственный софт к какому-либо известному программатору, имеющемуся у клиента. И в него положить зашифрованную прошивку с ключом в виде серийника. Имеет смысл, если уже есть наработки и готовые решения, и надо добавить лишь шифрование. В противном случае все-таки контроллер выслать проще и дешевле.
Еще один бешеный вариант- включить в схему ключ iButton-которые для домофонов, они вроде имеют уникальный номер, который записан на корпусе, они стоят недорого и продаются в любом городе,т.е. не дефицит, человек покупает этот ключ,передает мне номер на корпусе,я включаю номер в прошивку и отправляю прошивку ему, и все- прошивку можно использовать только на одном устройстве.Конечно,это защита от дурака,а большего и не надо,кто не дурак-сам напишет программу.
Блин,не пойдет,эти ключи можно клонировать.
D&M
Есть простой метод, но основан на доверии.
Клиенту нужен прошитый проц с вашей прошивкой, но он далеко(почта идёт на оленях) и т.д.
Но у клиента есть инет+программатор+проц , а у вас есть инет + ваша прошивка.
Клиент настраивает обычного или продвинутого пользователя на своём компе, настраивает ему удаленный рабочий стол
и вы удаленно заходите по инету на комп клиента использую его программатор + свою прошивку закрытую заливаете удаленно её в его проц. Всё.
Если клиент не поставит логеров или сниферов, али анализаторов , то и прошивку не получит в чистом виде.
Хотя впн + шифрование может помочь.
Цитата(V_G @ Nov 27 2009, 17:35)

А что, есть еще наивные люди, высылающие нешифрованные прошивки? Я когда советовал писать бутлоадер, по умолчанию подразумевал, что он должен быть дешифрующим. Тогда хоть обдизассемблируйся, никаких серийников не вытащишь
Может, не до конца понимаю технологию. Что мешает залить туда прошивку, читатающую бутлоадер, и дизассемблировать его для начала, потом прошивку? (навеял
aaarrr)
По всей видимости это все же нереально.
Александр Куличок
Mar 24 2010, 02:26
мешает бит защиты чтения из секции бутлоалера. Да и для начала нужно знать ключ шифрования, чтобы бутлоадер позволил залить эту самую "читающую" прошивку.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.