Как обновить прошивку hp

Обновлено: 21.11.2024

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

    • Часть 1. Просто напечатайте меня
    • Часть 2. Анализ S-записей с помощью S-записей
    • Часть 3. Переход от NAND к ОЗУ через раздвижные окна *Скоро!*
    • Часть 4. Инструменты и процесс *Скоро!*

    Фон

    Придет время, когда каждому человеку потребуется реконструировать обновление микропрограммы HP. Это время пришло для некоторых из нас в JSOF за последние несколько месяцев. Это часть более крупного исследовательского проекта по безопасности, который будет выпущен в ближайшие месяцы. Нам нужно было иметь возможность реконструировать прошивку HP, и мы решили сделать это, просмотрев файл обновления. Мы написали инструменты и документацию, которые помогут нам пройти путь от файла обновления принтера в формате .rfu до прошивки, правильно отображаемой в проекте Ghidra.

    Формат файла встроенного ПО был частично задокументирован во многих местах различными исследователями и компаниями в разное время, включая тщательный анализ исследования Check Point и основную официальную документацию для внешнего уровня кодирования. В нашем исследовании мы столкнулись с отсутствием актуальной и достоверной информации. Мы также не нашли каких-либо инструментов для распаковки и загрузки содержимого пакета обновлений в карту памяти для обратного проектирования. В итоге мы написали собственный инструментарий и задокументировали основные структуры и кодировки.

    При чтении этого документа становится очевидным, что многоуровневое кодирование/упаковка прошивки довольно запутанная и случайная. Мы не уверены, является ли это какой-то формой обеспечения безопасности через неизвестность или кучей устаревших реализаций, построенных друг на друге, как древние руины. В цветах и ​​формах камней можно увидеть противоборствующие политические группировки, которые со временем доминировали в корпоративной империи принтеров.

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

    Отказ от ответственности Вся эта информация верна для используемого нами принтера и используемой версии микропрограммы. Мы использовали HP OfficeJet Pro 8720 с файлом обновления прошивки ojpro_8720_1919B_05102019.rfu .

    Как получить прошивку HP

    Если вы сомневаетесь, проанализируйте процесс обновления принтера с помощью Wireshark, чтобы найти правильную ссылку для загрузки и версию микропрограммы.

    Обновление прошивки

    Обновление прошивки состоит из следующих основных этапов:

    1. Распаковка и декодирование пакета обновления (с расширением .rfu) для создания флеш-образа.
    2. Образ флэш-памяти загружается в память при каждой загрузке принтера. Этот этап важен, потому что он позволяет нам загружать в память различные разделы для реверс-инжиниринга. Это также позволяет нам сжимать части данных и кода на диске.

    Формат RFU (Remote Firmware Update)

    Прошивка сжата и закодирована в следующих высокоуровневых слоях:

    1. Формат языка заданий принтера (PJL) — документированный формат, описывающий задания печати и являющийся расширением формата языка команд принтера (PCL).
    2. Проприетарная схема кодирования, состоящая из двоичной версии преобразования двоичного кода в текст, аналогичного формату SREC компании Motorola. После декодирования этого этапа у нас есть необработанные данные, записанные во флэш-память NAND (как в нашем случае).
    3. Проприетарный формат описания прошивки, состоящий из таблицы разделов с описаниями разделов, структурами и метаданными.
    4. Разделы, содержащие данные и код прошивки. Многие разделы сжаты с использованием одной из нескольких поддерживаемых схем сжатия.

    Языки PJL и PCL

    Формат файла HP RFU содержит команды языка заданий принтера (PJL), развернутые на принтере, как обычное задание на печать (вы просто распечатываете его!). Компания HP разработала язык заданий принтера (PJL), позволяющий переключать языки принтера (также называемые персональными) на уровне задания. Приложение, поддерживающее PJL, может распечатать одно задание с использованием PCL, а другое задание с использованием другого языка принтера (например, PostScript).

    В нашем случае в начале файла обновления отображаются следующие команды PJL:

    Первое, на что следует обратить внимание, — это особая последовательность %-12345X (где представляет escape-код в ASCII, шестнадцатеричный код 1B, далее пишется ) в начале файла. последовательность, известная как команда универсального языка выхода (UEL), заставляет принтер выйти из активного языка принтера и вернуть управление на уровень PJL, который является уровнем управления по умолчанию. Эта команда также появляется в конце файла.

    Из этого заголовка мы можем узнать модель принтера, для которого предназначена эта прошивка, а также версию прошивки и дату сборки/выпуска кода. HP использует недокументированную команду UPGRADE PJL и значение параметра SIZE, чтобы указать размер RFU-файла в байтах.

    Команда ENTER используется для выбора определенного языка принтера для печати последующих данных. Обычно это PCL или PostScript, но в нашем случае выбран язык FWUPDATE. Неудивительно, что этот язык используется для процесса обновления прошивки и недокументирован. Крайне важно понимать этот язык, чтобы извлечь образ прошивки. Еще одно указание на то, что это нестандартный язык принтера, можно увидеть после команды ENTER — есть команда сброса принтера ( E ), за которой следует сообщение Это устройство не поддерживает FWUPDATE! . Это должно быть напечатано на принтерах, которые не поддерживают этот метод доставки обновлений микропрограммы.

    При изучении двоичного файла RFU можно увидеть шаблон *b, охватывающий весь файл. Поиск некоторой информации в Интернете привел нас к техническому справочному руководству PCL, а точнее к главе о растровой графике (глава 6 технического справочного руководства по цвету PCL 5).

    Растровая графика

    Растровое изображение – это изображение, состоящее из точек (также известное как растровое изображение). Каждая точка представлена ​​битом (0 — ничего не печатать, 1 — печатать точку). Принтер может печатать растровые изображения с помощью растровых команд, которые являются частью PCL. Изображение доставляется на принтер в виде строк точек, каждая строка представляет собой полосу растрового изображения.

    Вот пример простого растрового изображения (0 заменен точкой для наглядности):

    Чтобы принтер распечатал растровое изображение, должна следовать определенная последовательность команд. Эти команды определяют область растра (высоту и ширину), а также разрешение и, возможно, информацию о цвете. Это относительно сложный формат и достаточно задокументирован (см. раздел «Дополнительная литература»), поэтому мы не будем подробно останавливаться на каждой его части, а только на соответствующих частях для распаковки прошивки.

    На высоком уровне важная для нас последовательность команд выглядит следующим образом, где каждая строка является командой:

    Команды "Высота растра" и "Ширина растра" определяют растровую область изображения. Но какова высота и ширина образа прошивки? Сначала кажется странным, что эти команды используются. В нашем случае высота не указана (подразумевается 0), что означает, что она игнорируется. Ширина была установлена ​​равной 16384, и она определяет длину строки в растровом изображении. В целях экономии места принтер автоматически заполняет любую неполную строку (т. е. строку, длина которой меньше указанной ширины) нулевыми байтами до полной длины.

    Команда Y-Offset пропускает целые строки, поэтому нет необходимости отправлять пакет строк, состоящих только из нулей. Эта команда не имеет отношения к распаковке прошивки.

    Команда «Перенести растровые данные» указывает длину, за которой следует двоичный двоичный объект, который сжимается с использованием метода сжатия, заданного командой «Сжатие растра». Используется несколько методов сжатия, некоторые из них описаны ниже.

    Синтаксис команды PCL

    Теперь, когда у нас есть общее представление о файловой структуре RFU, нам нужно отделить эту растровую графику и слои PCL. Для этой задачи нам нужно понять основной синтаксис команд PCL и, в частности, команды растровой графики.

    Команды PCL представляют собой escape-последовательности, указанные в формате ASCII, и состоят как минимум из двух символов. Первый символ — escape-символ, . Все, что идет дальше, интерпретируется как команда принтера.

    Общий формат команды принтера следующий:

    Первая команда PCL сразу после строки Это устройство не поддерживает FWUPDATE!

    Эта команда настолько плоха (то есть сложна), насколько это возможно, поэтому давайте разберем ее вместе. Остальные команды должны быть относительно просты для понимания.

    Знак звездочки (*) известен как параметризованный символ. Это тот, который используется всеми командами PCL в файле RFU, за исключением команды сброса принтера и UEL. Для нас не имеет значения точное значение этого символа, важна только его синтаксическая роль.

    Символ r – это групповой символ. Его значение также не имеет отношения к нашей цели

    Символ t — это символ параметра, определяющий высоту растра. Поле значения для этого символа должно появиться перед символом и отсутствует. Поэтому подразумевается значение 0.

    После символа t мы видим числовое значение 16384 (в десятичном формате), за которым следует символ параметра s . Символ s определяет ширину растра.

    Наконец, мы видим заглавную букву A, которая указывает как на конец этой управляющей последовательности, так и на конец команды «Запустить растровую графику».

    Подводя итог, можно сказать, что эта комбинированная escape-последовательность определяет высоту растра (0), ширину растра (16 384) и маркер для начала растровой графики. Его можно рассматривать как сокращение для последовательного написания этих команд (обратите внимание на буквы T и S в верхнем регистре, которые теперь играют роль завершающего символа):

    Методы сжатия

    В целях экономии места двоичные данные команды «Передача растровых данных» часто сжимаются. Чтобы указать, какое сжатие используется, используется команда «Установить метод сжатия». Синтаксис команды:

    Теперь мы знаем, как анализировать эту команду. HP поддерживает несколько методов сжатия, каждый из которых определяется уникальным номером значения:

    Значение Сжатие
    0 Незакодированные
    1 Кодирование длины цикла
    2 Тегированные Формат файла изображения (TIFF) версия 4.0
    3 Дельта-строка
    4 Пустая строка
    5 Дублирующаяся строка/Адаптивное сжатие
    < /p>

    Методы сжатия описаны в техническом справочном руководстве HP PCL (см. раздел «Дополнительная литература»).

    В нашем образце RFU используются следующие методы сжатия: Unencoded (0) и TIFF (2). Первое тривиально, поэтому мы опишем только второе.

    Кодирование файла изображения с тегами представляет собой комбинацию кодирования длин серий (RLE) и полного отсутствия кодирования. Каждой последовательности байтов шаблона предшествует управляющий байт. Этот управляющий байт определяет, используем ли мы RLE или вообще не используем кодирование.

    Управляющий байт интерпретируется как знаковый байт (представленный дополнением до 2 секунд).

    • Неотрицательный управляющий байт c со значением от 0 до 127 указывает, что следующие байты c+1 следует интерпретировать буквально.
    • Отрицательный управляющий байт -c (от -127 до -1) указывает, что следующий байт должен быть реплицирован c+1 раз.
    • Контрольное значение -128 означает NO-OP.

    Взгляните на следующие сжатые данные для строки JSOFrulez. 111111111 :

    Поле значения указывает количество байтов в передаче (в сжатой форме) и может быть любым числом в диапазоне от 0 до 32767.

    Изначально эти две команды использовались для предоставления информации о пикселях для принтера HP. Метод W является более старым из двух и используется для доставки монохромных растровых данных. Метод V используется для отправки цветных пикселей плоскостью в соответствии с выбранной цветовой палитрой. Например, если мы используем RGB, то первая, вторая и третья плоскости соответствуют красному, зеленому и синему цветам соответственно.

    В нашем случае эти команды используются для указания количества следующих байтов (в сжатой форме). Следует отметить, что команда Передача растровых данных по плоскости ('V') заполняется нулями, если количество байтов после распаковки меньше ширины растра, в то время как Передача растровых данных по строке ('W') не выполняется. заполнены нулями. Такое поведение уникально для языка FWUPDATE, и оно было источником незаметных ошибок в нашем распаковщике.

    Собираем все вместе

    Информации было много, поэтому давайте закончим этот пост простым примером. Мы собираемся закодировать строку JSOFrulez. 111111111 с использованием языка FWUPDATE:

    Разбивка:

    1. *rt32sA устанавливает высоту 0 и ширину 32, а также сигнализирует о начале растровой графики.
    2. *b+0Y ничего не делает, но это обязательно.
    3. *b2m14V указывает TIFF в качестве метода сжатия и указывает, что следующие 14 байтов должны быть распакованы. Поскольку длина распакованных данных равна 24 (длина нашей строки), она должна быть заполнена нулями на 8 нулевых байтов.
    4. *bW является обязательным в соответствии с форматом (но в нашем случае ничего не записывает), так как за каждой последовательностью команд V должна следовать команда W.
    5. *rC указывает конец растровой графики.

    Часть 2 скоро!

    Дополнительная литература

    При анализе нам помогли следующие ссылки:

    • Техническое справочное руководство PCL 5 Color , официальное руководство HP , инструмент командной строки Java и библиотека для создания дампа потоков данных принтеров PCL , исследование Check Point, посвященное факсимильным устройствам.
    • Hacking Printers Wiki — обновления прошивки

    Спасибо

    Мы хотели бы поблагодарить исследователей Checkpoint за их полезные, ранее опубликованные исследования по этому вопросу.

    Большое спасибо нашим корректорам: Моше Рубину, Надаву Коэну и Яакову Коэну.

    И, наконец, мы хотели бы поблагодарить EFF (Фонд электронных рубежей) за их время, терпение и рекомендации.

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

    Если один метод не работает, попробуйте другой метод.

    Обновите микропрограмму принтера с помощью приложения HP Smart

    Используйте приложение HP Smart для проверки и установки обновлений встроенного ПО.

    Если вы настраиваете HP Smart впервые, вам необходимо создать учетную запись HP или войти в нее, чтобы получить доступ ко всем функциям принтера.

    На главном экране приложения выберите имя или изображение принтера.

    В разделе "Дополнительно" выберите "Дополнительные параметры" или "Домашняя страница принтера (EWS)".

    Выберите Инструменты или Веб-службы.

    Нажмите «Обновления принтера» или «Обновление продукта» , а затем нажмите «Проверить сейчас» . Любые обновления встроенного ПО автоматически загружаются и устанавливаются на принтер.

    Не выключайте принтер во время обновления прошивки. Это может привести к необратимому повреждению вашего принтера.

    Обновите прошивку непосредственно с принтера

    При подключении к Интернету многие принтеры HP поддерживают обновление микропрограммы непосредственно с панели управления принтера.

    Убедитесь, что принтер подключен к сети Wi-Fi или Ethernet.

    Соединения USB не будут работать.

    На панели управления откройте меню Настройка , Сервис или Настройки.

    Выберите «Настройки» , «Обслуживание принтера» или «Инструменты».

    Выберите «Веб-службы», «Обновление принтера» или «Обновление LaserJet».

    При появлении запроса следуйте инструкциям по включению веб-служб.

    Выберите «Проверить наличие обновлений» или аналогичный вариант.

    Не выключайте принтер во время обновления прошивки. Это может привести к необратимому повреждению вашего принтера.

    Загрузите микропрограмму принтера с веб-сайта HP (Windows)

    Перейдите на веб-сайт HP на компьютере с ОС Windows, чтобы проверить и установить последнее обновление микропрограммы принтера.

    Убедитесь, что принтер включен и подключен к вашему компьютеру.

    Перейдите в раздел Загрузка программного обеспечения и драйверов HP и введите модель своего принтера.

    Выберите «Прошивка» в списке драйверов, нажмите «Загрузить» рядом с обновлением и следуйте инструкциям.

    Если вы не видите параметр встроенного ПО, для вашего принтера нет обновлений встроенного ПО.

    На экране обновления принтера HP проверьте состояние вашего принтера.

    Если сетевой принтер не отображается, используйте USB-кабель для временного подключения принтера к компьютеру. Подождите 20 секунд и нажмите "Обновить" .

    Если состояние «Готово», установите флажок рядом с серийным номером и нажмите «Обновить» .

    Не выключайте принтер во время обновления прошивки. Это может привести к необратимому повреждению вашего принтера.

    Если статус «Обновлен», микропрограмма вашего принтера обновлена.

    Загрузите микропрограмму принтера с веб-сайта HP (Mac)

    Перейдите на веб-сайт HP на своем Mac, чтобы проверить и установить последнее обновление микропрограммы принтера.

    Убедитесь, что принтер включен и подключен к вашему компьютеру.

    Перейдите в раздел Загрузка программного обеспечения и драйверов HP и введите модель своего принтера.

    Выберите «Прошивка» в списке драйверов, нажмите «Загрузить» рядом с обновлением и следуйте инструкциям.

    Если вы не видите параметр встроенного ПО, для вашего принтера нет обновлений встроенного ПО.

    На экране HP Firmware Updater выберите имя своего принтера и нажмите «Продолжить» .

    На этапе обновления информации просмотрите результаты.

    Если отображается вариант перепрошивки устройства, нажмите «Продолжить», чтобы обновить прошивку.

    Не выключайте принтер во время обновления прошивки. Это может привести к необратимому повреждению вашего принтера.

    Если обновлений для устройства нет, микропрограмма вашего принтера обновлена.

    HP последовательно обновляет микропрограмму в 2020 году. Чтобы решить проблемы, вызванные обновлениями микропрограммы, дочерняя компания Mito Chipjet разработала четыре практических решения для пользователей, позволяющих вручную отключать обновления микропрограммы, чтобы они не были заблокированы при использовании выбранного ими принтера. картриджи.

    Решение 1. С помощью программного обеспечения HP Smart

    <р>1. Найдите приложение HP Smart в приложениях, загрузите и установите его;

    <р>2. Включите функцию беспроводной сети принтера;

    <р>3. Найдите беспроводную сеть через Wi-Fi смартфона и введите пароли для подключения;

    <р>4. Откройте приложение HP Smart, щелкните значок объема чернил принтера;

    <р>5. Перейдите к кнопке настройки из дополнительных настроек;

    <р>6. Выберите «Безопасность» в раскрывающемся меню и нажмите «Настройки администратора»;

    <р>7. Найдите параметр «Обновление принтера» и снимите флажок «Все обновления микропрограммы», чтобы отключить функцию автоматического обновления принтера.

    Решение 2. Через настройки IP-адреса

    <р>1. После подключения принтера к сети щелкните параметр «Сеть» на странице, чтобы просмотреть IP-адрес принтера;

    <р>2. Введите IP-адрес принтера на странице браузера компьютера;

    <р>3. Перейдите на страницу «Настройки» в меню и нажмите на опцию «Безопасность»;

    <р>4.Найдите «Настройки администратора» и откройте;

    <р>5. Проведите вниз страницы, чтобы найти «Обновление принтера», и снимите флажок, чтобы отключить функцию автоматического обновления принтера.

    Решение 3. Через сервисный режим принтера

    <р>1. На панели управления принтера нажмите кнопку «Назад» 4 раза, чтобы войти в «Меню поддержки»;

    <р>2. Найдя меню «вкл/выкл» на странице, нажмите OK для входа;

    <р>3. Найдите «Обновление прошивки» и нажмите кнопки вверх и вниз, чтобы отключить функцию автоматического обновления принтера;

    <р>4. На экране отображается сообщение «Обновление встроенного ПО отключено. Нажмите OK, чтобы включить его».

    Решение 4. С помощью шаблона настроек принтера

    <р>1. Найдите кнопку «Настройки» принтера, прокрутите страницу вниз до параметра «Обслуживание принтера» и нажмите, чтобы войти;

    <р>2. Найдите кнопку «Обновить принтер»;

    <р>3. Выберите «Вариант обновления принтера, автоматическая установка обновлений (рекомендуется)», установите флажок «Не проверять наличие обновлений»;

    <р>4. Выберите «Нет» на всплывающей странице, чтобы отключить функцию push принтера «автоматическое обновление прошивки».

    21 декабря, всего за несколько дней до Рождества, компания HP выпустила еще одно обновление прошивки для струйных принтеров.

    Его новая прошивка 2151A нацелена на принтеры серии 96X через Wi-Fi 21 декабря 2021 г., в результате чего сменные чипы, используемые в картриджах вторичного рынка, становятся нераспознаваемыми принтером.

    Принтеры с картриджами серии 96X/91 были выпущены для замены принтеров с картриджами серии 95X/91.

    В 2020 г. компания HP выпустила 198 обновлений встроенного ПО, включая обновления от 17 марта и 13 июля для принтеров, использующих картриджи HP95X/90X, чтобы пользователи не могли использовать совместимые картриджи.

    По сравнению с 2020 годом в 2021 году компания HP выпустила 100 обновлений микропрограммы. Сначала совместимые чернильные картриджи для принтеров HP с продуктами 96X/91X не были доступны. Однако в октябре 2021 г. на рынок были официально выпущены сторонние картриджи для 96X/91X.

    Теперь, 21 декабря 2021 г., компания HP выпустила обновление микропрограммы, влияющее на замену чернильных картриджей. Ожидается, что HP выпустит больше обновлений прошивки, как это было в 2020 году.

    Пользователям, решившим использовать сменные картриджи, рекомендуется отключить функцию обновления на принтере, чтобы с уверенностью продолжать использовать сменные картриджи.

    Ожидается, что скоро будут обновлены и другие принтеры (HP 910/912/915), использующие те же технологии.

    Конечным пользователям настоятельно рекомендуется отключить автоматическое обновление на своих принтерах, чтобы избежать разочарования, когда их картриджи становятся бесполезными в результате обновления. Инструкция довольно проста. следовать. Вы можете загрузить эту инструкцию в формате PDF, чтобы передать ее потребителям, на которых эти обновления микропрограммы могут повлиять.

    По теме:

    Комментарий:

    Добавьте свои комментарии ниже к этой статье «HP отправляет еще одно раздражающее обновление прошивки принтера» или присоединяйтесь к обсуждению в социальных сетях.

    Читайте также: