???????如何利用python破解zip加密文件
前言:
日常工作中,會遇到一些加密的zip文件,但是因為某些原因或者時間過長,密碼不知道了。但是zip文件中文件有很重要很必須。那么,我們試一試萬能的Python,暴力破解密碼。
一、破解zip加密文件的思路
- 準(zhǔn)備一個加密的zip文件。
- zipfile模塊可以解壓zip文件。
解壓時可以提供密碼zfile.extractall("./", pwd=password.encode("utf8"))
- itertools.permutations實現(xiàn)全字符的全排列。
通過函數(shù)itertools.permutations("abc", 3)實現(xiàn)全字符的全排列:abc/acb/bca/bac/cab/cba
二、實例代碼演示
0、zip的壓縮方式
本文介紹的zip文件知道密碼一共是4位的,密碼字符的范圍是a-z1-0。并且不存在重復(fù)字符的,不會有“aabb”的密碼。zip壓縮時是選擇了zip傳統(tǒng)加密!
1、解壓zip文件
導(dǎo)入zipfile模塊,使用其中的extractall()函數(shù)。
import itertools
filename = "readme.zip"
# 創(chuàng)建一個解壓的函數(shù),入?yún)槲募兔艽a
# 并使用try-except,避免報錯中斷程序。
def uncompress(file_name, pass_word):
try:
with zipfile.ZipFile(file_name) as z_file:
z_file.extractall("./", pwd=pass_word.encode("utf-8"))
return True
except:
return False2、實現(xiàn)密碼字符的全排列
import zipfile
import itertools
filename = "readme.zip"
# 創(chuàng)建一個解壓的函數(shù),入?yún)槲募兔艽a
# 并使用try-except,避免報錯中斷程序。
def uncompress(file_name, pass_word):
try:
with zipfile.ZipFile(file_name) as z_file:
z_file.extractall("./", pwd=pass_word.encode("utf-8"))
return True
except:
return False
# chars是密碼可能的字符集
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for c in itertools.permutations(chars, 4):
password = ''.join(c)
print(password)
result = uncompress(filename, password)
if not result:
print('解壓失敗。', password)
else:
print('解壓成功。', password)
break文件壓縮時,一些注意的事項:

三、密碼是幾位未知,也可以破解密碼
查過一些資料,zip壓縮文件密碼最長為12位,在原來的程序上增加上一個for循環(huán)就可以實現(xiàn)破解密碼了。
import zipfile
import itertools
filename = "readme.zip"
def uncompress(file_name, pass_word):
try:
with zipfile.ZipFile(file_name) as z_file:
z_file.extractall("./", pwd=pass_word.encode("utf-8"))
return True
except:
return False
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for i in range(12):
for c in itertools.permutations(chars, i):
password = ''.join(c)
print(password)
result = uncompress(filename, password)
if not result:
print('解壓失敗。', password)
else:
print('解壓成功。', password)
break總結(jié)
此方法可以是實現(xiàn)破解zip文件的密碼,python可以完成一些好玩的事情。
到此這篇關(guān)于如何利用python破解zip加密文件的文章就介紹到這了,更多相關(guān)python破解加密文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python PyQt5實戰(zhàn)項目之查詢器的實現(xiàn)流程詳解
PyQt5以一套Python模塊的形式來實現(xiàn)功能。它包含了超過620個類,600個方法和函數(shù)。它是一個多平臺的工具套件,它可以運行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權(quán)之間選擇2021-11-11
django處理select下拉表單實例(從model到前端到post到form)
這篇文章主要介紹了django處理select下拉表單實例(從model到前端到post到form),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
詳解向scrapy中的spider傳遞參數(shù)的幾種方法(2種)
這篇文章主要介紹了詳解向scrapy中的spider傳遞參數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python中的enumerate() 函數(shù)用法詳解
enumerate()是python的內(nèi)置函數(shù),將一個可遍歷iterable數(shù)據(jù)對象(如list列表、tuple元組或str字符串)組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)當(dāng)中,這篇文章主要介紹了Python中的enumerate() 函數(shù)用法詳解,需要的朋友可以參考下2024-01-01
PyQt5高級界面控件之QTableWidget的具體使用方法
這篇文章主要介紹了PyQt5高級界面控件之QTableWidget的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

