2 pontos por GN⁺ 2025-04-03 | 1 comentários | Compartilhar no WhatsApp
  • 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/Linux
    • pip3 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
  • 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 -w pode 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.pdf criado com o comando abaixo
      • deda_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.pdf anonimizado, 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.PDF contiver áreas gráficas brancas ou claras, essas áreas só poderão ser mascaradas se Wand estiver instalado

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 PATH
    • export 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
  • Erros de instalação relacionados a x86_64-linux-gnu-gcc podem 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
  • 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

1 comentários

 
GN⁺ 2025-04-03
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.

    • Lembro de ter ouvido falar desse desafio no Daily Planet quando eu estava no ensino fundamental.
      Ver a história por trás me trouxe uma lembrança esquecida, foi bem curioso.
    • Eu achava que o triturador/scanner de biblioteca em Rainbows End, do Vinge, era só uma premissa de ficção científica vagamente inspirada em sequenciamento genético; é divertido ver uma implementação que chega tão perto da realidade.
    • Fico curioso sobre como foi o processo de escanear os fragmentos para inseri-los no programa.
      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.

    • Surpreende que os fabricantes de impressoras ainda não tenham levado uma ação coletiva pelo toner amarelo extra que gastaram todo esse tempo.
    • E isso já não é só coisa de impressora: https://datadotusa.com/technology.htm
    • Fico curioso para saber de que tipo de impressora estamos falando: laser, laser colorida ou jato de tinta.
  • 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.

    • Segundo a Wikipedia, o arranjo dos pontos codifica o número de série e a data/hora da impressão do dispositivo; então, para falsificar a impressora de outra pessoa, na prática bastaria ter o número de série.
      Hoje em dia talvez seja possível acessá-lo remotamente pelas configurações da impressora.
    • Se uma investigação forense chegou ao ponto de examinar até os pontos de rastreamento, a maioria das tentativas de falsificação vai ficar bem óbvia, e provavelmente servirá até como evidência para restringir os suspeitos a pessoas que conhecem essa técnica.
      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

    • É uma leitura que vale a pena: conta como versões de playtest iniciais de cartas de Pokemon recentemente “descobertas” foram consideradas falsas, ou no mínimo muito suspeitas, com base na existência e na decodificação desses pontos.
      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?

    • Provavelmente sim. A impressora não tem como saber que não deve fazer isso.
      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.

    • Se eu fosse falsificar algo, em vez de imprimir em papel do jeito comum em casa ou no escritório, acho que arranjaria algo como uma CNC de relojoeiro, com tolerâncias precisas, para fazer um carimbo de impressão em alumínio ou algo parecido.
      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.

    • Para ver como isso era feito em países totalitários do bloco oriental, pesquise Samizdat: https://en.m.wikipedia.org/wiki/Samizdat
    • Se você está preocupado a esse ponto, é melhor comprar um kit de serigrafia.
      Dá até para estampar camisetas.
    • Não seria muito mais fácil rastrear as pessoas que distribuem os panfletos?
    • Ou então basta imprimir, com uma impressora comprada em dinheiro, uma grande quantidade de pontos de rastreamento válidos, mas aleatorizados, por todo o documento.
  • 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?

    • No GitHub, eles fazem referência ao artigo de 2018 de Timo Richter, Stephan Escher, Dagmar Schönfeld e Thorsten Strufe, Forensic Analysis and Anonymisation of Printed Documents
      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?

    • Não sei ao certo sobre identificadores esteganográficos em impressoras preto e branco, mas eu ficaria surpreso se elas não inserissem informações de rastreamento
      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?”
    • Pelo que entendo, o Secret Service pediu ou exigiu que os fabricantes adicionassem pontos depois que a qualidade das impressoras ficou boa o bastante para reproduzir cédulas com facilidade
      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
    • https://www.eff.org/pages/list-printers-which-do-or-do-not-d...
      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
    • A ideia deve ser que ninguém vai ser enganado por uma nota de 20 dólares em preto e branco, então não há necessidade de colocar pontos
    • Impressoras monocromáticas não têm pontos amarelos
      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