Сейчас на форуме: tyns777, cppasm, dutyfree (+7 невидимых)

 eXeL@B —› Вопросы новичков —› CRC файла прошивки
Посл.ответ Сообщение

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2017 12:18 · Поправил: rentast
· Личное сообщение · #1

Имеется камера с прошивкой Beward CD120 , необходимо перешить в неё прошивку от Beward N120 железо 100% идентичное. При прошивке в лоб через web жалуются на совместимость версий, открыл WinHEX изменил название на родное, теперь при прошивке жалуется на "Header CRC error". Прописал с помощью PEiD CRC оригинального файла, но ошибка не ушла. Очевидно проверяется не весь файл а какой-то блок, как понять какой?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 28 марта 2017 12:29
· Личное сообщение · #2

Написано ж Header. Возьми несколько прошивок от одной камеры и посмотри есть ли фиксированная часть в начале. Возможно, найдешь размер заголовка. Затем натрави на заголовок различные алгоритмы контрольной суммы и посмотри не найдется ли такой что дает КРК из этих заголовков.
Если повезет, то пересчитаешь КРК на нужной прошивке и запорешь свой фотоаппарат.

-----
старый пень




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 28 марта 2017 12:45
· Личное сообщение · #3

..И это уже не в первый раз, когда типы начинают утверждать, что железо стопудово идентичное - а потом внезапно оказывается, что на более новой железке какой-нибудь регистр другого размера, или памяти вдвое больше, а так всё-всё идентично. Вплоть до кнопок..




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 01 апреля 2017 01:46
· Личное сообщение · #4

rentast пишет:
Header CRC error

Кто выдаёт это сообщение? Какая-то специальная программа-прошивальщик или само устройство?
Ответ поможет определиться с целью для дальнейшего исследования.



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 апреля 2017 20:38 · Поправил: rentast
· Личное сообщение · #5

r_e сравнил 3 прошивки: 2 от устройства 1 от желаемой прошивки, все они имеют немного отличий друг от друга в одних и тех же местах в начале, потом тело прошивки отличаются полностью. Т.е. предположение что заголовки в прошивках одной версии модели должны быть одинаковы не верно.



Добавлено спустя 6 минут
-=AkaBOSS=--=AkaBOSS=- пишет:
Кто выдаёт это сообщение? Какая-то специальная программа-прошивальщик или само устройство?

Сообщение выдает web морда камеры, есть так же программа поиска камер Beward, в функциях которой есть возможность прошить, ответ там идентичный.

Ещё попробовал скопировать блок который с минимальными отличиями от оригинала, донору. Вышла ошибка "content crc check error", возможно кроме заголовка проверяется ещё и тело прошивки?



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 02 апреля 2017 21:39
· Личное сообщение · #6

+34h DWORD скорее всего размер
+200h - код для ARM

Так что остается 6 байт по смещению +1F8.
Полагаю 4 из них CRC от остальной прошивки и 2 - сумма байт от заголовка




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 03 апреля 2017 01:53
· Личное сообщение · #7

0x350D - начало gzip потока. Там внутри какие-то потроха и еще (как минимум) один gzip.
И вот там внутри болтаются строки "#Info: CRC check", "#Error: Header CRC check error", "#Error: Content CRC check error" и им подобные.
И там же рядом вшита стандартная таблица CRC32 (от полинома 0xEDB88320).
Подробнее отреверсить не могу, так как не удалось определиться с базовым адресом - два архива, фиг пойми куда что распаковывается.
Результат CRC тоже свести не получилось.. По идее, байтовый порядок меняться не должен, но вычисления не сходятся. Предполагаю, что начальный хэш может отличаться от 0.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 03 апреля 2017 11:52 · Поправил: Veliant
· Личное сообщение · #8

-=AkaBOSS=- пишет:
И вот там внутри болтаются строки "#Info: CRC check", "#Error: Header CRC check error", "#Error: Content CRC check error" и им подобные.

Внутри второго gzip'а лежит ELF /usr/sbin/fupgarde. Вот в нем эти строки и есть.

Читает первые 0x1F4 байт и считает от них модифицированным CRC. Начальная константа - 0. Сравнивает полученное с DWORD'ом по смещению 0x1F8

Code:
  1.       hdrPtr = hdr;
  2.       hdrCrc = 0;
  3.       do
  4.       {
  5.         v9 = *hdrPtr++;
  6.         hdrCrc = crc_table[(unsigned __int8)(hdrCrc ^ v9)] ^ (hdrCrc >> 8);
  7.       }
  8.       while ( hdrPtr != &hdr[0x1F8] );
  9.       if ( hdrCrc != *(_DWORD *)&hdr[0x1F8] )


Далее по такому же алгоритму считается CRC от смещения +200h. Количество байт указано в заголовке по смещению +34h.
Сравнивается с DWORD'ом по смещению 0x1FC

Т.е. в заголовке два CRC - самого заголовка и данных

r_e пишет:
А в чем модифицированность ЦРЦ? На первый взгляд стандартный црц-32. Разве что IV не -1

туплю =)

| Сообщение посчитали полезным: -=AkaBOSS=-

Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 03 апреля 2017 12:16
· Личное сообщение · #9

Veliant
А в чем модифицированность ЦРЦ? На первый взгляд стандартный црц-32. Разве что IV не -1

-----
старый пень





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 04 апреля 2017 00:14 · Поправил: -=AkaBOSS=-
· Личное сообщение · #10

Veliant пишет:
Внутри второго gzip'а лежит ELF /usr/sbin/fupgarde. Вот в нем эти строки и есть.

да, я уже тоже разобрался с форматом той свалки)

r_e пишет:
А в чем модифицированность ЦРЦ?

1. нет инверсии бит хэша перед/после прохода по байтам
2. при ксоре со значением из таблицы, используется хэш _арифметически_ сдвинутый вправо, в то время как обычно применяется логический сдвиг

Code:
  1. LDR     R12, =CRC_TABLE
  2. ADD     R0, R7, #0x1F8
  3. MOV     R3, R7
  4. MOV     R2, #0
  5.  
  6. loc_A774:
  7. LDRB    R1, [R3],#1
  8. EOR     R1, R2, R1
  9. AND     R1, R1, #0xFF
  10. LDR     R1, [R12,R1,LSL#2]
  11. CMP     R3, R0
  12. EOR     R2, R1, R2,ASR#8    // R2 = R1 ^ (R2 sar 8)
  13. BNE     loc_A774
  14.  
  15. LDR     R1, [SP,#0x700+readbuf+0x1F8]
  16. CMP     R2, R1


rentast
проверяйте, пропатчил заголовок + CRC

forest911 пишет:
Файл был удален

перезалил

| Сообщение посчитали полезным: rentast

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 апреля 2017 10:55
· Личное сообщение · #11

Всем спасибо за участие, особенно -=AkaBOSS=-, прошился, камера работает!



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 сентября 2017 15:16
· Личное сообщение · #12

Добрый день! Прошу помощи нужна прошивка. Есть Beward CD120 , необходимо перешить в неё прошивку от Beward N120

Добавлено спустя 0 минут
Файл был удален так как давно это было

Добавлено спустя 3 минуты
rentast-=AkaBOSS=-Добрый день! Прошу помощи нужна прошивка. Есть Beward CD120 , необходимо перешить в неё прошивку от Beward N120



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 09 сентября 2017 10:59 · Поправил: unknownproject
· Личное сообщение · #13

Добрый день! Прошу помощи нужна прошивка. Есть Beward CD120 , необходимо перешить в неё прошивку от Beward N120
Если их размеры и функциональная нагрузка совпадают, то возможность перепрошивки может быть успешна. В другом случае - получаете кирпич и тогда только выпаивать и перепрограммировать. Или искать сервисные утилиты от производителя, предназначенные для инженеров, что будет сделать весьма трудно.
И уж точно никогда не шить через вебморду, так как очень высока вероятность порчи данных при таком методе прошивки (микроразрывы с низкой пропускной способностью мелких чипов весьма чреваты).

PS.Функционал может по мере выпуска новой прошивки расширяться, так что это тоже надо учитывать.

-----
TEST YOUR MIGHT



 eXeL@B —› Вопросы новичков —› CRC файла прошивки
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати