Сейчас на форуме: Rio, johnniewalker, vsv1 (+6 невидимых) |
eXeL@B —› Крэки, обсуждения —› Распаковка прошивки для принтера |
Посл.ответ | Сообщение |
|
Создано: 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. |
|
Создано: 04 июля 2011 13:04 · Личное сообщение · #2 |
|
Создано: 04 июля 2011 13:19 · Поправил: Alik_5002 · Личное сообщение · #3 Tyra пишет: В чем проблема ? Алгоритм Есть ?Если Вы всё делаете в своей программе, то нуджно правильно реализовать Просчет Контрольной суммы и впихнуть в прогу ! Знаю, что сумма блока по адр. 40078 - 1F0077 должна быть A5A5 (hex). Это чексум16. Не могу реализовать. Помогите, если Вы понимаете в этом. Листинг предоставлю. |
|
Создано: 04 июля 2011 13:36 · Личное сообщение · #4 |
eXeL@B —› Крэки, обсуждения —› Распаковка прошивки для принтера |