53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
|
#!/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()
|