Um PDF carrega a própria papelada — uma cadeia de revisões, dois conjuntos de metadados, uma string de produtor e um par de identificadores. Estas cinco famílias leem essa papelada e a conferem contra ela mesma. Nenhuma delas olha para a página; elas perguntam o que o arquivo diz sobre como veio a existir, e se essas afirmações são coerentes.
Parte do guia de sinais — cinco das dezoito famílias que o motor reporta.
Sinais, não veredictos. Todo achado aqui é um fato estrutural sobre um arquivo. "Este documento foi modificado depois de gerado" é verdadeiro ou falso sobre os bytes; "este documento é fraudulento" é um julgamento sobre uma pessoa, e o Tamperlens não o faz. A API não retorna nenhum campo de veredicto booleano, por construção.
incremental-updates
média alta- O que detecta
-
Que o arquivo contém mais de uma revisão — bytes foram anexados depois que
o documento foi escrito pela primeira vez e terminado com
%%EOF. O mecanismo de atualização incremental do PDF anexa novos objetos, uma nova seção de referências cruzadas e um novo trailer em vez de reescrever o arquivo, de modo que estados anteriores do documento continuam fisicamente presentes. O parser percorre a cadeia/Prevde trás para frente e determina quais números de objeto cada revisão introduziu e quais ela sobrescreveu. - A escalada depende do que mudou, não de quantas vezes. Se uma revisão posterior substitui um número de objeto que já existia em uma revisão anterior, e esse objeto carrega dados de página, de stream de conteúdo ou de imagem, então a aparência renderizada do documento mudou após a geração. Objetos de anotação e de metadados não escalam a severidade.
- Evidência retornada
-
revisions,updatesAfterCreation,eofOffsets,startxrefValues,revisionChainBroken, um detalhamento por revisão (changedPerRevision: quais objetos cada revisão escreveu e quais deles ela sobrescreveu, com o tipo de cada um) econtentObjectsOverwritten. - Causas legítimas
- Extremamente comuns — esta é a família com mais chance de disparar em um arquivo honesto. Aplicar uma assinatura digital é uma atualização incremental — é assim que a assinatura preserva os bytes assinados. O mesmo vale para preencher um campo de AcroForm, adicionar uma anotação, um comentário ou uma nota adesiva, aplicar uma tarja em algumas ferramentas, e certos passes de linearização e otimização. Sistemas de gestão de documentos rotineiramente adicionam uma revisão na ingestão. Um extrato que o cliente abriu, assinou e salvou de novo não é uma falsificação.
-
A armadilha inversa: uma única revisão não significa que
o arquivo nunca foi editado. Uma ferramenta que reescreve o documento
inteiro achata o histórico, e então esta família fica em silêncio enquanto
metadata-mismatch,producer-fingerprintoufont-anomaliescarregam o achado em seu lugar. - Lógica de severidade
-
Silenciosa com uma revisão. média para qualquer revisão
adicional. alta quando ao menos um objeto sobrescrito é
do tipo
page,contentouimage.
metadata-mismatch
média alta- O que detecta
- Desacordo entre os dois repositórios de metadados independentes que um PDF pode carregar: o dicionário Info do trailer e um pacote XMP incorporado. Quatro campos são comparados — producer, creator/creator-tool, data de criação e data de modificação. Uma única ferramenta escrevendo o arquivo uma única vez preenche os dois de forma consistente; editores de consumo com muita frequência atualizam um e deixam o outro desatualizado.
-
A comparação é deliberadamente tolerante, para que uma simples deriva de
versão não vire um achado. As strings de ferramenta são normalizadas para
caracteres alfanuméricos minúsculos e contam como concordantes quando uma
é substring da outra, de modo que
iText 7.2.5eiTextconcordam. Timestamps concordam dentro de um minuto, porque os dois repositórios arredondam de formas diferentes. Um campo é pulado por completo quando está ausente de qualquer um dos repositórios, e a família nem sequer roda a menos que ambos os repositórios estejam presentes. - Evidência retornada
-
Um array
mismatches(campo, valor do Info, valor do XMP), as strings brutas de producer/creator dos dois repositórios, os dois pares de datas,infoEditorTool/xmpEditorTool(qual editor de consumo conhecido cada repositório nomeia, se algum) eeditorRevealedByMismatch. - Causas legítimas
- Pipelines de publicação em múltiplos estágios produzem esse padrão de forma legítima e constante: um aplicativo de design escreve o XMP, um distiller escreve o dicionário Info, um pós-processador atualiza um dos dois. Alguns geradores server-side escrevem o XMP uma vez e nunca o renovam. O Quartz do macOS e vários drivers de impressão em PDF são conhecidos por deixar os repositórios divergentes. Uma divergência pura e simples é uma pergunta, não uma acusação.
- Lógica de severidade
- média para qualquer divergência. Escala para alta apenas em um caso específico: a divergência está em um campo producer ou creator e os dois repositórios nomeiam editores de consumo conhecidos diferentes — incluindo o caso em que um nomeia um editor e o outro não nomeia nenhum. Nessa situação, a divergência é a única razão pela qual a ferramenta de edição fica visível, o que é materialmente diferente de duas bibliotecas de servidor discordando entre si.
date-anomalies
baixa média- O que detecta
-
Timestamps que um gerador funcionando corretamente não poderia ter
produzido. Quatro achados distintos, avaliados sobre os quatro campos de
data disponíveis (Info
/CreationDatee/ModDate, XMPxmp:CreateDateexmp:ModifyDate): -
mod-before-creation— o timestamp de modificação precede o timestamp de criação dentro do mesmo repositório (os dois repositórios são comparados como pares separados; a divergência entre repositórios é tratada pormetadata-mismatch).future-date— um timestamp mais de um dia no futuro.impossible-timezone— um deslocamento UTC declarado além de ±14:00, que não corresponde a nenhum fuso horário real.unparseable-date— uma string que não segue nem a sintaxe PDFD:YYYYMMDDHHmmSSOHH'mm'nem a ISO-8601. - Evidência retornada
-
Um array
findings— cada um com um tipo, o campo ou par de campos envolvido, o valor problemático e uma nota de uma linha — mais as quatro strings de data brutas exatamente como aparecem no arquivo. - Causas legítimas
- Datas malformadas são, em grande parte, uma questão de qualidade do gerador: muitos produtores de nicho e legados emitem datas que não podem ser interpretadas, e é por isso que um relatório contendo apenas datas ininterpretáveis é rebaixado em vez de tratado como manipulação. Datas futuras podem vir de um relógio de sistema genuinamente errado, e é por isso que o limiar é de um dia inteiro em vez de um segundo. Modificação anterior à criação é o mais difícil de explicar de forma legítima, mas de fato ocorre com ferramentas que copiam a data de criação de um documento de origem enquanto escrevem uma data de modificação nova.
- Lógica de severidade
-
baixa quando todos os achados são
unparseable-date. média nos demais casos. O título reflete o achado mais forte: um par com modificação anterior à criação é nomeado explicitamente, relatórios só de datas malformadas dizem isso, e todo o resto reporta inconsistência interna.
producer-fingerprint
info baixa média- O que detecta
-
Uma ferramenta operada por uma pessoa
aparecendo na cadeia de produção do documento. Quatro campos de origem são
verificados — Info
/Producer, Info/Creator,pdf:Producerexmp:CreatorTool— contra uma lista curada de impressões digitais em cinco categorias: editores e conversores online (iLovePDF, Sejda, Smallpdf, PDFescape, PDF24, PDFfiller, DocHub, Soda PDF, PDF2Go, Convertio, Zamzar e outros), editores de PDF de desktop (PDF-XChange, Foxit, Nitro, PDFelement, Wondershare, Acrobat Pro interativo), pós-processadores de OCR (ABBYY, Readiris), editores de imagem e design (Photoshop, Illustrator, GIMP, Inkscape, Canva, Figma, Affinity) e pipelines de re-salvamento de escritório e impressão (LibreOffice, Word, Microsoft Print to PDF, Quartz PDFContext, CutePDF, doPDF, PrimoPDF). - Cada impressão digital carrega uma origem, e a origem decide tudo: uma ferramenta de autoria (Word, Canva, Google Docs, um driver de impressão, um passe de OCR) é onde a existência do documento começa, então nomeá-la não diz nada sobre se algo mudou depois. Um editor de PDF (iLovePDF, Sejda, PDF-XChange, o editor interativo do Acrobat Pro) recebe um PDF existente como entrada e escreve um novo — uma afirmação sobre o histórico do arquivo, não sobre sua autoria. A correspondência ignora maiúsculas e minúsculas sobre a string normalizada para caracteres alfanuméricos, então pontuação e números de versão não a derrotam.
- Um ramo separado trata do caso oposto: nenhuma ferramenta produtora declarada em nenhum dos repositórios.
- Evidência retornada
-
matches(qual campo, o valor bruto, o rótulo da ferramenta correspondida, sua categoria e sua origem), as listas deduplicadastoolseeditorTools, aoriginresolvida, as quatro strings brutas,revisionsefullPageImagePages— a lista de páginas é apenas evidência e não move mais a severidade. - Causas legítimas
- Enormes — esta é a família que mais precisa de calibração local. Razões legítimas para uma ferramenta de consumo aparecer: o cliente baixou o extrato e o salvou de novo no Preview ou no Acrobat para combinar páginas; usou uma ferramenta online para mesclar dois extratos em um único upload, ou para comprimir um arquivo abaixo de um limite de upload; imprimiu em PDF a partir do internet banking porque não havia botão de download; o próprio emissor usa LibreOffice ou um driver de impressão no seu pipeline — instituições pequenas genuinamente usam. ABBYY e outras ferramentas de OCR aparecem de forma rotineira e legítima em fluxos de digitalização.
- O caso do producer ausente é ainda mais fraco: remover metadados é um passo normal de higiene de privacidade, e alguns geradores minimalistas simplesmente nunca escrevem o campo. Ele remove um fato corroborante em vez de fornecer um.
- Lógica de severidade
- Nenhuma correspondência, com um producer declarado: silenciosa. baixa quando nenhuma ferramenta produtora é declarada em lugar algum. Para uma correspondência, dois fatos e nada mais: a origem da ferramenta e se o arquivo tem mais de uma revisão. Uma ferramenta de autoria é info em um arquivo de revisão única e baixa em um arquivo salvo de novo; um editor de PDF é baixa em um arquivo de revisão única e média em um arquivo salvo de novo. Esta família não alcança mais alta: a string do producer é um autorrelato da ferramenta que escreveu o arquivo — um fraudador pode defini-la como quiser, e um documento honesto a define como Word. Imagem de página inteira também não a escala mais; um raster de página inteira marca um documento que é uma imagem (um design do Canva, uma digitalização), não um documento que foi editado.
id-inconsistency
info média- O que detecta
-
Divergência no array
/IDdo trailer. A especificação PDF atribui aos dois elementos funções diferentes: o primeiro é um identificador permanente definido quando o documento é criado e nunca deve mudar; o segundo é reescrito pelo aplicativo produtor a cada salvamento. Em um gravador conforme à especificação, a divergência entre eles é o registro legível por máquina do próprio formato de que o arquivo foi salvo de novo após a criação — mas muitos gravadores reais simplesmente geram os dois elementos do zero na primeira gravação, então a divergência sozinha não é esse registro. A Tamperlens lê o/IDdo trailer mais recente que carrega um, e reporta o/IDde cada trailer como evidência. - Evidência retornada
-
idOriginaleidCurrentem hexadecimal,trailerCount,revisionseallTrailerIds, para que você veja o identificador evoluir através das revisões. - Causas legítimas
-
Qualquer coisa que legitimamente salve o documento de novo atualiza o
segundo elemento — assinar, preencher formulários, anotar. O sinal diz
"salvo de novo", nada mais. Duas fraquezas adicionais que vale conhecer:
alguns geradores minimalistas omitem o
/IDpor completo, e uma ferramenta que reescreve o arquivo inteiro pode definir os dois elementos com o mesmo valor novo, apagando o vestígio completamente. Um par idêntico, portanto, não é evidência de um documento intocado. - Lógica de severidade
-
Par idêntico: silenciosa. Par divergente: média apenas
quando a própria estrutura do arquivo concorda que ele foi escrito mais de
uma vez. Em um arquivo de revisão única a divergência é reportada como
info — um arquivo escrito uma única vez não pode ter sido
"salvo de novo", e medida contra populações de documentos não curadas, a
maioria dos pares divergentes está exatamente nesses arquivos. Nenhum
array
/ID: info — sua ausência remove a verificação em vez de indicar uma mudança. Achados info não contribuem em nada para a pontuação e são reportados para que a observação continue auditável.
Veja o relatório no seu próprio arquivo
O verificador gratuito roda todas as famílias desta página e mostra a evidência completa — sem conta, sem nada armazenado. Para rodar no seu próprio fluxo, veja o guia rápido da API ou crie uma conta para uma chave com 50 documentos grátis por mês.
O Tamperlens reporta sinais de risco, não veredictos de autenticidade. Sinais podem ter causas legítimas; combine-os com sua própria lógica de decisão.
O resto do guia
- O que as páginas de um PDF entregam Seis famílias.
- O que uma assinatura de PDF realmente cobre Três famílias.
- Quando os números do documento não fecham Quatro famílias.
- Todas as dezoito famílias O índice, o vocabulário de severidade e como os sinais viram uma pontuação.