A tarja que era só uma camada: atualizações incrementais de PDF
O desafio
Um PDF de acordo judicial foi divulgado com o nome da outra parte coberto por uma tarja preta, e a cópia do tribunal mostra REDACTED onde o nome estava. Só que um PDF não é uma imagem plana: ele guarda suas edições como camadas, e cobrir algo com preto na ferramenta errada adiciona uma nova camada sobre a antiga em vez de removê-la. Os bytes brutos do arquivo estão no visualizador. Leia-os e recupere o nome que deveria ter sumido.
O que você vai aprender
- Explicar que um PDF guarda as edições como revisões incrementais anexadas ao final
- Localizar os limites das revisões encontrando os marcadores %%EOF nos bytes
- Recuperar conteúdo que uma revisão posterior substituiu, mas não removeu
- Reconhecer que cobrir o texto com uma tarja preta não é redação e deixa o texto intacto
- Saber como redigir um documento para que nada sobreviva por baixo
Habilidades testadas
Pré-requisitos
- Ler a coluna ASCII em uma visualização hex
- A ideia de que arquivos guardam histórico
Como funciona
Um PDF é editado por anexação. O conteúdo original é gravado e fechado com %%EOF; as alterações posteriores são adicionadas depois dele como uma atualização incremental, com seu próprio %%EOF. O leitor mostra a definição mais recente de cada objeto, então parece que a última versão é a única versão.
Não é. Toda revisão anterior continua no arquivo, antes do %%EOF anterior. Uma caixa desenhada sobre o texto, ou uma edição de metadados salva dessa forma, adiciona uma nova camada e deixa os bytes antigos intocados. Ler o arquivo bruto recupera tudo o que uma revisão anterior continha.
É um vazamento comum no mundo real: redação feita de forma visual, ou propriedades do documento alteradas, sem achatar nem sanitizar, de modo que o original persiste em uma revisão antiga, em um object stream, nos metadados XMP ou em uma miniatura.
Erros comuns
- Ler a última revisão. É onde está
REDACTED; o original fica antes do primeiro%%EOF. - Confiar na página renderizada. O visualizador mostra apenas a camada mais recente; os bytes carregam todas elas.
- Responder
REDACTED. Isso é a substituição, não o nome recuperado. - Esperar criptografia. Nada está criptografado; o nome está em bytes em texto simples.
Como se proteger
Redija removendo, depois achate.
- Use uma ferramenta de redação de verdade, que apague o texto e as imagens por baixo, e não uma que desenhe uma caixa opaca por cima.
- Achate ou reexporte o documento em seguida (por exemplo, imprimindo para um novo PDF) para que não reste nenhum histórico incremental.
- Remova os metadados (XMP, informações do documento, miniaturas embutidas) antes da publicação.
- Trate todo documento publicado como portador de todo o seu histórico de edição até que ele seja sanitizado.