Truepolyglot is polyglot file generator project. This means that the
generated file is composed of several file formats. The same file can be
opened as a ZIP file and as a PDF file for example. The idea of this
project comes from work of Ange Albertini,
International Journal of Proof-of-Concept or Get The Fuck
Out and Julia
Wolf
that explain how we can build a polyglot file.
Polyglot file can be fastidious to build, even more if you want to
respect correctly file format. That's why I decided to build a tool to
generate them.
My main motivation was the technical challenge.
Features and versions
Description Version
Build a polyglot file valid as PDF and ZIP format and that can be opened with 7Zip and Windows Explorer POC Add a stream object in PDF part POC Polyglot file checked without warning with pdftocairo >= 1.0 Polyglot file checked without warning with caradoc >= 1.0 Rebuild PDF Xref Table >= 1.0 Stream object with correct length header value >= 1.0 Format "zippdf", file without offset after Zip data >= 1.1 Polyglot file keep original PDF version >= 1.1.1 Add "szippdf" format without offset before and after Zip data >= 1.2 Fix /Length stream object value and PDF offset for szippdf format >= 1.2.1 PDF object numbers reorder after insertion >= 1.3
Polyglot file compatibility
Software Formats status
Acrobat Reader pdfzip, zippdf OK Acrobat Reader szippdf KO Sumatra PDF pdfzip, zippdf, szippdf OK Edge pdfzip, zippdf, szippdf OK Firefox pdfzip, zippdf, szippdf OK 7zip pdfzip, zippdf OK with warning 7zip szippdf OK Explorer Windows pdfzip, zippdf, szippdf OK Info-ZIP (unzip) pdfzip, zippdf, szippdf OK Evince pdfzip, zippdf, szippdf OK pdftocairo -pdf pdfzip, zippdf, szippdf OK caradoc stats pdfzip OK java szippdf OK
Examples
PDF input file Zip input file Format Polyglot Comment
doc.pdf archive.zip pdfzip polyglot.pdf PDF/ZIP polyglot - 122 Ko orwell_1984.pdf file-FILE5_32.zip pdfzip polyglot.pdf PDF/ZIP polyglot - 1.3 Mo x86asm.pdf fasmw17304.zip pdfzip polyglot.pdf PDF/ZIP polyglot - 1.8 Mo doc.pdf archive.zip zippdf polyglot.pdf PDF/ZIP polyglot - 112 Ko electronics.pdf hello_world.jar szippdf polyglot.pdf PDF/JAR polyglot - 778 Ko hexinator.pdf eicar.zip (scan virustotal.com) pdfzip polyglot.pdf (scan virustotal.com) PDF/ZIP polyglot with Eicar test in Zip - 2.9 Mo
Usage
usage: truepolyglot format [options] output-file
Generate a polyglot file.
Formats availables:
* pdfzip: Generate a file valid as PDF and ZIP. The format is closest to PDF.
* zippdf: Generate a file valid as ZIP and PDF. The format is closest to ZIP.
* szippdf: Generate a file valid as ZIP and PDF. The format is strictly a ZIP. Archive is modified.
positional arguments:
{pdfzip,zippdf,szippdf}
Output polyglot format
output_file Output polyglot file path
optional arguments:
-h, --help show this help message and exit
--pdffile PDFFILE PDF input file
--zipfile ZIPFILE ZIP input file
--verbose {none,error,info,debug}
Verbosity level (default: info)
TruePolyglot v1.3
Code
git clone https://git.hackade.org/truepolyglot.git/
Download truepolyglot-1.3.tar.gz