首先让我说我是一个漂亮的noob程序员,但我仍然不是那种决定想要制作MMO游戏的人。我的问题涉及到zip文件。我一直在研究,我找不到如何使用zipfile模块。我的想法是,你会放在邮编的路径,出来的密码。使用python zipfile查找zip密码
这是我发现,我想我的代码使用
ZipFile.open(name, mode='r', pwd=None)
的命令,但问题是我不知道我在做什么。
首先让我说我是一个漂亮的noob程序员,但我仍然不是那种决定想要制作MMO游戏的人。我的问题涉及到zip文件。我一直在研究,我找不到如何使用zipfile模块。我的想法是,你会放在邮编的路径,出来的密码。使用python zipfile查找zip密码
这是我发现,我想我的代码使用
ZipFile.open(name, mode='r', pwd=None)
的命令,但问题是我不知道我在做什么。
你有办法做到这一点,它是蛮力。
所以你需要一个蛮力算法(你自己喜欢或设计的)和/或一个为你的脚本提供密码的彩虹表。之后,您只需循环遍历它,直到找到密码。
https://docs.python.org/2/tutorial/errors.html#handling-exceptions
这被简化的非优化的代码
rainbowTable = ['Password', '123abc', 'qwerty', 'qwerty123'] # etc...
x = 0
data = ''
for x in xrange(len(rainbowTable)):
try:
data = ZipFile.open(name, mode='r', pwd=rainbowTable[x])
if data != ''
break
正如指出的那样,在溶液上方是unpythonic(但伊莫更容易把握如果你来自另一种语言)。这是应该如何写的。
for password in rainbowTable:
try:
data = ZipFile.open(name, mode='r', pwd=password)
if data != ''
break
else:
print password
但Python并不是最好的选择。你可能想用C来完成这个特定的任务。
下面是一个Python例子的现实世界的例子: https://github.com/igniteflow/violent-python/blob/master/pwd-crackers/zip-crack.py
从样本:
try:
zip_file.extractall(pwd=password)
password = 'Password found: %s' % password
except:
pass
print password
的代码总量为17行,所以我建议你阅读它更好的理解。
实际上,“为x在xrange(len(rainbowTable))”是非常unpythonic :)更好地直接遍历列表像“为passwd in rainbowTable” – artemdevel 2015-02-09 09:02:56
我知道它unpythonic,但作为一个简单的例子,它在最少显示变量来自哪里。有了这个说法,我仍然相信你的解决方案在风格上是优越的,而且速度也可能很快。 – 25r43q 2015-02-09 12:15:41
我明白我将如何尝试找到密码,但我不知道如何使用zip文件模块来检查密码是否正确 谢谢 – Harry 2015-02-09 21:02:02
你在做什么?你的描述没有意义,你可以重述吗? – 2015-02-09 05:46:22
当然,我认为我的描述过于复杂,但基本上我想要一个带有密码的zip文件,然后我可以运行我的程序并找到密码。 谢谢 – Harry 2015-02-09 05:49:52