Ошибка Python zlib при брутфорсинге защищенного zip-файла - PullRequest
0 голосов
/ 17 января 2019

По сути, я пытаюсь написать скрипт для подбора защищенного zip-файла в python, который пробует каждую комбинацию символов (то есть aa, ba, ca, da и т. Д.). Но после нескольких попыток он находит странную ошибку, и я не могу найти нигде решения для этого.

Программа:

import zipfile as z

class zipVictim:
    def __init__(self,file):
        self.found = False
        self.password = ''
        self.file = file
        self.extracted_file_list = []

    def bruteforceAttack(self,start_char: int,end_char: int,length: int,deep_loop=False,print_mode=False):
        """
            Doc
        """

        def _loop_chain(self,file,start_char,end_char,length):

            lList = []
            sPass = ''
            iAttempt = 1

            for iInc in range(length):
                lList.append(start_char)

            while lList[len(lList)-1] < end_char:
                for iInc2 in range(start_char,end_char):
                    for iInc3 in range(len(lList)):

                        sPass = sPass + chr(lList[iInc3])

                        if iInc3 == 0:
                            lList[iInc3] = lList[iInc3] + 1
                        elif lList[iInc3 -1] > end_char:
                            lList[iInc3] = lList[iInc3] + 1
                            lList[iInc3 -1] = start_char
                    try:

                        if print_mode:
                            print("Attempt %s, password: %s" % (iAttempt,sPass),end='\r')
                            iAttempt = iAttempt + 1

                        oFile.extractall(pwd=sPass.encode())

                        self.extracted_file_list = oFile.namelist()
                        self.password = sPass
                        self.found = True

                        return self.found

                    except RuntimeError:
                        pass

                    sPass = ''

            return self.found     

        oFile = self.file

        if not deep_loop:
            _loop_chain(self,oFile,start_char,end_char,length)
        else:
            for iInc in range(length):
                _loop_chain(self,oFile,start_char,end_char,iInc+1)

if __name__ == '__main__':

    file = z.ZipFile('data.zip')
    s = zipVictim(file)
    s.bruteforceAttack(64,125,2,print_mode=True)

Ошибка получена:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\zipfile.py", line 925, in _read1
    data = self._decompressor.decompress(data, n)
zlib.error: Error -3 while decompressing data: invalid block type

Кто-нибудь знает, что вызывает эту ошибку и как ее решить?

...