[Day25] 忘记压缩档密码怎麽办? 用Python多重处理快速破解压缩档密码!

因为公司政策规定,传机密压缩档的时候都要加上密码,
但是收到的档案这麽多,每次都要翻信找密码真的太麻烦,而且不小心删掉信就直接完蛋...

若公司压缩档密码只有数字的话,就可以用本程序破解喔~
(密码有英文加数字的话要用之前提过的密码本破解)

但是如果公司密码是多位数的数字,等到破解完档案,可能已经下班了><
所以这时候用 multiprocessing 解码,速度就会加快很多!

使用环境

程序码

import pyzipper
from multiprocessing import Process
import time

zip_file = pyzipper.AESZipFile("加密压缩档.zip",'r')
zip_flag = False
start_time = time.time()

# 开始破解压缩档密码
def decode(start_pwd, end_pwd):
    global zip_file
    global zip_flag
    for password in range(start_pwd, end_pwd):
        try:
            if zip_flag == False:
                zip_file.extractall(pwd=str(password).encode())
                print('成功破解,密码:{}'.format(password))
                end_time = time.time()
                print("总共花费{}秒".format(end_time-start_time))
                zip_file.close()
                zip_flag = True
                break
            else:
                break
        except:
            pass
        
if __name__ == '__main__': 
    print("正在破解...")
    process_num = 1 # 设定要使用的process数量
    workload = 12000 # 设定每个process负责破解的密码数量
    processes = []
    # 建立processes
    for i in range(process_num):
        curr_process = Process( target = decode, args=(i*workload, (i+1)*workload))
        processes.append(curr_process)
    # 开始processes
    for p in processes:    
        p.start()
    # 等待各process完成
    for p in processes:
        p.join()

成果发表会
为了更方便看出multiprocessing的速度差异,我这边将密码范围设为0-12000,
分别设定用1、2、3、4、5个执行绪同时执行解密程序。
https://ithelp.ithome.com.tw/upload/images/20210925/201332864BTZdeOJx8.png

温馨小提醒

从上图结果可以看到,执行绪数量越多猜出密码的速度越快,
但是如果process设定超过当前机器的CPU核心数量的话,CPU间程序处理的切换成本反而会降低处理效率!
所以不一定设定越多process越好喔~

如果想知道当前机器的CPU核心数量可以用下列语法来查询:

import multiprocessing
cpus = multiprocessing.cpu_count()
print(cpus)

<<:  【没钱买ps,PyQt自己写】Day 10 - 以 QFileDialog 读取系统的档案、资料夹

>>:  Day 10 - 用 canvas 复刻 小画家 放大镜

[Day30] - 完赛、感想、心得

Day30 - 完赛、感想、心得 心得 坚持 - 坚持阿,哪次不坚持 当初觉得30天应该不难吧,就每...

Day01 - 【入门篇】Quick Start(1)

本系列文之後也会置於个人网站 开始之前~2?。开完笑的~ 但是想了许久,总觉的就这麽直接开始解释各...

[13th][Day4] 容器四五事

检查container 进程/处理程序(process) ps -aux 恩 .... 是个非常乾净...

【後转前要多久】# Day26 JS - 事件、监听

e - event HTML <body> <input type="b...

【2021法遵科技与电脑稽核专题竞赛】初赛即将开跑,欢迎师生踊跃报名!

本活动之专题竞赛,系将「电脑稽核」、「人工智慧应用於法遵与稽核」、「内控和风险管理」整合设计,用以推...