Messages hidden in plain sight, in words, invisible characters, pixels, sound, printed dots, stacked transparencies, DNA and the bytes of files, and the analyses that find them.
Tracking Dots
Reads the grid of yellow dots Xerox DocuColor colour laser printers print over every page, by the rules EFF published in 2005: fifteen columns of seven-bit numbers giving the minute, hour, day, month and year of printing and the printer’s serial number, checked by odd parity on the top row and left column. EFF’s own example reads as its caption says.
About this tool
History
In 2005 a research team at the Electronic Frontier Foundation (Robert Lee, Seth Schoen, Patrick Murphy, Joel Alwen and Andrew Huang) showed that Xerox DocuColor colour laser printers print a grid of faint yellow dots over every page, and published how to read it, with sample pages sent in by the public. Their list of printers, now no longer updated, marks ten DocuColor models as printing such dots; in 2017 EFF added that it appears likely that all recent commercial colour laser printers print some kind of forensic tracking code.
How it works
The grid has 15 columns and 8 rows. The top row and the left column are parity: every column, and every row below the top, holds an odd number of dots, so a single misread dot shows as one failing row and one failing column, crossing where it is. Each other column is a seven-bit number read top to bottom, 64 down to 1. Column 2 is the minute, 5 the hour, 6 the day, 7 the month and 8 the year without its century; column 10 is a separator of seven dots; columns 14 to 11 are the serial number, two decimal digits a column; 15 is unknown; 3, 4 and 9 are unused.
The dots are marked by hand. A scan helps: yellow is light in red and green but dark in blue, so the difference, stretched, shows the dots dark on light, much as the guide’s blue light does.
How it was checked
EFF’s guide decodes its own example in its figure: “2005-06-21 12:50 serial 21052857”. The dots of that figure were read here by their colour and give exactly those values, with column 15 at 108 as the figure shows and every parity count odd. Written back from those values by the same rules, the grid is EFF’s, dot for dot, parity included. A dot changed anywhere in the grid is found as the one misread.
Limits
Only the DocuColor pattern is read; other printers use other patterns, which EFF’s guide does not describe. The hour is the printer’s own clock, which may be set to UTC or wrong; the century is assumed. The tool does not find the dots itself: they are marked by hand, from a magnified page or the scan view.