Что имеем:
Анамнез: Прошивал по 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-код.

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