1. 程式人生 > >暴力窮舉zip壓縮文件的密碼

暴力窮舉zip壓縮文件的密碼

src extract pre code margin import auto right dir

  生成密碼的方式類似與時鐘,末尾遍歷完了第k位所有的字符,就讓第k位的前一位到下一位字符,第k位回到第0個字符。

  對python還不太熟悉,效率比較低,但是能破解簡單的密碼。

import zipfile
#密碼可能有的字符
testSetstr = "w.abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$%&‘()*+,-/:;<=>?@[\]^_`{|}~"
# testSetstr = "0123456789"
#
testSetLen = len(testSetstr)    #字符中長度
maxtestLen = 5 #要猜的密碼的最大長度,時間耗時越久。 filename = test.zip #要解壓的文件名 filedir = data/ #解壓路徑 def testPassword(teststr): r = zipfile.is_zipfile(filename) if r: fz = zipfile.ZipFile(filename,r) try: for file in fz.namelist(): fz.extract(file,filedir,pwd
=str.encode(teststr)) print("密碼是",teststr) return True except: pass fz.close() else: print(不是zip文件,不能解壓) return True return False def test(n): alist = [0] * n while(alist[0] < testSetLen): testlist
= [] for i in range(n): testlist.append(testSetstr[alist[i]]) teststr = "".join(testlist) if(testPassword(teststr)): return True alist[n - 1] += 1 for i in range(n-1,0,-1): if(alist[i] > testSetLen - 1): alist[i] = 0 alist[i - 1] += 1 if(i - 1 == 0): print("進度 ",100.0 * alist[i - 1] / testSetLen ,"%") else: break return False def main(): for i in range(maxtestLen): print("正在測試長度為",i + 1,"的密碼。") if(test(i + 1)): return main()

技術分享

暴力窮舉zip壓縮文件的密碼