利用Python对加密zip压缩包进行解压

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43913500/article/details/88412689
Python暴力破解加密ZIP
Welcome
功能介绍
主要代码展示
改进之处
运行效果
Welcome
这是本人初学Python学习编写的一个小小鸡肋程序。第一次写博客,如果有错误或者不好的地方欢迎指出~


功能介绍
用户输入压缩包的名称、路径
(比较简单,就是参数的传递,我也没有列出代码)
执行----等待数秒----成功破解
主要代码展示
#导库

 

import zipfile #压缩包的读写解压
import random
import sys
import time
from threading import Thread


Python的库真的挺强大#建立一个生成密码的类
#密码格式:4-18位(0-9)(a-z)(A-Z)(标点符号)
#可以先简单一点,密码只有012345哦

class MyIterator():
    letters = '012345'
    min_dig = 0
    max_dig = 0
    #5-6位
    def __init__(self,min_dig,max_dig):
        if min_dig < max_dig:
            self.min_dig = min_dig
            self.max_dig = max_dig
        else:
            self.min_dig = max_dig
            self.max_dig = min_dig

    #迭代器来循环
    def __iter__(self):
        return self
    def __next__(self):
        rst = str()
        for i in range(0,random.randrange(self.min_dig,self.max_dig +1)):
            rst += random.choice(MyIterator.letters)
        return rst


类的定义比较简单就是符合密码位数的前提下进行产生密码#提取压缩文件

def extract(name,minum,maxnum):
    start_time = time.time()
    zfile = zipfile.ZipFile(name)
    for p in MyIterator(minum,maxnum):
        print(p)

        try:
        #异常处理
            zfile.extractall(path='.',pwd=str(p).encode("ascii"))
            #或者用下面这个都可以
            #zfile.extractall(path='.',pwd=str(p).encode('utf-8'))
            #本处比较难弄的就是pwd的形式不能是str必须是bytes
            print('cracked succeed\nsecret:{}'.format(p))
            now_time = time.time()
            print('time:{}'.format(now_time-start_time))
            sys.exit(0)
        except Exception as e:
            pass


在提取函数我遇到的困难也比较多,主要就是对于密码形式不匹配的问题还有密码正确但仍然显示Bad Password,此处网上也没有一个好的解释和解决办法,我研究了一下

原因是Python的zipfile库只能对传统加密方式PKWARE的zip文件的解压,我看网上有大神已经向bugs.python.org反应但是被驳回了。很棘手,也希望大家出谋划策。
附链接:传送门

改进之处
多线程
其实我也不太懂,从某个地方学到的

#多线程

file_name,minum,maxnum= info()
if __name__ == '__main__':
    t1 = Thread(target=extract(file_name,minum,maxnum))
    t1.start()



这个可以大大提升代码运行速度!

运行效果
Please input the name of zip
(you should put this file into proper location):1.zip
This program can support any digital numbers
The digital minimum number:5
The digital maximum number:6

17021
43579
254078
934245
285647
45183
78544
056594
787680
973985
89251
19839
71547
733985
724881
29907
15094
42334
88076
94017
99453
859618
81673
529135
95936
325949
556095
061282
391034
82420
017520
913831
69887
03720
24799
35013
040773
96646
70777
950232
268964
50334
94807
92279
339313
08026
36202
21738
51283
451682
759984
07992
109728
01089
752386
509322
323192
64189
299812
92038
140760
135365
93374
542538
237538
63002
096322
72603
67947
74233
148310
12788
17380
58029
20676
20501
600570
66084
22520
708513
13019
43018
307211
494588
173255
268364
58198
355385
49047
366481
133364
14874
532637
64078
925726
22630
14874
05346
87320
26371
65355
67625
62092
373295
882154
994594
474171
90850
02227
771285
479875
49425
66407
20246
01415
830341
30872
277574
990627
92112
059506
03487
32752
547849
283188
583160
57829
353266
81633
551957
55277
888314
81321
15068
72725
46341
12322
173352
359950
753281
090492
27732
66751
370658
739133
77583
560723
110234
32493
350567
92932
90226
051609
18973
440571
99819
228357
25902
324541
396111
200372
43027
915671
565161
899486
27932
491613
426351
234673
593063
437932
09622
204069
633820
48658
518642
404497
134945
41032
349277
59354
612621
29740
99647
833467
04971
049113
270992
598551
40453
.
.
.
.
.
.

cracked succeed
secret:12345
time:3.4887523651123047
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
当然这个只是破解密码的雏形,后面我会继续学习,升级升级这个代码!

————————————————
版权声明:本文为CSDN博主「Cris6866」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43913500/article/details/88412689

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值