Hackvent_2018/Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/break_zip.py
Roman Hergenreder 5a963c7654 Day 8
2018-12-08 19:27:34 +01:00

53 lines
1.3 KiB
Python
Executable File

#!/usr/bin/python
from time import time
from itertools import chain, product
import zipfile
import os
import sys
import tempfile
import shutil
import sys
charset = "abcdefghijklmnopqrstuvwxyz"
charset = charset + charset.upper()
charset = charset + "0123456789- ."
#
def bruteforce(maxlength):
return (''.join(candidate)
for candidate in chain.from_iterable(product(charset, repeat=i)
for i in range(1, maxlength + 1)))
def main():
while True:
try:
myZip = zipfile.ZipFile("z.zip")
except zipfile.BadZipfile:
print("[!] There was an error opening your zip file.")
return
passwordFound = False
for password in bruteforce(1):
try:
myZip.extract("z.zip", "tmp/", password.encode("utf-8"))
shutil.move("tmp/z.zip", "z.zip")
sys.stdout.write(password)
sys.stdout.flush()
passwordFound = True
break
except Exception as e:
if 'Bad password for file' in str(e) or "Bad CRC-32 for file" in str(e):
pass
else:
print(e)
if not passwordFound:
print("Sorry, password not found.")
return
if __name__ == '__main__':
main()