继续学习
接着昨天的进度学习。本次的加强版,实际就是可以自行指定相关的文件。例如加密的ZIP文件,字典文件。
依赖模块
zipfile模块是肯定包含的。而且由于书中的代码中使用的是多线程,所以threading模块也是包含的,另外,由于需要指定文件,所以脚本中需要有命令行参数。那么,optparse模块是需要的。optparse功能很强,例如下方的代码,我只需要在命令行中输入python zipfileplus.py -h
, 就可以自动的把所有的帮助信息输出,如下:
源代码
import zipfile
import threading
import optparse
"""
ZIP压缩文件破解程序加强版,用户可以自己指定想要破解的文
件和破解字典,多线程破解
"""
def extractFile(zFile,password):
try:
zFile.extractall(pwd=password)
print("密码:"+password)
except:
pass
def main():
parser = optparse.OptionParser(u'使用方法 -f <zipfile> -d <dictionary>')
parser.add_option('-f',dest='zname',type='string',help=u'指定zip压缩文件')
parser.add_option('-d',dest='dname',type='string',help=u'指定字典文件')
options, args = parser.parse_args()
#if options.zname == None | options.dname == None: #此处为书中的原始代码
if options.zname == None or options.dname == None: #
print(parser.usage)
exit(0)
else:
zname = options.zname
dname = options.dname
zFile = zipfile.ZipFile(zname)
dFile = open(dname, 'r')
for line in dFile.readlines():
password = line.strip('\n')
t = threading.Thread(target=extractFile,args=(zFile,password))
t.start()
if __name__ == '__main__':
main()
使用方法很简单,就是python zipfileplus.py -f crypt.zip -d dictionary.txt
,当然,我的加密的ZIP文件和字典文件都与脚本在同一个目录下面,你也可以在文件前面加上路径。
问题
在实验过程中,我发现书中的源代码是错误的,例如这一句:if options.zname == None | options.dname == None:
,当然也有可能是Python环境问题,我的Python环境是Windows 10 + Python 2.7.13 64bit,而书中的环境是BackTrack 5 R2 + Python 2.6.5。BackTrack是渗透测试系统,它的后继者就是kali linux。
我用书上的代码测试的时候,直接报错。错误信息如下:
E:\Projects\Python\20171114>python zipfileplus.py -f crypt.zip -d dictionary.txt
Traceback (most recent call last):
File "zipfileplus.py", line 48, in <module>
main()
File "zipfileplus.py", line 33, in main
if options.zname == None|options.dname == None:
TypeError: unsupported operand type(s) for |: 'NoneType' and 'str'
而且,我上网查找资料,也没找到(我太菜),然后,突然想起来Python里面好像没有“|”这个或运算符,上网查找Python的运算符,果然没有,下面是我找到的一部分
and 与
or 或
not 非
!= (not equal) 不等于
== (equal) 等于
>= (greater-than-equal) 大于等于
<= (less-than-equal) 小于等于
True 真
False 假
补充
抱歉,刚才在学习中发现,Python中还是有“|”这个运算符的,上面之所以报错,是因为代码缺少括号,如果改成这样,if (options.zname == None) | (options.dname == None):
是可以运行的。很抱歉 —-2017-11-16 16:19:02
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了