Esta é a página de referência do motor de análise. Dez famílias de sinais rodam em todo documento; cada uma é descrita abaixo sob os mesmos quatro títulos — o que detecta, a evidência que devolve, suas causas legítimas e sua lógica de severidade. As seções de causas legítimas não são um aviso legal pregado no final. Elas são a parte de que você precisa para montar uma fila de revisão que a sua equipe de operações não aprenda a ignorar.
Sinais, não veredictos. Cada achado aqui é um fato estrutural sobre um arquivo. "Este documento foi modificado após a geração" é verdadeiro ou falso sobre os bytes; "este documento é fraudulento" é um julgamento sobre uma pessoa, e a Tamperlens não o faz. A API não retorna nenhum campo booleano de veredicto, por decisão de projeto.
Vocabulário de severidade
Quatro severidades, em hierarquia estrita. Elas descrevem quanto um achado isolado estabelece por si só, não a probabilidade de fraude.
- alta Por si só estabelece que o documento mudou após a geração, ou que uma ferramenta com intenção de edição esteve envolvida.
- média Um desvio real do padrão "escrito uma única vez por uma única ferramenta", com explicações legítimas comuns.
- baixa Fraca ou baseada em ausência; remove um fato corroborante em vez de acrescentar um.
- info Contexto. Não entra no
signalCounte não contribui em nada para a pontuação.
Um relatório contém no máximo um sinal por família — isso é
uma invariante do relatório. Uma família ou dispara uma única vez, com todos
os seus achados reunidos em um único objeto evidence, ou não
aparece de forma alguma. Os sinais são ordenados do mais severo para o menos
severo e, em seguida, alfabeticamente por id, de modo que os relatórios são
estáveis byte a byte entre execuções.
1. Histórico de revisões
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.
2. Metadados
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
baixa média alta- O que detecta
-
Uma ferramenta cujo propósito é alterar o conteúdo da página
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). - O raciocínio é específico do domínio: extratos, faturas, holerites e certificados são emitidos diretamente por geradores server-side. Um editor de consumo na cadeia significa que o arquivo foi a algum lugar aonde não precisava ir. 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 e sua categoria), a lista deduplicadatools, as quatro strings brutas,revisionsefullPageImagePages. - 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. média para uma correspondência de impressão digital sem corroboração estrutural no mesmo arquivo. alta quando a correspondência é corroborada — mais de uma revisão, ou ao menos uma página cujo fundo é uma imagem rasterizada de página inteira. Esse acoplamento é deliberado: um editor de consumo mais evidência estrutural independente é uma afirmação diferente de um editor de consumo sozinho.
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. 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. 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,trailerCounteallTrailerIds, 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. Nenhum
array
/ID: info — sua ausência remove a verificação em vez de indicar uma mudança, então não contribui em nada para a pontuação e é reportada apenas para que você saiba por que a verificação está faltando.
3. Conteúdo da página
font-anomalies
alta- O que detecta
-
Dois ou mais prefixos de subconjunto diferentes para a mesma
fonte base. Fontes incorporadas geralmente são subconjuntos — apenas os
glifos de que o documento precisa são incluídos, e o nome recebe um
prefixo de seis letras maiúsculas e um sinal de mais, como em
ABCDEF+Helvetica. Um gerador escrevendo o documento uma única vez reúne todos os glifos de que precisa para um tipo de letra em um único subconjunto com um único prefixo. Dois prefixos para um mesmo tipo de letra significam que glifos daquele tipo foram incorporados em duas ocasiões distintas. - Este é o clássico vestígio de "mudaram os números", e seu valor está em viver nos recursos da página em vez dos metadados: ele sobrevive à remoção de metadados e sobrevive a uma reescrita completa do arquivo que achata o histórico de revisões. Fontes não subconjuntadas são ignoradas — não há prefixo a comparar.
- Evidência retornada
-
conflicts(nome da fonte base mais a lista ordenada de prefixos encontrados para ela), a lista completa de fontes em subconjunto com os nomes brutos, etotalFonts. - Causas legítimas
- Montagem de documentos é a grande causa. Mescle dois PDFs de origens diferentes e um tipo de letra comum a ambos chega com dois subconjuntos — totalmente inocente, e é a razão pela qual um cliente que combinou dois extratos mensais em um único upload vai disparar este sinal. Anotações de assinatura e carimbo frequentemente trazem seus próprios recursos de fonte. Alguns produtores emitem um subconjunto separado por página ou por XObject de formulário, por decisão de projeto. Algumas ferramentas re-subconjuntam ao salvar e deixam o subconjunto antigo órfão no arquivo.
- Esta família não tem uma severidade mais baixa para onde recuar, o que a torna a mais importante de todas para ser lida junto com o resto do relatório em vez de isoladamente. Dois subconjuntos em um documento de duas páginas cujo histórico de revisões está limpo e cujo producer é uma biblioteca de servidor é, muito provavelmente, uma mesclagem.
- Lógica de severidade
- alta sempre que existe ao menos um conflito; caso contrário, silenciosa. Não há gradação — a observação é binária, e sua força vem de ser difícil de produzir acidentalmente em um gerador de passe único.
hybrid-page
info média- O que detecta
- Uma página cujo fundo é uma única imagem rasterizada cobrindo essencialmente todo o MediaBox, com texto desenhado por cima. A distinção que carrega o sinal é o modo de renderização de texto. Uma camada de OCR sobre uma digitalização é desenhada no modo 3 — invisível — para que a página continue pesquisável enquanto a digitalização é o que se vê. Glifos vetoriais visíveis sobre uma digitalização de página inteira significam que caracteres foram colocados na página depois que a imagem foi feita — que é como valores em um documento digitalizado são alterados.
- A detecção exige percorrer o stream de conteúdo de cada página, contar os operadores de exibição de texto e separá-los entre visíveis e invisíveis. Um teto de volume separa edições de design: acima de 25 operadores de exibição de texto visíveis, a página é tratada como um layout projetado — uma página de revista, pôster ou folheto com imagem de fundo sangrada — e não é contada. O limiar foi calibrado contra páginas reais de publicações com imagem sangrada, cujas contagens de operadores visíveis começam na casa dos trinta e poucos para capas e chegam aos milhares em páginas de miolo. Uma edição por sobreposição em um extrato carrega uma contagem de um dígito.
- Evidência retornada
-
Por página afetada: número da página, número do objeto, largura e altura
do MediaBox, e as contagens total, visível e invisível de operadores de
texto. Mais
plausibleOcrLayer, o limiarmaxOverlayTextOpsem vigor edesignedLayoutPagesIgnored— as páginas excluídas pelo teto, para que a exclusão seja auditável em vez de silenciosa. - Causas legítimas
-
Documentos digitalizados com camadas de OCR são o caso normal, e é por
isso que essa forma é reportada como
infoe não contribui em nada para a pontuação. Texto visível legítimo sobre uma imagem de página inteira de fato ocorre: um modelo de formulário distribuído como digitalização e depois preenchido eletronicamente, uma data ou número de página carimbados por um sistema de gestão de documentos, um número Bates, uma marca-d'água "CÓPIA"/"DUPLICATA" aplicada pelo emissor, uma imagem de assinatura aplicada eletronicamente com um nome digitado ao lado. - Inversamente, a ausência deste sinal diz pouco: uma edição feita dentro da própria imagem rasterizada, sem camada de texto adicionada, não deixa nada para esta família ver. Forense de imagem em nível de pixel é uma disciplina diferente e não faz parte do motor atual.
- Lógica de severidade
- média quando ao menos uma página tem entre 1 e 25 operadores de exibição de texto visíveis sobre uma imagem de página inteira. info quando páginas com imagem de página inteira carregam texto, mas todo ele é invisível — a forma padrão do OCR, reportada como contexto. Silenciosa quando nenhuma página tem, ao mesmo tempo, uma imagem de página inteira e algum texto.
active-content
média- O que detecta
-
JavaScript incorporado, ações automáticas (
/OpenAction), ações/Launche arquivos anexados (/EmbeddedFiles). Documentos estáticos gerados por máquina não carregam nenhum desses, então a presença deles significa que o arquivo foi criado ou recriado em uma ferramenta que adiciona comportamento interativo. Os mesmos quatro construtos são também o mecanismo padrão de entrega de PDFs maliciosos, então esta família cumpre papel duplo como sinal de fraude documental e sinal de segurança. -
A detecção é restrita a genuínas posições de chave de dicionário
em objetos interpretados, nunca a busca em bytes brutos. Um token
/JSque apenas aparece dentro do stream de conteúdo de uma página é conteúdo de página — texto que por acaso se parece com uma ação — e não pode disparar esta família. Streams de conteúdo não são varridos em busca desses marcadores. A Tamperlens sinaliza o que encontra e nunca executa, avalia, extrai ou abre nada disso. -
/AcroFormsozinho não dispara esta família. Um formulário não é conteúdo ativo; ele é reportado na evidência apenas como contexto. - Evidência retornada
-
Um booleano por construto (
javaScript,openAction,launch,embeddedFiles, maisacroFormcomo contexto), uma lista legívelfounde até 50containersinformando a flag, a chave de dicionário, o número do objeto e o caminho em que cada ocorrência foi encontrada. TambémscanScope: "dictionary-keys"econtentStreamsScanned: false, para que a fronteira de detecção esteja declarada no relatório em vez de presumida. - Causas legítimas
-
Formulários interativos com scripts de validação ou cálculo de campos são
inteiramente normais, e muitos formulários fiscais, governamentais e de
seguros estão cheios deles.
/OpenActioné comumente usado para algo tão inócuo quanto "abrir com zoom de 100%" ou "ir para a página 1". PDFs de portfólio e padrões de fatura eletrônica como ZUGFeRD e Factur-X incorporam anexos por decisão de projeto — uma fatura XML legítima dentro de um PDF vai dispararembeddedFilestoda vez. - Em um documento criptografado, as chaves de dicionário continuam legíveis, mas uma ação carregada dentro de um object stream criptografado não pode ser examinada, então a lista pode estar incompleta — o detalhe do sinal diz isso explicitamente quando é o caso.
- Lógica de severidade
- média sempre que qualquer um dos quatro construtos está presente; caso contrário, silenciosa. Não há escalada, porque a relevância do conteúdo ativo para fraude depende quase inteiramente do tipo de documento — um contexto que só você tem.
4. Assinaturas e estrutura
signature-coverage
info alta- O que detecta
-
Se o
/ByteRangede cada assinatura de fato cobre o arquivo inteiro./ByteRangeé um array de pares deslocamento/comprimento que nomeia exatamente quais bytes uma assinatura protege — normalmente tudo, exceto a lacuna onde fica o próprio valor da assinatura. A Tamperlens calcula o maior deslocamento coberto e o compara com o tamanho do arquivo. Qualquer coisa além dele foi anexada após a assinatura e não está protegida por aquela assinatura. - Este é o achado estrutural mais forte do motor, e é aritmética em vez de criptografia: dois inteiros, nenhum certificado necessário, nenhuma cadeia de confiança consultada. Ele vale independentemente de a matemática da assinatura validar — e é exatamente por isso que merece ser reportado separadamente da validação.
- Evidência retornada
-
Por assinatura: número do objeto,
/SubFilter, o array/ByteRangebruto,coveredEnd,bytesAfterCoverage,coversWholeFilee o tamanho total do arquivo. MaisuncoveredCounte a contagem de revisões do documento. - Causas legítimas
- O mecanismo em si é uma parte normal e intencional do PDF: um segundo signatário, ou um salvamento incremental legítimo, como adicionar uma anotação permitida a um documento já assinado, produz bytes fora do intervalo da primeira assinatura. O PDF tem um conceito inteiro — as permissões DocMDP — para expressar quais mudanças posteriores um signatário permitiu. A Tamperlens reporta a lacuna de cobertura; ela não avalia se a mudança era permitida. Fluxos com múltiplas assinaturas, portanto, vão disparar este sinal legitimamente.
- Duas coisas que esta família explicitamente não faz: verificar a criptografia da assinatura, e validar o certificado do signatário ou sua cadeia de confiança. São trabalhos separados, e um relatório de cobertura não substitui nenhum dos dois.
- Lógica de severidade
-
Nenhum campo de assinatura: silenciosa.
alta quando ao menos uma assinatura tem um
/ByteRangeinterpretado que não alcança o fim do arquivo. info quando o documento está assinado e cada assinatura abrange o arquivo inteiro — reportado deliberadamente, como um fato positivo que vale ter no relatório em vez do silêncio.
structure-warnings
baixa média- O que detecta
-
Tudo o que o parser não conseguiu reconciliar entre a contabilidade
interna do arquivo e seus bytes reais: entradas de referência cruzada
apontando para deslocamentos que não contêm o objeto que afirmam conter,
seções de referências cruzadas ilegíveis ou reconstruídas, subseções e
entradas malformadas, laços na cadeia de referências cruzadas,
comprimentos de stream que discordam do stream, referências pendentes e
bytes sobrando depois do
%%EOFfinal. - Um PDF corretamente escrito é internamente autoconsistente. Irregularidades significam ou um produtor fora de conformidade, ou manipulação posterior dos bytes — e elas também delimitam quanto do documento o resto do relatório pôde examinar, e é por isso que são reportadas mesmo quando parecem sem graça.
- Esta família também carrega a divulgação de documento criptografado, descrita por completo na próxima seção.
- Evidência retornada
-
warningCount, a listacodesdeduplicada e ordenada, até 25 avisos individuais com mensagens,xrefConflicts,trailingGarbageBytes,revisionChainBrokeneparseTruncated. - Causas legítimas
- Produtores fora de conformidade estão em toda parte. Muitos geradores de longa vida e inteiramente honestos emitem deslocamentos de referência cruzada levemente errados, porque todo leitor de PDF do mundo real os conserta em silêncio e ninguém nunca percebeu. Arquivos que passaram por gateways de e-mail, antivírus ou caminhos de transferência ingênuos podem adquirir bytes sobrando no final. Um download truncado produz uma versão espetacular deste sinal e não significa nada sobre a autenticidade do documento.
- Lógica de severidade
-
Silenciosa quando não há avisos e o documento não está criptografado.
média quando há ao menos um conflito de referência
cruzada, ou ao menos um aviso cujo código está no conjunto sério —
xref-conflict,bad-offset,unparseable-xref,bad-xref-stream,bad-xref-subsection,bad-xref-entry,xref-chain-loop,xref-reconstructed,stream-length-mismatch— ou seja, a contabilidade do arquivo contradiz seus bytes em vez de estar meramente incompleta. baixa nos demais casos.
Documentos criptografados: o que o relatório diz que não fez
Quando o trailer referencia um dicionário /Encrypt, as strings e
os streams do arquivo são texto cifrado. Valores de metadados, nomes de fontes
incorporadas e streams de conteúdo de página não podem ser lidos sem a senha,
que a Tamperlens não possui e nunca pede.
O comportamento ingênuo seria rodar todas as famílias de sinais mesmo assim e reportar o que disparasse sobre o ruído. Em vez disso, as cinco famílias dependentes de conteúdo não rodam de forma alguma e a omissão é divulgada como parte de primeira classe do relatório:
metadata-mismatchdate-anomaliesproducer-fingerprintfont-anomalieshybrid-page
A divulgação chega como o sinal structure-warnings, com o título
"Documento criptografado — conteúdo não analisado", carregando
evidence.code: "encrypted-content-not-analysed", a lista
explícita suppressedFamilies, contentAnalysed: false
e structuralAnalysisRan: true. Ela viaja em
structure-warnings em vez de chegar como sinal próprio por causa
da invariante de um sinal por família.
A análise estrutural não é afetada e de fato roda. A contagem de revisões, o
par /ID do trailer, os intervalos de bytes das assinaturas e a
consistência das referências cruzadas são todos legíveis sem a senha, assim
como a detecção de dicionários de ação — chaves de dicionário também não são
criptografadas. Metadados que por acaso sejam legíveis como texto simples
ainda são reportados: um produtor pode deixar o pacote XMP em claro via
/EncryptMetadata false, e um teste de plausibilidade de texto
deixa isso passar enquanto descarta campos cujos bytes não são texto legível.
Quaisquer campos descartados dessa forma são nomeados em
metadataFieldsSuppressed.
Leia isto com atenção ao triar um arquivo criptografado. A ausência de um sinal de nível de conteúdo no relatório de um documento criptografado não diz absolutamente nada sobre aquele documento. Essas verificações não rodaram. Trate o relatório como estritamente estrutural, e não como um atestado de idoneidade — e note que muitos emissores protegem extratos com senha por rotina, então a criptografia não é, por si só, um sinal.
Como os sinais viram uma pontuação
summary.riskScore é uma agregação ponderada de 0 a 100, não uma
probabilidade e não uma confiança. As regras são curtas o bastante para serem
enunciadas por completo — e esse é o ponto: você deve conseguir reconstruir o
número a partir da lista de sinais.
-
Pesos.
high70,medium25,low10,info0. -
Pisos. Um sinal
highforça a pontuação para pelo menos 70; ummediumforça pelo menos 30. - Retornos decrescentes. Os dois primeiros sinais de uma dada severidade contribuem com seu peso integral; a partir daí, cada sinal adicional da mesma severidade contribui com uma fração que decai acentuadamente. Um acúmulo de achados fracos converge em vez de somar indefinidamente.
-
A faixa alta é reservada. Sem nenhum sinal
highpresente, a pontuação é limitada a 69, diga o que disser a aritmética. Assim,riskBand === "high"é exatamente equivalente a "pelo menos um achado que, por si só, estabelece uma mudança". -
Faixas. Abaixo de 30,
low; de 30 a 69,elevated; 70 ou mais,high. -
signalCountconta os sinais acima deinfo. Um achado informativo é visível no relatório, mas invisível para a contagem e para a pontuação.
Os pesos são versionados por engineVersion: alterá-los é uma
mudança de versão, então uma pontuação que você registrou no trimestre passado
continua significando o que significava. O motor é determinístico — bytes
idênticos produzem um relatório idêntico, exceto pelo id de cada
chamada — o que significa que você pode fixar fixtures e testar por regressão
os seus próprios limiares contra nós.
Como usar isto com honestidade
Três hábitos que separam uma etapa de triagem útil de um gerador de clientes furiosos:
- Estabeleça a baseline antes de definir limiares. Rode pelo motor documentos que você acredita serem genuínos, agrupados por emissor, e observe quais sinais disparam normalmente na sua população. Strings de producer e hábitos de revisão variam enormemente entre instituições.
- Reporte o fato, não a inferência. "Este arquivo contém duas revisões e nomeia um editor de PDF online" é defensável e específico. "Nosso sistema marcou este documento como fraudulento" não é nenhum dos dois — e é a frase que acaba em uma reclamação.
- Correlacione. Um único sinal de severidade média é uma pergunta. Um editor de consumo mais uma revisão que sobrescreve conteúdo mais dois subconjuntos de um mesmo tipo de letra é uma história coerente — e a história é aquilo sobre o que um revisor humano pode agir.
Veja o relatório do seu próprio arquivo
O verificador gratuito roda todas as famílias descritas nesta página e exibe a evidência completa — sem conta, nada é armazenado. Para rodá-lo no seu próprio pipeline, veja o guia rápido da API ou crie uma conta para uma chave com 25 documentos grátis por mês.
A Tamperlens reporta sinais de risco, não veredictos de autenticidade. Sinais podem ter causas legítimas; combine-os com a sua própria lógica de decisão.
Leitura relacionada
- Forense de metadados de PDF (em inglês) Onde cada peça de evidência vive fisicamente no formato de arquivo.
- Como saber se um PDF foi editado As mesmas verificações feitas à mão, com comandos de shell.
- Sinais de fraude em extratos bancários (em inglês) O guia de campo aplicado a fluxos de crédito, BNPL, proptech e onboarding.
- Guia rápido e preços da API Autenticação, as duas formas de requisição, o JSON do relatório anotado, cotas.