Yellow dots: следящие точки принтера
Скан распечатанной страницы. Нужно узнать, когда и на каком принтере её напечатали: время, дату и серийный номер.
- Платформа
- Root-Me
- Носитель
- изображение распечатки
- Приём
- жёлтые точки принтера (MIC), схема Xerox DocuColor 15×8
- Инструменты
- Stegsolve, GIMP
- Статус
- решено
Что это вообще такое
Многие цветные лазерные принтеры печатают на каждой странице почти невидимый узор из жёлтых точек: Machine Identification Code. В нём закодированы дата, время и серийный номер устройства. Это настоящая стеганография, причём встроенная производителем. По таким точкам находили источник утечки распечатанного секретного документа.
Как увидеть точки
Жёлтый цвет — это отсутствие синего. Поэтому на белой бумаге жёлтые точки лучше всего видны в синем канале. В Stegsolve их проявила Blue plane 6, а в GIMP помогает Colors → Components → Decompose и смотреть канал B.
Как читать сетку DocuColor
Узор повторяется по странице блоком 15 столбцов × 8 строк. Первая строка и первый столбец — биты чётности, они служебные. Каждый остальной столбец — 7-битное число, веса строк сверху вниз 64, 32, 16, 8, 4, 2, 1.
grid = [...] # 8 строк × 15 столбцов, 1 = точка; строки сверху вниз
col = lambda c: int(''.join(str(grid[r][c - 1]) for r in range(1, 8)), 2)
print(f'{col(5):02}:{col(2):02} {col(6):02}/{col(7):02}/20{col(8):02}')
print('SN:', ''.join(f'{col(c):02}' for c in (14, 13, 12, 11)))
Формат ответа в задаче: чч:мм дд/мм/гггг серийный.
Что вынести
- Цветное и «почти невидимое» ищи по каналам и битовым плоскостям (Stegsolve, Decompose).
- Для ИБ: распечатка тоже несёт метаданные. Список принтеров с такими метками публиковал EFF.