Сейчас на форуме: Rio, johnniewalker, vsv1 (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Распаковка прошивки для принтера
Посл.ответ Сообщение

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

Создано: 04 июля 2011 12:03
· Личное сообщение · #1

Люди нужна помощь. Кто в этом шарит? Имеется файл прошивки для принтера. Я его уже распаковал л zlib. Ядро не закриптовано! Нашел цифры, т.е. серийный номер,поменять их и подсчитать checksum после обратной запаковки.
Вот что у меня получилось.
Запакованный блок предворяется префиксом $ZIP. После него - 8 байт не знаю чего. На длину сжатых данных не похоже, проверял это. хЬ - это стандартное начало (префикс) для ZLib со стандартным уровнем сжатия. Для уровней сжатия "быстрый" и "максимальный" префикс будет другой.Открываю файл (через TFileStream), ищу в нем вхождение $ZIP и чтобы после этого через 8 байт был префикс хЬ. Если так - всё последующее считаю архивом. Прохожу последовательно дальше по файлу, ищу конец этого архива (конец определяю, как начало "мусора" - длинная последовательность из $FFFF$FFFF. Найдя начало мусора, отступаю назад на 33 байта (не помню уже почему, долго возился с этим вопросом, но эти 33 байта к архиву не относятся).Копирую из FileStream в MemoryStream участок от начала архива до конца.Разархивирую в том же memoryStream .Ищу в нем старый серийник, заменяю на новый, меняю после серийника checksum. Архивирую MemoryStream. Записываю на тот же участок в FileStream, с которого считал. Если конечный архив получился короче, чем изначальный, то дополняю до определенного ранее конца архива "мусором" из $FFFF.
Самое сложное подсчет checksum!!! Никак не получается правильно подсчитать.А неправильную контрольку принтер не принемает=(. Кто может заняться этим вопросом. Помогите!!!

Могу предоставить листинг на Delphi.



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

Создано: 04 июля 2011 13:04
· Личное сообщение · #2

Alik_5002 пишет:
Самое сложное подсчет checksum

В чем проблема ? Алгоритм Есть ?
Если Вы всё делаете в своей программе, то нуджно правильно реализовать Просчет Контрольной суммы и впихнуть в прогу !



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

Создано: 04 июля 2011 13:19 · Поправил: Alik_5002
· Личное сообщение · #3

Tyra пишет:
В чем проблема ? Алгоритм Есть ?Если Вы всё делаете в своей программе, то нуджно правильно реализовать Просчет Контрольной суммы и впихнуть в прогу !


Знаю, что сумма блока по адр. 40078 - 1F0077 должна быть A5A5 (hex). Это чексум16. Не могу реализовать. Помогите, если Вы понимаете в этом. Листинг предоставлю.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 04 июля 2011 13:36
· Личное сообщение · #4

Alik_5002 пишет:
Это чексум16.

В google вбей Delphi CRC16

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh



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


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