PDF: вложение, спрятанное опечаткой
epreuve_BAC_2004.pdf — 12 страниц экзаменационного задания, и все страницы картинками. pdftotext выдаёт только разделители страниц.
- Платформа
- Root-Me
- Носитель
- Приём
- вложенный файл с искажённым ключом в каталоге
- Инструменты
pdfdetach,pdf-parser,base64- Статус
- решено
Почему стандартный инструмент молчит
pdfdetach -list epreuve_BAC_2004.pdf
0 embedded files
pdfdetach ищет вложения строго по спецификации, ключом /EmbeddedFiles. А pdf-parser просто показывает все объекты подряд, и в каталоге документа видно ключ /Embeddedfiles с маленькой f. Опечатка, скорее всего намеренная, прячет файл от «правильных» утилит, но данные никуда не делись.
Извлечение
Имя вложения записано в hex: <48696464…> → Hidden_b33rs.txt. Описание файла (Filespec, объект 78) ссылается на поток (объект 77). Достаём поток с распаковкой:
pdf-parser -s Embedded epreuve_BAC_2004.pdf # найти, где упоминается вложение
pdf-parser -o 77 -f -d hidden.txt epreuve_BAC_2004.pdf # -f распаковать, -d сохранить
head -c 20 hidden.txt
/9j/4AAQSkZJRgABAQ…
/9j/4 в начале — это base64 от байтов FF D8 FF E0, то есть от JPEG. Последний шаг:
base64 -di hidden.txt > hidden.jpg && xdg-open hidden.jpg
На картинке и написан ответ.
[ответ скрыт] Это задача с Root-Me, а правила платформы просят не выкладывать ответы. Метод выше полный: по нему ответ получается за пару минут.
Что вынести
- Стандартный инструмент видит только стандартное. Если он говорит «ничего нет», смотри сырую структуру (
pdf-parser,qpdf --qdf,xxd). - Стоит выучить начала base64 у популярных форматов:
/9j/— JPEG,iVBOR— PNG,UEsDB— ZIP,JVBER— PDF.