1. 程式人生 > 程式設計 >詳解python破解zip檔案密碼的方法

詳解python破解zip檔案密碼的方法

1、單執行緒破解純數字密碼

注意: 不包括數字0開頭的密碼

import zipfile,time,sys
start_time = time.time()
def extract():
  zfile = zipfile.ZipFile('IdonKnow.zip')#讀取壓縮包,如果用必要可以加上'r'
  for num in range(1,99999,1):
    try:
      pwd = str(num)
      zfile.extractall(path='.',pwd=pwd.encode('utf-8'))
      print ("當前壓縮密碼為:",pwd)
      end_time = time.time()
      print ('單執行緒破解壓縮包花了%s秒'%(end_time-start_time))
      sys.exit(0)
    except Exception as e:
      pass
if __name__=="__main__":
  extract()

破解結果:

在這裡插入圖片描述

2、多執行緒破解純數字密碼

注意: 不包括數字0開頭的密碼

import zipfile,threading

start_time = time.time()
flag = True # 用於判斷執行緒是否需要終止,為True時程式執行

def extract(password,file):
  try:
    password = str(password)
    file.extractall(path='.',pwd=password.encode('utf-8'))
    print ("當前壓縮密碼為:",password)
    end_time = time.time()
    print ('多執行緒破解壓縮包花了%s秒'%(end_time-start_time))
    global flag
    flag = False#成功解壓其餘執行緒終止
  except Exception as e:
    pass
def main():
  zfile = zipfile.ZipFile("test.zip",'r')
  for number in range(1,1):
    if flag:
      thr1 = threading.Thread(target=extract,args=(number,zfile))
      thr2 = threading.Thread(target=extract,zfile))
      
      thr1.start()
      thr2.start()
      
      thr1.join()
      thr2.join()
if __name__ == '__main__':
  main()

破解結果:

在這裡插入圖片描述

提示: 多執行緒對數字型的運算沒有多大幫助

3、破解英文+數字型的密碼

import random,zipfile,sys

class MyIter():
  cset = 'abcdefghijklmnopqrstuvwxyz0123456789'
  def __init__(self,min,max):#迭代器實現初始方法,傳入引數
    if min < max:
      self.minlen = min
      self.maxlen = max
    else:
      self.ninlen = max
      self.maxlen = min
  def __iter__(self):#直接返回slef實列物件
    return self
  def __next__(self):#通過不斷地輪循,生成密碼
    rec = ''
    for i in range(0,random.randrange(self.minlen,self.maxlen+1)):
      rec += random.choice(MyIter.cset)
    return rec
def extract():
  start_time = time.time()
  zfile = zipfile.ZipFile('test1.zip','r')
  for password in MyIter(1,4):#隨機迭代出1~4位數的密碼,在不明確位數的時候做相應的調整
    if zfile:
      try:
        zfile.extractall(path='.',pwd=str(password).encode('utf-8'))
        print ("當前壓縮密碼為:",password)
        end_time = time.time()
        print ('當前破解壓縮包花了%s秒'%(end_time-start_time))
        sys.exit(0)
      except Exception as e:
        print ('pass密碼:',password)
        pass
if __name__=="__main__":
  extract()

破解結果:

在這裡插入圖片描述

總結

以上所述是小編給大家介紹的python破解zip檔案密碼的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!