如何创建多语言PDF?

时间:2016-03-07 09:29:27

标签: shell pdf pdf-generation polyglot

我喜欢阅读PoC || GTFO问题,当我第一次发现它时,我发现了一件令人瞩目的事情,就是他们PDF文件的“多语言”特性。

让我们解释一下:当你考虑他们的8th issue时,你可以从中解压缩文件;通过将其作为脚本运行来执行他们正在谈论的加密,甚至更好(更糟糕的是),在他们的第9个问题中,您甚至可以将其作为音乐文件播放!

我目前正在每周编写小脚本,每次在LaTeX中编写一个小页面PDF来解释上述脚本。所以我真的很高兴能够创建相同类型的PDF文件。可悲的是,他们在第一期中(部分)解释了如何包含zip文件,但他们通过三个小的cmd行草图解释了这一点。

所以我的问题基本上是: 如何创建这样的多语言PDF文件,其中包含zip等内容以及可以像普通脚本一样使用参数运行的shell脚本?

我在这里询问创作的过程,而不只是解释这是如何可能的。对我来说,理想的方法是已经有一些脚本或程序可以轻松创建这样的PDF文件。

我试图在网上搜索关键字“polyglot files”和其他类似的关键字并且无法找到任何有用的匹配项。也许这个过程有另一个名字?

我已经阅读了presentation by Julia Wolf,它解释了事情是如何运作的,但我遗憾地没有时间将知识应用到现实世界,因为我很遗憾不习惯使用文件头和PDF的构建方式。

编辑: 好的,我已经阅读了更多内容,发现7th edition of PoC||GTFO对于这个主题非常有用。如果我有更多时间考虑它,我可能最终能够创建自己的脚本来执行这样的多语言PDF文件。

2 个答案:

答案 0 :(得分:1)

在参加Ange的谈话之后,我自己也和polyglots一起玩,并且还亲自与他交谈。您确实需要了解文件格式才能将它们嵌套到彼此中 但是,长话短说,这里有一些我认为对创建polyglots非常有用的链接:

Some older Google Code Trunk
PoC of the polyglot stuff

特别是第二个链接(到github)将帮助您创建polyglots,同时也了解它们的工作方式以及它们的实现方式。由于它主要是Python的东西而且写得非常好/干净,因此非常有用且易于理解。

答案 1 :(得分:1)

我觉得解剖一些文件格式是一个很好的起点。您可以通过Google找到针对不同文件类型的许多文件格式规范,但它们可能很难阅读,可能会花一些时间翻译成您正在使用的任何语言。

PDF:https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf

ELF:https://www.cs.cmu.edu/afs/cs/academic/class/15213-s00/doc/elf.pdf

ZIP:http://kat.sdf.org/zip_file_format.txt

您选择的语言需要一种方法来读取和写入原始字节(不仅仅是ascii字母数字),因此C可能更适合直接访问内存。一些Python技巧可以帮助您轻松地开源脚本。

要剖析文件,您可能需要构建一个类似https://github.com/kvesel/zipbrk/的工具来将它们分开,然后将它们全部重新组合成多字节格式。例如,zip不需要部分标题在开头(或者甚至是连续的),并且PDF幻数也可以出现在文件中的多个位置。我也相信我记得一个多语言工具被包含在一个PoC || GTFO出版物中(可能是8或2期),作为pdf文件中的多语言。

不要忘记黑客圣经! :) https://nostarch.com/gtfo