DEDA – kit de ferramentas para extração, decodificação e anonimização de pontos de rastreamento
(github.com/dfd-tud)- DEDA é um kit de ferramentas para ler, decodificar e anonimizar os pontos de rastreamento de cor em documentos presentes em impressões de impressoras a laser coloridas, ou seja, os pontos amarelos
- Os pontos de rastreamento de cor em documentos são pequenos padrões sistemáticos de pontos que codificam informações sobre a impressora e a impressão, e estão integrados em quase todas as impressoras a laser coloridas comerciais
- É possível ler ou comparar dados de rastreamento a partir de imagens digitalizadas, extrair padrões desconhecidos e adicionar sua própria matriz de pontos de rastreamento a PDFs
- A funcionalidade de anonimização funciona removendo a maior parte dos dados de rastreamento de imagens digitalizadas ou criando uma máscara de anonimização específica para a impressora e aplicando-a a documentos PDF
- Para bons resultados, recomenda-se que a digitalização de entrada use compressão sem perdas, 300 dpi e contraste neutro; páginas em preto e branco ou impressões de jato de tinta podem não ter pontos de rastreamento
O problema que o DEDA aborda
- Document Colour Tracking Dots, ou pontos amarelos, são pequenos pontos sistemáticos que codificam informações sobre a impressora e sobre a própria impressão
- Esse processo está integrado em quase todas as impressoras a laser coloridas comerciais
- Quase toda impressão contém informações codificadas sobre o dispositivo de origem, podendo incluir, por exemplo, o número de série
- O DEDA oferece tanto a capacidade de ler e decodificar essa característica forense quanto recursos de anonimização para impedir rastreamento arbitrário
- Ao usar o software, é solicitado citar o seguinte artigo
- Timo Richter, Stephan Escher, Dagmar Schönfeld, Thorsten Strufe. 2018. Forensic Analysis and Anonymisation of Printed Documents. IH&MMSec '18, 127-138. DOI: https://doi.org/10.1145/3206004.3206019
Instalação e execução da GUI
- É necessário ter Python 3 instalado
- Pode ser instalado via PyPI
pip3 install --user deda
- Também pode ser instalado a partir do diretório atual
pip3 install --user .
- Como dependência opcional de
deda_anonmask_apply, é possível instalar Wand em Unix e GNU/Linuxpip3 install --user wand- Sem Wand, páginas que contenham áreas brancas dentro da imagem não podem ser anonimizadas
- A GUI pode ser iniciada com o seguinte comando
deda_gui
O que é possível fazer com as ferramentas de terminal
-
Ler dados de rastreamento
- É possível ler e, em alguns casos, decodificar dados de rastreamento de imagens digitalizadas
- Para bons resultados, a entrada deve usar compressão sem perdas, como png, 300 dpi e contraste neutro
- Comando de execução:
deda_parse_print INPUTFILE
-
Encontrar impressoras diferentes em um conjunto de documentos digitalizados
- É possível identificar documentos impressos por impressoras diferentes em vários documentos digitalizados
- Comando de execução:
deda_compare_prints INPUT1 INPUT2 [INPUT3] ...
-
Analisar padrões de rastreamento desconhecidos
- Um novo padrão pode não ser reconhecido por
parse_print - É possível extrair os pontos amarelos para análise adicional
- Comando de execução:
deda_extract_yd INPUTFILE
- Um novo padrão pode não ser reconhecido por
-
Criar seus próprios pontos de rastreamento
- É possível criar sua própria matriz de pontos de rastreamento e adicioná-la a documentos PDF
- O conteúdo é passado como parâmetros conforme
deda_create_dots -h - Comando de execução:
deda_create_dots PDFINPUT
- A página de calibração criada com
deda_anonmask_create -wpode ser usada como entrada
Fluxo de trabalho de anonimização
-
Anonimizar imagem digitalizada
- Remove a maior parte dos dados de rastreamento de uma imagem digitalizada
- Comando de execução:
deda_clean_document INPUTFILE OUTPUTFILE
-
Anonimizar documento para impressão
- Salve o documento como PDF e deixe-o como
DOCUMENT.PDF - Imprima sem margens o
testpage.pdfcriado com o comando abaixodeda_anonmask_create -w
- Digitalize esse documento em 300 dpi e passe o arquivo sem perdas para o comando abaixo
deda_anonmask_create -r INPUTFILE
- Esse processo gera
mask.json, uma máscara de anonimização específica para a impressora individual - Aplique a máscara gerada ao PDF
deda_anonmask_apply mask.json DOCUMENT.PDF
- Como resultado, será criado o
masked.pdfanonimizado, que pode ser impresso com a configuração de margens da página em 0 - É necessário verificar com um microscópio se a máscara cobre os pontos de rastreamento da impressora
- O raio dos pontos da máscara e os deslocamentos x e y podem ser ajustados por meio dos parâmetros de
deda_anonmask_apply - Se
DOCUMENT.PDFcontiver áreas gráficas brancas ou claras, essas áreas só poderão ser mascaradas se Wand estiver instalado
- Salve o documento como PDF e deixe-o como
Solução de problemas
- Se ocorrer
deda_parse_print: command not found, verifique a instalação do DEDA ou adicione o caminho bin do usuário do Python ao PATHexport PATH="$PATH:$(python -c 'import site,os; print(os.path.join(site.USER_BASE, "bin"))')"
- Se o DEDA não reconhecer os pontos de rastreamento, é preciso configurar o programa de digitalização para não remover a estrutura do papel nem os pontos de rastreamento por limiarização
- Páginas em preto e branco e impressões a jato de tinta podem não ter pontos de rastreamento
- Se a impressora não imprimir pontos de rastreamento, é possível criar seus próprios pontos de rastreamento ou imprimir uma página de calibração com outra impressora para usá-la como máscara para sua própria impressora
- É possível criar seus próprios pontos de rastreamento com
deda_create_dots - É possível gerar uma página de calibração com
deda_anonmask_create -w - É possível usar uma versão anonimizada dos pontos de rastreamento ou copiá-los com
deda_anonmask_create --copy
- É possível criar seus próprios pontos de rastreamento com
- Erros de instalação relacionados a
x86_64-linux-gnu-gccpodem ser causados pela dependência eel necessária para a GUI- Comando sugerido:
sudo apt-get install build-essential autoconf libtool pkg-config python3.6-dev gcc && pip3 install --user eel
- Comando sugerido:
- Se operações com PDF forem bloqueadas pela política de segurança com
wand.exceptions.PolicyError, a causa pode ser a configuração do ImageMagick- Remova o Wand ou adicione a seguinte política imediatamente antes de
</policymap>em/etc/ImageMagick-*/policy.xml<policy domain="coder" rights="read | write" pattern="PDF" />
- Link de referência relacionado: ImageMagick security policy PDF blocking conversion
- Remova o Wand ou adicione a seguinte política imediatamente antes de
1 comentários
Comentários no Hacker News
Nossa equipe usou esses pontos amarelos de rastreamento há uns 10 anos no Desafio de Reconstrução de Documentos Triturados da DARPA para remontar documentos picotados.
Dá para ver o programa destacando os pontos enquanto encaixava os fragmentos: https://www.youtube.com/watch?v=uzZDhyrjdVo
Graças a isso, conseguimos vencer com uma boa vantagem.
Ver a história por trás me trouxe uma lembrança esquecida, foi bem curioso.
Esse processo parece render um texto à parte tanto quanto o algoritmo de solução, e deve exigir um certo tipo de personalidade para lidar com tamanha bagunça.
Recentemente, por motivos difíceis de explicar aqui, precisei dar uma olhada em pontos de rastreamento.
Vale a pena apontar uma lanterna de LED azul para impressos coloridos. É chocante: há uma quantidade enorme de pontos espalhados pela página inteira, como se tivessem jogado areia sobre ela.
Se a minha impressora não imprime pontos de rastreamento, a ideia de poder falsificar os pontos de rastreamento de outra impressora é bem interessante do ponto de vista da negação plausível.
Mas, mesmo nesse caso, acho que eu ainda precisaria ter acesso à impressora original para imprimir uma máscara anônima.
Hoje em dia talvez seja possível acessá-lo remotamente pelas configurações da impressora.
Dá para enganar alguém fazendo uma análise superficial, mas um investigador experiente provavelmente notaria algo como: “os pontos de rastreamento são claramente da marca X, mas o raster usado nos tons de cinza é obviamente do tipo Y”.
Se você perdeu um texto interessante relacionado a isso, está aqui: https://news.ycombinator.com/item?id=42880704
O mais interessante é que a pessoa que publicou a descoberta e a análise já tinha gastado milhares de dólares nas cartas falsas e poderia sair pessoalmente prejudicada, mas mesmo assim divulgou os resultados.
Fico imaginando o que acontece se a mesma página for impressa em várias impressoras.
Se a primeira impressora imprimir o conteúdo real e as outras imprimirem só um pouquinho nas áreas ainda brancas, uma impressora estragaria os pontos de rastreamento da outra?
Mas, dependendo dos detalhes, talvez ainda seja possível ler alguns ou todos eles.
Estou começando a achar que a MIB vai bater na casa do maluco que iniciar um projeto tipo OpenWRT para impressoras.
A lógica seria que não se pode permitir expressão não rastreável, e que é preciso conseguir atingir cirurgicamente a origem de memes inconvenientes. Por isso uso uma impressora laser preto e branco comprada no craigslist, em uma VLAN separada, com um servidor CUPS no meio.
Ninguém deu consentimento suficientemente informado para o que a Niantic vem fazendo há mais de 10 anos, e ninguém consentiu que todos os impressos se tornassem rastreáveis. Em nenhum produto ou processo há um aviso dizendo: “não é porque não há identificadores visíveis que não há identificadores; pode haver identificadores esteganográficos”.
O mesmo vale para máquinas de uso geral dentro de produtos que compramos ficarem travadas a ponto de nós, seus donos, não podermos reaproveitá-las como quisermos. Passamos a aceitar os insultos lançados por organizações comerciais e órgãos estatais como “coma o sanduíche de merda ou apanhe sem sanduíche”, e o Consumer Action Taskforce (CAT) do Louis Rossmann está se tornando uma boa coletânea desses casos.
Está na hora de reagir. Precisamos hackear impressoras utilizáveis, substituir o firmware por algo prático e nos livrar dessa palhaçada. Esses pontos de rastreamento e outros métodos esteganográficos de rastreamento existem para localizar e silenciar gente como eu, pessoas que apontam mecanismos ocultos de controle e espalham memes que a enorme lula obsidiana rotulou como risco informacional ou desinformação.
Imprimir em papel parece burrice, porque até alguém acostumado a lidar com cédulas comuns perceberia facilmente.
Acho que isso vai se tornar bastante importante nos próximos anos.
Se você pretende imprimir panfletos ou folhetos para protestos, é melhor mandar fazer em uma gráfica profissional se houver alguém confiável, ou pelo menos comprar uma impressora em dinheiro, nunca conectá-la à internet e usá-la apenas via USB em um computador Linux.
macOS e Windows podem instalar drivers de impressora automaticamente, e esse driver pode contatar a matriz e associar o ID da impressora a algum identificador.
Dá até para estampar camisetas.
Tenho muita curiosidade para saber qual é a proporção de impressoras que podem ser decodificadas com ferramentas públicas
Será que existem estatísticas sobre os códigos de quais fabricantes foram quebrados?
Há uma cópia aqui: https://ericbalawejder.com/assets/hexview/Forensic-Analysis-...
A Tabela 1 resume fabricante, número de impressoras analisadas e se os pontos foram encontrados: Brother 1 sem, Canon 10 com, Dell 4 com, Epson 8 alguns modelos, Hewlett-Packard 43 alguns modelos, IBM 1 com, KonicaMinolta 21 alguns modelos, Kyocera 4 com, Lanier 1 com, Lexmark 6 alguns modelos, NRG 1 com, Okidata 9 alguns modelos, Ricoh 6 com, Samsung 5 sem, Savin 1 com, Tektronix 4 sem, Unknown 1 com, Xerox 15 alguns modelos
Tirando algumas pistas descritas no artigo, parece que, quando padrões de pontos são encontrados, em geral eles já são compreendidos
Impressoras laser preto e branco também criam pontos de rastreamento?
E qual é o sentido desse tipo de rastreamento? Em princípio, cada canto da nossa vida precisa mesmo ser rastreado?
Espalhar informações de origem em tudo tem valor demais para a segurança nacional. Sempre se usa segurança ou proteção como justificativa, e logo vem o “mas qual é o problema, você não está fazendo nada que não deveria... certo?”
Se o uso principal é rastrear falsificadores de dinheiro, então isso não é necessário em impressoras preto e branco, e por isso elas não incluiriam o recurso
Essa lista não é atualizada desde 2017 e provavelmente foi inferida por uma pessoa com base em pedidos via FOIA. Parece que teremos que esperar até a próxima vez que uma universidade chinesa divulgar segredos do governo dos EUA
Décadas atrás, trabalhei em um software que escondia informações ajustando o kerning de caracteres; até onde sei, esse projeto não levou a nada significativo
Isto também pode ser de interesse: https://en.wikipedia.org/wiki/EURion_constellation
Infelizmente, há pouquíssima informação pública sobre ela: http://www.cl.cam.ac.uk/users/sjm217/projects/currency/