Если за последние двадцать лет у вас был принтер, вы наверняка знаете, какими они могут быть неожиданно капризными: «не могу печатать черным, потому что закончился желтый» — классическая шутка о струйниках. Или функция сканирования в МФУ, которая в некоторых моделях перестает работать, если закончились чернила, — и без специальных махинаций ее не запустить.
Для заправки лазерного картриджа не нужно ничего, кроме отвёртки, недорогого тонера в банке и желания: в первый раз вы наверняка перепачкаетесь в чёрной субстанции с ног до головы, но принципиально с процедурой справится любой дееспособный человек с газеткой.
Однако во многих моделях оригинальный картридж после первой же заправки отказывается печатать, или работает совсем недолго. Причина кроется в крошечном фирменном чипе, встроенном в картридж: он считает количество напечатанных страниц и блокирует печать, если решает, что тонер закончился, даже если его внутри еще предостаточно.
Эта история — о российско-украинских крякерах, которые сначала взломали DRM своих лазерных принтеров для личного пользования, а затем поставили патчи на коммерческие рельсы, внедрив собственную систему защиты прошивок, чтобы предотвратить бесконтрольную установку взломанных версий на принтеры бесплатно.
Данный материал основан на моей интерпретации событий, сохранившихся на ныне неработающих сайтах и форумах, поэтому в нем могут встречаться неточности. История изначально писалась для англоязычного журнала (зина) по информационной безопасности: информации о хаке принтеров (например, на конкурсе Pwn2Own, свежак этого года) предостаточно, а вот сведений о кряках с целью разблокировки практически нет, особенно в англоязычном сегменте.

Краткая история DRM'а в лазерных принтерах
Производители принтеров продают модели начального уровня по цене, незначительно превышающей себестоимость, рассчитывая на получение основной прибыли с продажи картриджей и других расходников, которые владелец будет приобретать в течение всего срока службы устройства.
Лазерный картридж для многих моделей нижнего ценового сегмента представляет собой довольно сложный механический узел, состоящий из следующих компонентов:
Фотобарабан (optical photoconductor drum);
Вал проявки (магнитный вал, developer roller);
Вал заряда (primary charge roller);
Вал подачи тонера (supply roller);
Лезвие очистки (ракель, wiper blade).

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

Чтобы противостоять распространению неоригинальных картриджей китайских производителей и удержать свою прибыль от продажи расходников, производители принтеров начали оснащать картриджи электронными чипами-счетчиками (так называемыми CRUM — Customer Replaceable Unit Monitor), рассчитывая, что сторонние производители не смогут их купить и скопировать.

Попытка №1: EEPROM
Первые попытки внедрения DRM-защиты были направлены против обычных пользователей, которые покупали совместимый тонер и самостоятельно заправляли оригинальные картриджи.

В основе решения лежал чип EEPROM Atmel AT24C04, выполнявший функцию простого счетчика отпечатанных страниц и циклов вращения фотобарабана. Изначально этот счетчик использовался во благо: он позволял подстраивать напряжение (и, как следствие, плотность тонера) по мере износа фотобарабана, для поддержания высокого качества печати, однако со временем производители принтеров решили использовать его как инструмент DRM.
Решение проблемы было простым: перепрограммировать чип с помощью любого программатора EEPROM. Чип не имел никакой защиты; достаточно было лишь разобраться в структуре данных, чтобы сбросить счетчики, или просто записать «чистый» дамп, полученный из другого источника. Инженеру в сервисном центре не составляло никакой сложность перепрограммировать чип, чего нельзя было сказать об обычном пользователе, имеющим в руках только отвёртку.
Попытка №2: Secure EEPROM
Следующим широко распространенным чипом CRUM стал Atmel AT88SC0204C CryptoMemory. Он поддерживал функции взаимной аутентификации и шифрования, предотвращая считывание данных или перепрограммирование чипа без наличия соответствующих ключей.

Поначалу это было эффективной мерой.
Как было обнаружено позже, в ранние реализации использовали статические ключи, которые можно было получить путем однократного реверс-инжиниринга. Это позволяло перепрограммировать уже имеющиеся чипы или создавать их клоны на базе микросхем EEPROM этой же серии.
В более поздних версиях были внедрены динамические ключи, формируемые на основе данных кода истории партии (Lot History Code, LHC), хранящихся в памяти чипа. Однако и этот механизм был взломан.
Как и обычные микросхемы EEPROM, эти чипы легко приобрести, а после того, как технология взлома была освоена, их стало так же легко перепрограммировать.
Попытка №3: собственные криптографические чипы
Следующим логичным шагом для производителей принтеров стала разработка собственных моделей на базе микроконтроллеров, позволяющих реализовать любые алгоритмы handshake и шифрования с использованием комбинации аппаратных и программных средств.

Одним из таких решений стал чип Samsung S3CC921, сочетающий в себе память EEPROM и память с однократной записью (OTP).
В памяти OTP хранится модель принтера, код региона, ресурс картриджа, некоторые счетчики и прочая информация, не подлежащая изменению. Это означает, что такой чип нельзя использовать повторно так же просто, как обычные микросхемы EEPROM. Кроме того, поскольку чип был разработан исключительно для нужд Samsung, производители сторонних картриджей не могли его просто купить и установить в свои изделия.
Как же решить эту задачу?
Склонировать аппаратно / украсть заготовки из цепочки поставок
Выполнить аппаратный реверс-инжиниринг и эмулировать функциональность
Взломать прошивку принтера

Подробнее об аппаратных решениях можно узнать из доклада Скотта Беста «State-of-the-Art Anti-Counterfeiting» (2024 г.); по чистой случайности изображения картриджей в нем очень напоминают продукцию Samsung ;)
Перейдем к рассмотрению прошивки принтера.
Взламываем прошивку
На дворе 2009 год. Андрей Лутов из Донецка превысил лимит счетчика страниц на принтере Samsung SCX-4300, из-за чего устройство заблокировалось.

Одной из мер по снижению себестоимости этого принтера стало отсутствие чипа на стартовом картридже (том, что идет в комплекте при покупке): пока используется именно он, принтер не блокируется.
Принтер начинает задействовать чип сразу после установки первого магазинного картриджа (оснащенного чипом); после этого использовать можно только картриджи с чипом. Один раз купив и вставив «полноценный» картридж, стартовый печатать уже не будет.

Андрей хочет модифицировать прошивку, чтобы отключить функции проверки чипа и заставить принтер работать так, словно в нем всегда установлен стартовый картридж. Процессу реверса не препятствуют современные механизмы защиты: у прошивки нет цифровой подписи, а в SoC'е отсутствует функция безопасной загрузки (Secure Boot). Доступ через UART открывает широкие возможности для отладки с помощью встроенного монитора ПЗУ:
pROBE+> help -----ROM monitor command format----------- dm start_addr <byte_count> dm.b start_addr <byte_count> dm.w start_addr <byte_count> dm.l start_addr <byte_count> ESC repeat memory dump fm start_addr byte_count byte_value fm.b start_addr byte_count byte_value fm.w start_addr word_count word_value fm.l start_addr long_count long_value pm addr byte_value pm.b addr byte_value pm.w addr word_value pm.l addr long_value ul byte_count : upload image flash : upgrade flash image fl : upgrade flash image go jmp_addr dl load_addr dhry : check dhry speed pROBE+>
Прошивка SCX-4300 работает на базе SoC Samsung Chorus2 — ASIC для принтеров, унаследованной от предыдущей модели SCX-4200 (2005 года).
Ядро ARM7TDMI с частотой 66 МГц
8 МБ SDRAM
1 МБ Flash-памяти
Интерфейс USB 2.0
Отладочный UART
JTAG
Прошивка не сжата, не зашифрована и содержит множество полезных отладочных строк. Вот такие можно легко увидеть с помощью простой команды strings:
[TN]!!!!!!!!!!!!!!Check CA_KEY!!!!!!!!!!!! [TN]RandNum Tick= %d => %02x [TN]After cfInternalAuthCommand -> uwRandNumSize = %d Request Size = %d : [TN]Auth Return Size :%d [TN]aubRanNum: After Comm call.. [TN]ulIndex=%x ulFFCnt=%x [TN]AuthToner: No CRUM [TN]After cfInternalAuthResponse -> uwRandNumSize = %d Request Size = %d : [TN]AuthToner: ACK [TN]AuthToner: NAK … [CRUM]InitToner - NoCrum [CRUM] Cart VAILD [CRUM] CR_LOW [CRUM] CR_EMPTY [CRUM] CrumDb.prnPgLow [%d]
Лутов модифицирует прошивку так, чтобы при каждой загрузке данные во внутренней EEPROM принтера сбрасывались до заводских настроек (что активирует режим работы с «стартовым картриджем»), а также заклеивает скотчем контакты чипа CRUM, чтобы предотвратить обмен данными с принтером.
И всё получилось!

Взломанная прошивка была выложена в открытый доступ на сайте testcopy.ru — сайте, предназначенном для специалистов по обслуживанию и ремонту оргтехники. Обычный файл для обновления через USB, не требующий разборки принтера.
Большой успех
Это была первая модифицированная прошивка — впоследствии получившая название «MA» (мульти-аппаратная). Подарок сообществу, без какого-либо подвоха. Файл получил крайне положительные отзывы от работников сервисных центров, ведь он позволял заправлять картриджи клиентов тонером, а это означало извлечение прибыли!
Клиенту, впервые обратившемуся в сервис по заправке, теперь достаточно было один раз принести туда и принтер, и картридж. Мастер прошивал устройство полученной бесплатно модифицированной версией ПО, и сервис мог продолжать зарабатывать на каждой заправке — точно так же, как это было с привычными им моделями принтеров!
Вскоре другие люди осознали потенциал взломанных прошивок для моделей с DRM и начали собственные исследования и реверс-инжиниринг.
Бизнес-возможность №1: реверс ради заработка
Первым логичным шагом для исследователя, владеющего навыками обратной разработки и желающего быстро заработать, было получение заказов на конкретную модель принтера от мастера по заправке, создание взломанной прошивки для этой модели, и её продажа.
Это быстро переросло в многоуровневую иерархию по перепродаже: получив прошивку, мастер перепродавал ее нескольким другим людям за полцены. Зачем покупать у исследователя, если можно потратить меньше и купить у знакомого мастера из другого города?
Обычно, спустя несколько месяцев, а иногда и недель, файл прошивки оказывался в открытом доступе в интернете.
Такая модель не выглядела надежной и устойчивой, поэтому начали прорабатываться другие варианты ведения бизнеса.
Бизнес-возможность №2: прошивки для конкретного принтера
Чтобы предотвратить бесконечную перепродажу прошивок и извлечь больше прибыли, разработчикам приходится внедрять защиту в их взломанное ПО.
Что позволяет отличить один принтер от другого? Что у них всех различается и легко считывается из прошивки?
Серийный номер!

Теперь кряк применяется только в том случае, если серийный номер, встроенный в модифицированный код, совпадает с серийным номером принтера; в противном случае прошивка работает так же, как и оригинальная. Такие файлы прошивки называют OA (одноаппаратные).
При такой схеме мастеру приходилось заказывать прошивку для каждого принтера — пусть и по гораздо более низкой цене, чем в сценарии №1, но платить нужно было каждый раз. Реверс-инженер получал стабильный доход от множества клиентов в течение долгого времени.
Сообщество «пиратов» быстро нашло несколько способов обойти эту бизнес-модель:
Генератор ключей (кейген): поиск и патч серийного номера внутри уже имеющегося файла модифицированной прошивки.
Дамп: снятие дампа памяти SPI NOR и EEPROM с одного принтера и его запись в другой с помощью программатора. Требует разбора принтера.
Первые кейгены было легко создавать, так как серийный номер был прописан в файле взломанной прошивки в открытом виде.

Позже серийный номер стали маскировать с помощью XOR, шифровать, сжимать или как-то иначе обфусцировать, из-за чего заправщикам стало сложно вносить изменения.
Данная бизнес-модель работала довольно долго, но рухнула в один день, когда была обнаружена одна простая команда:
@PJL SET SERIALNUMBER=Z2U1BFFB100942X
Эта строка, отправленная через USB таким же образом, как задание на печать, позволяла изменить серийный номер принтера.
Схема свелась к следующему:
Клонирование: покупка прошивки (по низкой цене!), изменение серийного номера самого принтера, прошивка устройства.
Для сохранения положительной динамики доходов требуются новые, радикальные меры.
Бизнес-возможность №3: прошивки для конкретного картриджа
В новой системе DRM Лутова была реализована дополнительная проверка: к серийному номеру принтера добавился серийный номер CRUM-чипа картриджа. Теперь мастеру требовалось указывать оба серийных номера: и принтера, и CRUM'а.
При каждой загрузке прошивка считывает серийный номер CRUM либо с самого чипа (если он установлен), либо из EEPROM принтера (если чип отсутствует).

Решение простое и эффективное, но оставляющее лазейку для злоупотреблений: если мастер создаст прошивку для собственного картриджа (который всегда в сервисном центре) и будет использовать её для перепрошивки принтеров, он может просто изменить серийный номер принесённого клиентом принтера с помощью USB-команды, один раз воспользоваться своим картриджем для её первой загрузки, а затем заклеить контакты считывателя CRUM, чтобы навсегда заблокировать чтение любых чипов. В результате в EEPROM принтера сохранится тот серийный номер CRUM, который ожидает прошивка, но при этом можно будет устанавливать любые картриджи (как оригинальные, так и заправленные).
У одного из конкурентов Лутова — проекта korotron-online — возникла оригинальная идея: зачем использовать серийный номер принтера, если можно задействовать сам CRUM-чип картриджа? Причем не только для чтения, но и для записи данных на него!
Реализованный ими алгоритм включает этап активации и выглядит следующим образом:
Для генерации прошивки мастер указывает серийный номер CRUM установленного картриджа.
После установки прошивка проверяет серийный номер текущего CRUM-чипа.
Если встроенный в прошивку номер совпадает с номером на CRUM-чипе, прошивка «активирует» себя, записывая специальный флаг в область однократно программируемой памяти (OTP) чипа, и копирует серийный номер CRUM в EEPROM принтера.
При всех последующих обычных загрузках прошивка проверяет номер, сохраненный в EEPROM.
Это устраняет очевидную уязвимость, характерную для прошивок Лутова: флаг в OTP-области CRUM'а записывается при первой же установке прошивки, и этот картридж больше нельзя использовать для активации других принтеров.
По другую сторону баррикад
Производители принтеров предприняли ряд попыток избавиться от патченных прошивок.
Один из известных методов — удаленное обновление прошивки через интернет, инициируемое через драйвер или самим принтером (при наличии Ethernet или Wi-Fi-подключения). Загружается новая версия прошивки, и пользователю предлагается выполнить обновление. Если согласиться на это по незнанию или ошибке, принтер с установленным неоригинальным картриджем превращается в «кирпич», и для продолжения печати требует установки нового картриджа. Зачастую в новых версиях прошивки предусмотрена защита от отката (rollback protection), предотвращающая установку модифицированной (или просто более старой) версии.

Еще один, весьма коварный подход применила компания HP: обновление прошивки «зашито» прямо в картридж! Помимо чипа CRUM, картридж оснащен небольшой флеш-памятью, содержащей обновленную версию. Как только принтер считывает данные с только что установленного картриджа, происходит обновление прошивки — полностью автономно, без участия внешних устройств или сети.
HP has found a new way to update the firmware of their printers in order to lock out third-party or aftermarket toner cartridges. HP has launched a new range of W1106A/106A cartridges which are embedded with a chip that can trigger a firmware update of the laser printer without the need of the internet. The HP W1106A/106A cartridges are used with HP Laser MFP 135a/135w/137fnw and HP Laser 107a/107w series of printers.
https://imagingsolution.in/latest-despicable-trick-by-hp-exposed/
Ответом хакерского сообщества на эти меры стало появление так называемых NU-прошивок (non-updatable, необновляемых), которые можно было выбрать при покупке. Они блокируют штатную возможность перепрошивки.

В более новых моделях внедрили проверку цифровых подписей файлов прошивки и убрали отладочные интерфейсы UART и JTAG, однако так и не реализовали механизм безопасной загрузки (Secure Boot) на уровне чипа должным образом. Эти модели по-прежнему поддаются перепрошивке, хотя теперь это возможно лишь путем программирования микросхемы памяти (с использованием программатора), а не через USB, что гораздо сложнее проделать с чипами NAND в корпусе BGA — нужно выпаивать паяльной станцией и программировать «умными» программаторами, способными работать с bad-блоками чипов.
Сегодняшний день
По состоянию на 2026 год сообщество, занимающееся взломом принтеров, продолжает активно работать и продавать решения для современных моделей HP Laser (компания HP приобрела подразделение принтеров Samsung в 2017 году и выпускает модели начального уровня на базе их аппаратной платформы), а также для ряда принтеров и МФУ Pantum — наряду со всеми старыми решениями, накопленными за годы работы с техникой Samsung и Xerox.
Цены весьма скромные: от $1 за самые старые модели (файлы прошивок для которых можно найти в открытом доступе в интернете) до $25 за устройства Pantum. Средняя цена составляет около 5-8 долларов.

Часть старых команд и людей, стоявших у истоков, всё ещё активны, однако неясно, участвуют ли они в реверсе и создании прошивок до сих пор: мне не удалось наладить с ними контакт, а последние разработки для Pantum, как мне кажется, отдают «китайщиной». Впрочем, возможно, я ошибаюсь.
Заключение
Стоит только появиться выгодной возможности для бизнеса, как даже у лучших из нас возникает искушение ею воспользоваться. Уверен, читатель прекрасно знает, как часто подобное происходило в сцене игровых консолей, теперь же вы видите, что и сцена принтеров существует и кипит активной коммерческой жизнью ;)
В России старые принтеры по-прежнему ценятся и пользуются спросом на вторичном рынке. Можно приобрести устройство, выпущенное в «золотую эру» LaserJet'ов (2004–2011 годы), у специалистов, занимающихся их профессиональным восстановлением — и получить аппарат, который прослужит еще лет пятнадцать.
Ссылки
gamozolabs Printer Hacking: https://www.youtube.com/playlist?list=PLSkhUfcCXvqGGQN8ATgWI0XYGvU-jq0uG
https://www.testcopy.ru/orgtekhnika/odnoapparatnye-proshivki-samsung.html
Некоторые упомянутые прошивки: https://www.mediafire.com/file/3m3gc3ujdj8ua1c/firmware_samsung_printers_phrack.7z/file
Прошивки на rutracker: https://rutracker.org/forum/tracker.php?f=1536&nm=fix+|+фикс+|+рабочая+|+генератор
Запуск Minecraft на принтере Samsung:

