Восстановление прошивки Xerox Phaser 6020

Что имеем:

Анамнез: Прошивал по USB и во время прошивки самого принтера вылетела розетка питания.

Я пытался влить через програматор другие дампы других моделей но в итоге никакого результата.

Я весь интернет вывернул на изнанку чтобы его найти.

Мне тут слили дамп 6022, она не подошла но пк стал определять принтак как устройство, значит нужен именно 6020 дамп.

Файлы:

  • old.bin — дамп поврежденной прошивки 6020
  • xerox_6022_W25Q128.bin — дамп с рабочего 6022
  • файлы для прошивки по юсб:

6020

6022

Откроем файл xrfwdl_p6020.cfg в текстовом редакторе и увидим порядок заливки в принтер:

Попробуем разобраться что внутри этих файлов.

PL1_CT_000800003939.bin

Откроем в HEX-редакторе

Явно видим заголовок и данные в текстовом виде. Первое предположение — это Base64, давайте проверим. Удалим заголовок и пропустим через утилиту base64

Открываем получившийся PL1_CT_000800003939_decode.bin

Уже похоже на бинарные данные. Заглянем в поврежденный дамп по адресу 0x6D0000

Именно оно и есть.

PL1XRM_RM_007.dat

Повторяем манипуляции, аналогично получаем декодированный файл:

Похоже на таблицу шрифтов, проверяем адрес 0x700000, опять попали.

PL1AXRM_AM_000200003939.brn

Декодируем:

Видим список строк, по традиции проверяем адрес 0x6e0000, там, как и ожидалось, те же данные.

PL1XRM_MU_010500.iot

Опять прогоняем через Base64:

Видим что-то странное. Попробуем удалить заголовок и открыть в текстовом редакторе.

Напоминает формат Intel hex, но это не оно. Немного погуглив, узнаем что это Motorola S19 (S-Record).

С помощью утилиты srec2bin конвертируем файл

Получаем что-то такое:

Совпадений в дампе прошивки не найдено, предполагаю что оно записывается в другое место. Значит в нашем случае эти файлы не нужны.

PL1XRM_MU_020600.iot — полностью аналогично предыдущему.

PL1XRM_ES_020003303939.brn

Самый большой файл, предположительно является ядром прошивки.

Декодируем:

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

Есть 2 варианта, можно найти совпадение по концу данных и высчитать смещение. А можно подсмотреть в дампе подобного аппарата 6022, который у нас имеется.

Оба способа показывают одинаковый результат. Вставляем кусок в поврежденный дамп, прошиваем на программаторе — и аппарат завелся и установились драйверы!

всё работает, дрова поставились и определился как 6020 , теперь выдаёт ошибку 009 — 953 ругается на чёрный картридж

Возможно, это результат предыдущих экспериментов, но аппарат мы завели, дальнейшие проблемы — отдельная тема.

PS: Распаковка ядра.

Видим сигнатуру 0x78 0x9C — явный признак zlib/deflate, проверим.

Допишем в начало заголовок 0x1f 0x8b 0x08 0x00 0x00 0x00 0x00 0x00 и поменяем расширение файла на .gz

После чего извлечем обычным WinRar’ом

Он ругнется на контрольную сумму, но поставлена галочка “не удалять файлы”, поэтому все извлечётся корректно.

Получили корректный ARM-код.

Так что, если у кого есть желание поковырять прошивку — все инструменты имеются. Однако, каждый файл подписан, и вам придется либо как-то обходить это (если возможно), либо прошивать модернизированное ПО через программатор, т.к. проверяется оно только на этапе заливки в принтер.

 

Comments are closed.