From fc7e44a646462315effed63ad28f6ce0f3241ec9 Mon Sep 17 00:00:00 2001 From: ben Date: Sat, 29 Sep 2018 14:06:08 +0200 Subject: Rename pdfraw to pdfany and allow 2 payloads. v1.5.2 --- PolyglotFile/__init__.py | 2 +- PolyglotFile/polyglotpdfany.py | 51 ++++++++++++++++++++++++++++++++++++++++++ PolyglotFile/polyglotpdfraw.py | 40 --------------------------------- 3 files changed, 52 insertions(+), 41 deletions(-) create mode 100644 PolyglotFile/polyglotpdfany.py delete mode 100644 PolyglotFile/polyglotpdfraw.py (limited to 'PolyglotFile') diff --git a/PolyglotFile/__init__.py b/PolyglotFile/__init__.py index 6800028..e6f6416 100644 --- a/PolyglotFile/__init__.py +++ b/PolyglotFile/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- from .polyglotpdfzip import PolyglotPdfZip -from .polyglotpdfraw import PolyglotPdfRaw +from .polyglotpdfany import PolyglotPdfAny from .polyglotzippdf import PolyglotZipPdf from .polyglotszippdf import PolyglotSZipPdf diff --git a/PolyglotFile/polyglotpdfany.py b/PolyglotFile/polyglotpdfany.py new file mode 100644 index 0000000..8b7289f --- /dev/null +++ b/PolyglotFile/polyglotpdfany.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +import logging + +''' + |-------------------------------| - + |--------- PDF Header ----------K1 | J1 + |-------------------------------| - + |---- PDF OBJ 1 = Payload 1 ----K2 | + |-------------------------------| - + |---- Original PDF Ojbects -----K3 | J2 + |-------------------------------| - + |-- PDF Last OBJ = Payload 2 ---K4 | + |-------------------------------| | + |---------- Xref Table ---------| | + |-------------------------------K5 | + |----------- Trailer -----------| | + |-------------------------------| | +''' + + +class PolyglotPdfAny(): + from PdfFileTransformer import Pdf + + def __init__(self, Pdf, payload1filename, payload2filename): + self.buffer = bytearray() + self.pdf = Pdf + self.payload1 = bytearray() + if payload1filename is not None: + with open(payload1filename, "rb") as f: + self.payload1 = f.read() + self.payload2 = bytearray() + if payload2filename is not None: + with open(payload2filename, "rb") as f: + self.payload2 = f.read() + + self.buffer = bytearray() + + def generate(self): + k2stream = self.payload1 + if len(k2stream) > 0: + self.pdf.insert_new_obj_stream_at_start(k2stream) + k4stream = self.payload2 + if len(k4stream) > 0: + self.pdf.insert_new_obj_stream_at_end(k4stream) + self.buffer = self.pdf.get_build_buffer() + + def write(self, filename): + fd = open(filename, "wb") + fd.write(self.buffer) + fd.close() diff --git a/PolyglotFile/polyglotpdfraw.py b/PolyglotFile/polyglotpdfraw.py deleted file mode 100644 index c524788..0000000 --- a/PolyglotFile/polyglotpdfraw.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging - -''' - |-------------------------------| - - |--------- PDF Header ----------K1 | J1 - |-------------------------------| - - |----- PDF OBJ 1 = RAW Data ----K2 | - |-------------------------------| - - |---- Original PDF Ojbects -----K3 | J2 - |-------------------------------| - - |---------- Xref Table ---------| | - |-------------------------------K5 | - |----------- Trailer -----------| | - |-------------------------------| | -''' - - -class PolyglotPdfRaw(): - from PdfFileTransformer import Pdf - - def __init__(self, Pdf, Raw_filename): - self.buffer = bytearray() - self.pdf = Pdf - self.raw_filename = Raw_filename - self.buffer = bytearray() - - def generate(self): - raw_buffer = bytearray() - with open(self.raw_filename, "rb") as f: - raw_buffer = f.read() - k2_stream = raw_buffer - self.pdf.insert_new_obj_stream_at_start(k2_stream) - self.buffer = self.pdf.get_build_buffer() - - def write(self, filename): - fd = open(filename, "wb") - fd.write(self.buffer) - fd.close() -- cgit v1.2.3