it-swarm-pt.tech

Como decodificar um fluxo PDF?

Desejo analisar um objeto de fluxo em um arquivo PDF que é codificado usando /FlateDecode.

Existem ferramentas que permitem decodificar essa codificação (código ASCII85, LZWDecode, RunlenghtDecode etc.) usada nos PDFs?

O conteúdo do fluxo provavelmente é uma estrutura de arquivo PE, que o PDF provavelmente usará posteriormente na exploração.

Além disso, existem duas tabelas xref no PDF, tudo bem, mas também duas %% EOF que seguem o xref.

A presença destes está correta? (Nota: O segundo xref aponta para o 1º xref usando o /prev name.

este xref refere-se ao segundo xref:

 xref 
 5 6 
 0000000618 00000 n 
 0000000658 00000 n 
 0000000701 00000 n 
 0000000798 00000 n 
 0000045112 00000 n 
 0000045219 00000 n 
 1 1 
 0000045753 00000 n 
 3 1 
 0000045838 00000 n 
 Trailer 
> 
 startxref 
 46090 
 %% EOF 

o segundo xref:

 xref 
 0 5 
 0000000000 65535 f 
 0000000010 00000 n 
 0000000067 00000 n 
 0000000136 00000 n 
 0000000373 00000 n 
 Trailer 
> 
 Startxref 
 429 
 %% EOF 
23
rebel87
  1. "Duas tabelas xref e duas %%EOF "?

    Isso por si só não é uma indicação de um arquivo malicioso PDF. Pode haver duas ou mais instâncias de cada uma, se o arquivo foi gerado por meio da "atualização incremental" . (Cada arquivo PDF assinado digitalmente é assim, e cada arquivo que foi alterado no Acrobat e salvo com o uso de 'Salvar' botão/menu em vez de 'Salvar como ...' botão/menu também é assim.)

  2. "Como decodificar um fluxo comprimido PDF de um objeto específico"?

    Dê uma olhada em Didier Stevens ' Python script pdf-parser.py. Com esta ferramenta de linha de comando, você pode despejar o fluxo decodificado de qualquer objeto PDF em um arquivo. Exemplo de comando para despejar o fluxo de PDF número do objeto 13:

    pdf-parser.py -o 13 -f -d obj13.dump my.pdf
    
15
Kurt Pfeifle

[~ # ~] a [~ # ~] %%EOF comentário deve estar presente no final do arquivo, qualquer outro comentário (qualquer linha que comece com %) pode estar presente em qualquer ponto do arquivo. Então sim, 2 %%EOF comentários são perfeitamente válidos. Isso está documentado em Referência em PDF . Veja o exemplo 3.11 no 1.7 PDF Manual de referência na página 112) para obter um exemplo documentado na especificação que possui a estrutura que você descreve.Este é um arquivo PDF que foi atualizado gradualmente.

Observe que as versões mais recentes do PDF podem ter fluxos de referência cruzada, que são compactados.

A maneira mais fácil de decodificar um arquivo PDF é usar uma ferramenta destinada a fazê-lo, por exemplo, o MuPDF pode fazer isso com "mutool clean -d <input pdf file> <output PDF file> "descompactará (-d) todos os fluxos compactados em um arquivo PDF e escreva a saída em um novo arquivo PDF.

Caso contrário, você precisará usar algo como zlib para descompressão Flate e LZW, precisará escrever sua própria descompressão RunLength, bem como o ASCIIHex85, eu acho. Sem mencionar JBIG, JPEG e JPEG2000, se você quiser que as imagens também sejam decodificadas.

11
KenS

Com relação às ferramentas, conforme declarado em outras respostas, existem várias ferramentas que podem ser usadas para descomprimir fluxos (na linha de comando ou de outra forma). No entanto, também existem várias ferramentas que facilitam a inspeção de um arquivo PDF, permitindo que você percorra a árvore de objetos e veja facilmente o que há dentro dos fluxos compactados. As duas que usei são :

1) callas pdfToolbox Desktop (cuidado, estou associado a esta empresa). O pdfToolbox possui uma opção "Explorar PDF", que permite ver os objetos associados a uma página, incluindo os operadores de página atuais.

2) Enfocus o navegador. Essa ferramenta permitirá que você abra a raiz da árvore de objetos de um arquivo PDF e, em seguida, apresente a hierarquia de objetos de maneira muito semelhante à que o Finder no Mac faz com os sistemas de arquivos. O navegador ainda permitem editar arquivos PDF arquivos (você realmente deve saber o que está fazendo neste caso)) editando objetos de baixo nível, criando novos objetos ou alterando o conteúdo dos fluxos.

Foi-me indicado que o Enfocus Browser não está mais disponível, como eu disse na versão anterior da minha resposta, mas na verdade está. Você só precisa criar uma conta Enfocus para fazer o download aqui: https://www.enfocus.com/en/support/downloads/old-product-installers

4
David van Driessche

Você pode usar RUPS para analisar o PDF e exportar ou apenas observar o fluxo já decodificado. Sobre o %% EOF você pode ter o número de anexos feitos no PDF.

4
Paulo Soares