2015-01-17 5 views
16

Я хочу проанализировать объект потока в PDF-файле, который закодирован с использованием /FlateDecode.Как декодировать поток PDF?

Есть ли инструменты, позволяющие декодировать такое кодирование (ASCII85decode, LZWDecode, RunlenghtDecode и т. Д.), Используемые в PDF-файлах?

Контент потока, скорее всего, является файловой структурой PE, которую PDF, вероятно, будет использовать позже в эксплоите.

Кроме того, в PDF есть две таблицы xref, это хорошо, но также и два %% EOF, которые следуют за xref.

Является ли присутствие этих прав? (Примечание: второй xref указывает на 1-й xref используя имя /prev

это xref относится ко второму 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 

второй xref:

 
xref 
0 5 
0000000000 65535 f 
0000000010 00000 n 
0000000067 00000 n 
0000000136 00000 n 
0000000373 00000 n 
trailer 
> 
startxref 
429 
%%EOF 

ответ

7
  1. "Два xref таблицы и два %%EOF"?

    Это само по себе не является показателем вредоносного файла PDF. Может быть два или даже больше экземпляров каждого, если файл был сгенерирован с помощью функции «инкрементного обновления» . (Каждый файл с цифровой подписью PDF такой, и каждый файл, который был изменен в Acrobat и сохранен с помощью кнопки/меню 'Save' вместо 'Сохранить как ...' кнопка/меню тоже такая.)

  2. «Как декодировать сжатый поток PDF из определенного объекта»?

    Посмотрите Didier Stevens' Python скрипт pdf-parser.py. С помощью этого инструмента командной строки вы можете сбросить декодированный поток любого объекта PDF в файл. Пример команды для дампа поток объекта в формате PDF номером 13:

    pdf-parser.py -o 13 -f -d obj13.dump my.pdf 
    
+0

Спасибо за ответ. Я посмотрю на парсер ... – rebel87

+0

* «Каждый файл с цифровой подписью PDF такой» * - Не обязательно. Только если изменения будут добавлены после подписания без нарушения сигнатуры, инкрементное обновление строго необходимо. – mkl

+0

@mkl: можете ли вы показать мне пример подписанного PDF, который вы добавили в него после подписания, и где эти изменения не нарушают подпись? –

9

A%%EOF Комментарий должен быть представлен в конце файла, любые другие комментарии (любая строка начинается %) могут присутствовать в любой точке файла. Так что да, 2 %%EOF комментарии совершенно верны. Это задокументировано в PDF Reference. Пример 3.11 в Справочном руководстве по документу 1.7 на стр. 112 приведен в примере, описанном в спецификации, которая имеет структуру, которую вы описываете. Это файл PDF, который был постепенно обновлен.

Обратите внимание, что более поздние версии PDF могут иметь перекрестные ссылки, которые сами сжаты.

Самый простой способ расшифровать файл PDF, чтобы использовать инструмент, предназначенный, чтобы сделать это, например MuPDF может сделать это с «mutool clean -d <input pdf file> <output PDF file>» распаковывает (-d) все сжатые потоки в файл PDF и записать вывод в новый PDF-файл.

В противном случае вам нужно будет использовать что-то вроде zlib для декомпрессии Flate и LZW, вам нужно будет написать собственную декомпрессию RunLength, а также ASCIIHex85, я думаю. Не говоря уже о JBIG, JPEG и JPEG2000, если вы хотите, чтобы изображения также декодировались.

+0

Thankyou для ответа KENS – rebel87

+2

Некоторые довольно глупые парни downvoted вопрос ОП, а также голосовала, чтобы закрыть его. Пожалуйста, поддержите вопрос, чтобы сбалансировать это ... –

3

Вы можете использовать RUPS для анализа PDF и экспорта или просто посмотреть на уже декодированный поток. О %% EOF вы можете иметь столько же, сколько добавлено в PDF.

+0

Thankyou Paulo за ответ – rebel87

+0

Некоторые довольно глупые ребята отказались от вопроса OP, а также проголосовали за его закрытие. Пожалуйста, повысьте вопрос, чтобы сбалансировать это ... –

2

Что касается инструментов, как указано в других ответах существует целый ряд инструментов, которые могут быть использованы для распаковки потоков (на Command- линии или иным образом). Тем не менее, есть также ряд инструментов, которые упрощают просмотр PDF-файла, позволяя вам ходить по дереву объектов и легко видеть, что внутри сжатых потоков. Я использовал два:

1) callas pdfToolbox Desktop (осторожно, я связан с этой компанией). В pdfToolbox есть опция «Исследуйте PDF», которая позволяет вам видеть объекты, связанные со страницей, вплоть до фактических операторов страниц.

2) Enfocus Browser. Я не уверен, что это еще нужно найти, но этот инструмент позволит вам открыть корень дерева объектов PDF-файла, а затем представить иерархию объектов таким образом, который очень похож на Finder on Mac с файлом системы. Браузер даже позволит вам редактировать файлы PDF (вы должны действительно знать, что вы делаете в этом случае), редактируя объекты низкого уровня, создавайте новые объекты или изменяя содержимое потоков. Очень круто.

Update: Оказывается, браузер по-прежнему доступен, вы можете скачать его здесь: http://www.enfocus.com/en/products/browser/

+0

Спасибо Дэвиду, я обязательно посмотрю на оба инструмента. .. – rebel87