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

На первый взгляд схема выше напоминает примитивный эскиз, набросанный «на коленке». Однако этот визуальный паттерн знаком вам гораздо лучше, чем кажется. Он присутствует на каждом листе бумаги, выходящем из вашего цветного принтера, только в виде почти неразличимых желтых точек.
Я не планирую углубляться в технические подробности работы лазерной печати — о роли барабана, тонера и коротрона написано достаточно. Наша цель — разобраться, что именно аппарат наносит на документ поверх вашего контента и о чем предпочитают умалчивать производители.
· · · ●
Проведите эксперимент самостоятельно
Возьмите любой цветной распечатанный документ, найдите свободное от текста белое пространство и направьте на него синий свет (можно воспользоваться светодиодным фонариком, перекрыв его синим светофильтром).
Уже через мгновение вы отчетливо увидите сетку из мелких точек.
Секрет прост: человеческий глаз практически не фиксирует желтый цвет на белом фоне из-за особенностей цветовосприятия. Но под синим освещением желтые фрагменты становятся черными, контраст возрастает, и скрытый узор проявляется.
Если под рукой нет синего источника света, используйте десятикратную лупу: при должном увеличении точки станут видны, хотя и будут выглядеть бледно-желтыми.
Главная хитрость в том, что сканеры и камеры при определенном спектре видят эти метки безупречно. Создается канал передачи данных, скрытый от людей, но доступный для техники. Технология эксплуатирует «слепую зону» нашего зрения, где у машин есть неоспоримое преимущество.
Эти отметки наносит сама аппаратная часть принтера, вне зависимости от печатаемого материала или используемой операционной системы. Это уровень прошивки, недоступный для контроля рядовым пользователем.
Дешифровка сетки позволяет узнать серийный номер устройства, а также точные дату и время печати документа. В профессиональной среде этот метод стеганографии называют по-разному: yellow dots, tracking dots или официально — Machine Identification Code (MIC).
● · · ●
История возникновения и разоблачение
Технология появилась в середине восьмидесятых благодаря усилиям компаний Xerox и Canon. Xerox первым начал интегрировать уникальный цифровой след в линейку оборудования DocuColor.
Официальная легенда гласит, что это мера противодействия фальшивомонетчикам. В эпоху роста качества цветной копировальной техники регуляторы обязали производителей внедрить идентификацию аппаратов. Первопроходцем стала Fuji-Xerox по запросу японских властей. Хотя публичных законов, принуждающих к этому, не существует, производители пошли на негласные договоренности. Патент Xerox прямо подтверждает использование желтых точек для отслеживания источника документа.
Таким образом, технология успешно функционировала два десятка лет, оставаясь «тайной за семью печатями» для широкой аудитории.
Ситуация изменилась в октябре 2004 года, когда голландские спецслужбы по точкам вычислили преступников. Позже, в 2005 году, эксперты из Electronic Frontier Foundation (EFF) детально проанализировали алгоритм DocuColor. Изучив образцы из множества копи-центров, они сопоставили паттерны с серийными номерами и успешно вскрыли систему кодирования.
● · · ●
Актуально ли это сегодня?
Безусловно, и это критически важно.
База данных EFF перестала обновляться в 2017 году не потому, что технология исчезла, а потому, что она стала повсеместной. Исследователи пришли к выводу, что почти все современные лазерные принтеры маркируют документы, причем далеко не всегда желтыми точками. Новые устройства могут изменять интенсивность лазера или использовать более сложные методы скрытия данных, которые пока не поддаются расшифровке любителями. Поэтому никто не даст гарантии, что ваш принтер «чист» — отсутствие заметных точек не означает отсутствие слежения.
· ● ● ·
Методика чтения. Возвращаемся к сетке
Как я и обещал, вы сможете прочитать код сами.
В оригинальном стандарте DocuColor блок представляет собой матрицу 15 на 8 точек. Наличие точки — единица, отсутствие — ноль. Далее применяется двоичная арифметика по столбцам. Верхняя строка обычно содержит контрольные биты для защиты от ошибок сканирования. Остальные строки содержат данные: дату, время и серийный номер (записанный в двоично-десятичном коде, где каждая цифра занимает четыре бита).
Разбор полноразмерной матрицы 15×8 — задача долгая, поэтому в начале статьи мы привели упрощенный вариант: сетку 4 на 4. Механика считывания идентична.
Складываем веса строк, где есть точки, двигаясь по столбцам сверху вниз.
Первый столбец: точка в строке с весом 1. Итого: 1. Второй: точка в строке 4. Итого: 4. Третий: точка в строке 2. Итого: 2. Четвертый: точки в строках 4 и 1. Итого: 5.
Получаем 1, 4, 2, 5, что в сумме дает время 14:25.
Вот и все. Теперь вы видите не случайный набор точек, а информацию, доступную для сканирующих систем. На реальном документе столбцов пятнадцать, что позволяет разместить больше метаданных.
Бонусное задание
Теперь о втором шифре. Вы наверняка обратили внимание на короткие ряды точек между разделами.
Каждая строка — это отдельная цифра. Используйте тот же принцип: четыре ячейки с весами 8, 4, 2, 1. Если точка есть — прибавляем соответствующий вес. Прочитав четыре строки сверху вниз, вы узнаете год, имеющий прямое отношение к этой статье. Жду ваших версий в комментариях.
Ниже — важный P.S., дополняющий картину.
P.S. Внимательный читатель спросит: «Если цифр и рамок на бумаге нет, как принтер их выводит?» Разумеется, принтер печатает только микроскопические желтые точки, расположенные с жестко заданным шагом. Никакой разметки не существует.
ПО для дешифровки накладывает на скан документа виртуальную сетку, где «вес» каждой точки определяется исключительно её физическими координатами. Чтобы погрешности при сканировании (наклон или сдвиг листа) не помешали чтению, в структуру интегрированы маркеры выравнивания. Этот невидимый паттерн многократно дублируется по всей площади листа, поэтому для идентификации достаточно даже крошечного фрагмента бумаги.


