реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Формирование собственного HEX intel файла, существуют ли готовые решения ?
west329_
сообщение Nov 17 2008, 08:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Целью задачи защитить прошивку, ход действий был следующий,
прошивка в виде HEX для контроллера атмега64 проходит через шифрующую случайно сгенерированною матрицу 255 байт. Для упрощения пока была взята матрица в 16 бит. Потом шьется через бутлоад а он выполняет обратное преобразование.

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

Для этого на С была написана простенькая программа основываясь на студенческих лабораторках и конспектах для работы с файлом и строками.

Программа работает следующим образом,
-построчно считываю HEX файл,
-потом в считанной строке начиная с 9 бита считываю 32 ASCCI символа,
-объединяю и перевожу их в 16 бит масив
-прогоняю через матрицу.
-перевожу опять в ASCCI 32,
-запись новой строки на место старой.
-определение crc и запись на место последнего байта

Вопрос такой может существуют уже готовые модули для формирования НЕХ ? или более простой способ. Наставьте так сказать на правильный путь, если нету то будим разбираться с этой. Интересует мнение людей которые работали с подобными вещами.
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 17 2008, 08:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Можно использовать утилиты hex2bin и bin2hex для преобразования в двоичный файл, а с двоичным уже можно делать любые преобразования
Я как-то в загрузчике делал шифрование при помощи RC4, если надо - могу поделиться.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 17 2008, 09:10
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(west329_ @ Nov 17 2008, 14:39) *
-потом в считанной строке начиная с 9 бита считываю 32 ASCCI символа,


Там совершенно необязательно 32 символа. И не все строки являются кодом.

Вот примерчик чтения хекса и заливки его в еепром:
CODE
#define HEX_LINE_DATA (0x00)
#define HEX_LINE_END (0x01)
#define HEX_LINE_BAD (0xFF)


static struct ProgRecord
{
u08 count;
u08 kind;
u16 address;
u08 data[32];
}HexLine;

static u08 csum;

u08 h2b(u08 b )
{
return ((b <= '9') ? (b - '0') : (b - 0x37));
}

u08 read_hex(void)
{
u08 Hb, Lb;

Hb = rs_getchar();
Lb = rs_getchar();

Lb = (h2b(Hb) << 4) | h2b(Lb);
csum += Lb;
return(Lb);
}

u08 read_hex_line(void)
{
u08 i;

// hex line sample:
//:10007B00DFF6804288828C8387F009E0A3B5F036E7

// skip to the ':'
while (rs_getchar() != ':');

csum = 0;

// Number of Bytes.
HexLine.count = read_hex();

if (HexLine.count > 32) goto bad_len;

// Build address Information.
HexLine.address = (u16)read_hex() << 8;
HexLine.address |= read_hex();

// Get Type
HexLine.kind = read_hex();

// Extract the Data Bytes.
for (i = 0; i < HexLine.count; i++)
HexLine.data[i] = read_hex();

// don't forget about the Checksum u08.*/
read_hex();

if (csum) goto bad_cs;

return TRUE;

bad_len:
rs_puts_p("Bad length. Hit esc\r\n");
while (rs_getchar() != 27);
return FALSE;

bad_cs:
rs_puts_p("Bad csum. Hit esc\r\n");
while (rs_getchar() != 27);
return FALSE;
}


void programm_eeprom(void)
{
rs_puts_p("\r\nSend file!\r\n");
while (read_hex_line())
{
if (HexLine.kind == HEX_LINE_END)
{
rs_puts_p("Done!\r\n");
break;
}
if (HexLine.kind == HEX_LINE_DATA && HexLine.count > 0)
if (!at24c256_write(HexLine.address, (u08*)&HexLine.data, HexLine.count))
{
rs_puts_p("Write error\r\n");
break;
}
rs_putchar('.');
}
}


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
west329_
сообщение Nov 17 2008, 09:55
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(gotty @ Nov 17 2008, 12:54) *
Можно использовать утилиты hex2bin и bin2hex для преобразования в двоичный файл, а с двоичным уже можно делать любые преобразования
Я как-то в загрузчике делал шифрование при помощи RC4, если надо - могу поделиться.

Будем очень вам благодарны если поделитесь.

Интересует часть создания hex и опредиление CRC


Всем огромное спасибо, что откликнулись.

Сообщение отредактировал west329_ - Nov 17 2008, 10:06
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 17 2008, 12:12
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(west329_ @ Nov 17 2008, 11:55) *
Будем очень вам благодарны если поделитесь.

Интересует часть создания hex и опредиление CRC
Всем огромное спасибо, что откликнулись.

Тут я вас разочарую. Если для Вас парсинг hex-файла дремучий лес, обходной вариант я предложил в прошлом сообщении, а пример кода - AHTOXA.
Ну а код для шифрования/дешифрования прилагаю. Ограничения для него - длинна ключа 16 байт (сделано для замены операции "остаток от деления" на "побитовое И").
Прикрепленные файлы
Прикрепленный файл  arc4.zip ( 735 байт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 17 2008, 17:02
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Целью задачи защитить прошивку, ход действий был следующий, прошивка в виде HEX для контроллера атмега64 проходит через шифрующую случайно сгенерированною матрицу 255 байт. Для упрощения пока была взята матрица в 16 бит. Потом шьется через бутлоад а он выполняет обратное преобразование.
Это что вы, самого себя пытаетесь обмануть? Что мешает просто скопировать прошивку с вашего контроллера. http://www.semiresearch.com/
Go to the top of the page
 
+Quote Post
west329_
сообщение Nov 18 2008, 11:53
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(uriy @ Nov 17 2008, 21:02) *
Это что вы, самого себя пытаетесь обмануть? Что мешает просто скопировать прошивку с вашего контроллера. http://www.semiresearch.com/


каким образом если лок биты установлены ?
Единственная путя через бутзагрузчик

Кстати существую готовые решения для работы с хекс файлами
кому интересно <iHEX> слово для поиска
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 18 2008, 18:43
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
каким образом если лок биты установлены ?
smile.gif Зря вы не посмотрели ссылку которую я вам дал. Там есть скриншоты вскрытых чипов китайцы по ним даже электрическую принципиальную схему восстанавливают. Стирать маркировку с корпуса тоже бесполезно. Она видимо у всех есть прямо на чипе. На том же сайте вроде продавался девайс за 12 килобаксов который считывает прошивку и с локбитами. На мой взгляд вскрытие чипа более правдоподобно чем существование такого девайса. Хотя кто знает...
Go to the top of the page
 
+Quote Post
west329_
сообщение Nov 19 2008, 07:14
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(uriy @ Nov 18 2008, 22:43) *
smile.gif Зря вы не посмотрели ссылку которую я вам дал. Там есть скриншоты вскрытых чипов китайцы по ним даже электрическую принципиальную схему восстанавливают. Стирать маркировку с корпуса тоже бесполезно. Она видимо у всех есть прямо на чипе. На том же сайте вроде продавался девайс за 12 килобаксов который считывает прошивку и с локбитами. На мой взгляд вскрытие чипа более правдоподобно чем существование такого девайса. Хотя кто знает...


Ну тогда давайте не лочить контроллеры вобще smile.gif

uriy вы взрослый человек, а в сказки верите, спросите на форуме, хоть один пользователь пользовался такими услугами ?

ИМХО лохотрон, я непредставляю себе как такое можно сделать, да и с таким количеством контроллеров, это как минимум надо чтоб с каждой фирмы микрочип, атмел..., там было по пару первокласных инженеров со всеми закрытыми документациями. И оборудовани не на один 10К$
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd September 2025 - 17:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016