手把手教你使用Python解決簡(jiǎn)單的zip文件解壓密碼
簡(jiǎn)介
使用的核心模塊是python標(biāo)準(zhǔn)庫(kù)中的zipfile模塊。這個(gè)模塊可以實(shí)現(xiàn)zip文件的各種功能,具體可以查看官方參考文檔。這里的暴力破解的意思是對(duì)密碼可能序列中的值一個(gè)一個(gè)進(jìn)行密碼嘗試,這對(duì)人來(lái)說(shuō)是很難的,可是對(duì)計(jì)算機(jī)而言并不難。有時(shí)候我們下載的zip文件需要密碼解壓而我們不知道,需要付費(fèi)才知道。所以這里主要介紹兩種暴力破解的密碼:純數(shù)字密碼和英文數(shù)字組合密碼。
文件創(chuàng)建
首先測(cè)試文件為test.txt(僅包含單行文本),壓縮后文件為test.zip,壓縮密碼為2340,壓縮后刪除目錄下的txt文件。。



上圖注意勾選傳統(tǒng)加密。
純數(shù)字密碼
指的是不用0開(kāi)頭的數(shù)字密碼,0開(kāi)頭見(jiàn)后面的字母組合。原理就是zipfile模塊解壓壓縮文件時(shí),一旦密碼不正確,程序會(huì)終止,在try語(yǔ)句只有成功解壓的密碼才會(huì)執(zhí)行到extract函數(shù)調(diào)用后面的語(yǔ)句。
代碼:
import zipfile
import time
import threading
startTime = time.time()
# 判斷線(xiàn)程是否需要終止
flag = True
def extract(password, file):
try:
password = str(password)
file.extractall(path='.', pwd=password.encode('utf-8'))
print("the password is {}".format(password))
nowTime = time.time()
print("spend time is {}".format(nowTime-startTime))
global flag
# 成功解壓其余線(xiàn)程終止
flag = False
except Exception as e:
print(e)
def do_main():
zfile = zipfile.ZipFile("test.zip", 'r')
# 開(kāi)始嘗試
for number in range(1, 9999):
if flag is True:
t = threading.Thread(target=extract, args=(number, zfile))
t.start()
t.join()
if __name__ == '__main__':
do_main()

顯然,解壓成功,這里提一下這種編碼 密碼的方式只適用于傳統(tǒng)zip加密,winrar有一種新式的默認(rèn)加密方式,是不可以的。
字母數(shù)字混合密碼
這里情況密碼組合太多,為了防止內(nèi)存溢出,改用迭代器。這種情況費(fèi)時(shí)很久,可以閑來(lái)無(wú)事掛著腳本。這里再次壓縮文件,密碼為python。
import zipfile
import random
import time
import sys
class MyIterator():
# 單位字符集合
letters = 'abcdefghijklmnopqrstuvwxyz012345678'
min_digits = 0
max_digits = 0
def __init__(self, min_digits, max_digits):
# 實(shí)例化對(duì)象時(shí)給出密碼位數(shù)范圍,一般4到10位
if min_digits < max_digits:
self.min_digits = min_digits
self.max_digits = max_digits
else:
self.min_digits = max_digits
self.max_digits = min_digits
# 迭代器訪(fǎng)問(wèn)定義
def __iter__(self):
return self
def __next__(self):
rst = str()
for item in range(0, random.randrange(self.min_digits, self.max_digits+1)):
rst += random.choice(MyIterator.letters)
return rst
def extract():
start_time = time.time()
zfile = zipfile.ZipFile("test.zip")
for p in MyIterator(5, 6):
try:
zfile.extractall(path=".", pwd=str(p).encode('utf-8'))
print("the password is {}".format(p))
now_time = time.time()
print("spend time is {}".format(now_time-start_time))
sys.exit(0)
except Exception as e:
pass
if __name__ == '__main__':
extract()
字符的序列組合很多,需要等待。
補(bǔ)充說(shuō)明
很多人反饋這個(gè)方法無(wú)效,這主要是因?yàn)槲募窂讲徽_(我的代碼是默認(rèn)該P(yáng)ython腳本所在目錄下的zip文件進(jìn)行解壓的)和加密方式并非傳統(tǒng)加密。這種暴力破解方法只在自己大致記得密碼位數(shù)和密碼格式(如只有字母等)時(shí)比較實(shí)用,完全的暴力破解是不現(xiàn)實(shí)的,畢竟做加密的也不是白做的。
到此這篇關(guān)于手把手教你使用Python解決簡(jiǎn)單的zip文件解壓密碼的文章就介紹到這了,更多相關(guān)Python zip文件解壓密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3中celery異步框架簡(jiǎn)單使用+守護(hù)進(jìn)程方式啟動(dòng)
這篇文章主要介紹了python3中celery異步框架簡(jiǎn)單使用+守護(hù)進(jìn)程方式啟動(dòng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python3多線(xiàn)程爬蟲(chóng)實(shí)例講解代碼
本篇文章主要介紹了Python3多線(xiàn)程爬蟲(chóng)實(shí)例講解代碼,Python3使用threading模塊來(lái)進(jìn)行多線(xiàn)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
教你用Python腳本快速為iOS10生成圖標(biāo)和截屏
這篇文章主要介紹了教你用Python快速為iOS10生成圖標(biāo)和截屏的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
基于python 爬蟲(chóng)爬到含空格的url的處理方法
今天小編就為大家分享一篇基于python 爬蟲(chóng)爬到含空格的url的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python實(shí)現(xiàn)繪制3D地球旋轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)繪制出3D地球旋轉(zhuǎn)的效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02
用python實(shí)現(xiàn)超強(qiáng)的加密軟件
大家好,本篇文章主要講的是用python實(shí)現(xiàn)超強(qiáng)的加密軟件,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2022-01-01
python 如何用 Hypothesis 來(lái)自動(dòng)化單元測(cè)試
這篇文章主要介紹了python 如何用 Hypothesis 來(lái)自動(dòng)化單元測(cè)試,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
PyCharm+Pipenv虛擬環(huán)境開(kāi)發(fā)和依賴(lài)管理的教程詳解
這篇文章主要介紹了PyCharm+Pipenv虛擬環(huán)境作開(kāi)發(fā)和依賴(lài)管理的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
python實(shí)現(xiàn)汽車(chē)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)汽車(chē)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Python實(shí)現(xiàn)更改圖片尺寸大小的方法(基于Pillow包)
這篇文章主要介紹了Python實(shí)現(xiàn)更改圖片尺寸大小的方法,結(jié)合實(shí)例形式分析了Python基于Pillow包更改圖片屬性的相關(guān)技巧,需要的朋友可以參考下2016-09-09

