python 破解並解壓zip壓縮檔案

2021-08-10 11:06:16 字數 3390 閱讀 5607

執行的環境是linux,用到的工具也是再linux 下的開源工具fcrackzip ,unbuntu和debian系統可以直接apt-get install fcrackzip

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

import zipfile

import commands

import sys

import re

import logging

import os

def zipfcrackzip_b(zip_filename):

'''暴力破解zip檔案密碼

:param zip_filename:zip檔案路徑

:return: 返回破解之後的密碼

'''if zip_filename.count(" ") != 0:

zip_filename=zip_filename.replace(" ","\ ")

if zip_filename.count("(") != 0:

zip_filename=zip_filename.replace("(","\(")

if zip_filename.count(")") != 0:

zip_filename=zip_filename.replace(")","\)")

try:

_,value_pass=commands.getstatusoutput("fcrackzip -b -u -c1 -l 4-8 "+zip_filename)

except exception as e:

logging.debug("unable to decipher the password exception : %s",

repr(e))

str_re_password=re.sub(".*== ","",value_pass)

return str_re_password[2:]

def zipfcrackzip_d(zip_filename,dic_file):

'''字典破解zip檔案密碼

:param zip_filename: zip檔案路徑

:param dic_file: 字典的路徑

:return: 返回破解之後的密碼

'''if zip_filename.count(" ") != 0:

zip_filename=zip_filename.replace(" ","\ ")

if zip_filename.count("(") != 0:

zip_filename=zip_filename.replace("(","\(")

if zip_filename.count(")") != 0:

zip_filename=zip_filename.replace(")","\)")

try:

_,value_pass=commands.getstatusoutput("fcrackzip -u -d -p "+dic_file+" "+zip_filename)

except exception as e:

logging.debug("unable to decipher the password exception : %s",

repr(e))

str_re_password=re.sub(".*== ","",value_pass)

return str_re_password[2:]

def unpacks_zip(file_name,out_dir):

'''解壓加密zip檔案

:param file_name: zip檔案

:param out_dir: 解壓的路徑

:return:

'''zip_tag=set()

try:

zip_file = zipfile.zipfile(file_name,"r")

except exception as e:

logging.debug("unpack zip file:%s exception : %s",file_name,

repr(e))

for file_list in zip_file.infolist():

if file_list.flag_bits & 0x01:

if file_list.filename.endswith(".zip"):

zip_tag.add(str(file_list.filename))

try:

zip_file.extract(file_list.filename,out_dir,zipfcrackzip_b(file_name))

except exception as e:

print (zipfcrackzip_b(file_name))

logging.debug("bad password for zip file %s , exception : %s",file_list.filename,

repr(e))

else:

try:

zip_file.extract(file_list.filename,out_dir)

except exception as e:

logging.debug("extract zip file %s , exception : %s",file_list.filename,

repr(e))

zip_file.close()

#遞迴呼叫解壓zip檔案中的zip

if zip_tag:

while zip_tag:

file_path=str(out_dir)+str(zip_tag.pop())

try:

unpacks_zip(file_path,out_dir)

except exception as e:

logging.debug("error for the zip_extract , exception : %s",

repr(e))

if __name__ == '__main__':

if len(sys.argv) < 3:

print ("usage: python xx.py input_file output_dir")

sys.exit(-1)

reload(sys)

sys.setdefaultencoding('utf-8')

file_name = sys.argv[1]

dir_name = sys.argv[2]

if file_name.endswith('.zip'):

unpacks_zip(file_name,dir_name)

如何使用Python破解ZIP或RAR壓縮檔案密碼

我們經常會從網路上 一些帶密碼的壓縮包,想要獲取裡面的內容,往往就要給提供商支付一些費用。想要白嫖其中的內容,常見的做法是搜尋一些壓縮包密碼破解軟體,但後果相信體驗過的人都知道。本文將會利用 python 破解壓縮包的密碼,這裡以 zip rar 為例。破解原理 其實原理很簡單,一句話概括就是 大力...

python 自動解壓並刪除zip檔案

如何自動解壓並刪除zip?import osimport shutil import time defscan file for f in os.listdir 由於這裡是當前路徑,所以需要把這個 檔案和你要處理的檔案放到同乙個資料夾裡 if f.endswith zip return fdef u...

Python實戰 暴力破解zip檔案解壓密碼

首先測試檔案為test.txt 僅包含單行文字 壓縮後檔案為test.zip,壓縮密碼為2340,壓縮後刪除目錄下的txt檔案。上圖注意勾選傳統加密。指的是不用0開頭的數字密碼,0開頭見後面的字母組合。原理就是zipfile模組解壓壓縮檔案時,一旦密碼不正確,程式會終止,在try語句只有成功解壓的密...