diff options
Diffstat (limited to 'PolyglotFile/polyglotzipany.py')
-rw-r--r-- | PolyglotFile/polyglotzipany.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/PolyglotFile/polyglotzipany.py b/PolyglotFile/polyglotzipany.py new file mode 100644 index 0000000..133db4a --- /dev/null +++ b/PolyglotFile/polyglotzipany.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +import logging + +''' + |-------------------------------| - + |---------- Payload 1 ----------K1 | J1 + |-------------------------------| - + |---- ZIP Local File Header ----K2 | + |-------------------------------| - + |---------- Payload 2-----------K3 | J2 + |-------------------------------| - + |---- ZIP Central Directory ----K4 | + |-------------------------------| | + |--- End of Central Directory --K5 | + |-------------------------------| | +''' + + +class PolyglotZipAny(): + from ZipFileTransformer import Zip + + def __init__(self, Zip, payload1filename, payload2filename): + self.buffer = bytearray() + self.zip = Zip + 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() + + def generate(self): + self.zip.add_data_to_file(self.payload1, self.payload2, True) + self.buffer = self.zip.buffer + + def write(self, filename): + fd = open(filename, "wb") + fd.write(self.buffer) + fd.close() |