整体上代码结构是这样的:
1.检查python运行版本:version 介于 2.6~3之间
from lib.utils import versioncheck
2.设置根目录路径及程序运行中所需要的一些存放运行信息的目录(包括输出目录等的配置)
paths.SQLMAP_ROOT_PATH = modulePath()
setPaths()
3.解析命令行参数,并对其进行分组和组合,便于程序理解(此时,系统也设置了一个参数的备份)设置程序输出
cmdLineOptions.update(cmdLineParser().__dict__)
init()
5.程序主逻辑运行
start()
6.异常处理
except .....
今天也只是大过桥式的看了下代码,有很多细节都没有深究。自认为此代码阅读应该分3次,首次,知道其处理逻辑。而后,深究其实现逻辑。最后,知道其为何如此设计。
顺带说下:
2.path设置。各种坑爹,考虑什么weAreFrozen()和非ascii码路径的问题,主要是东亚文字的路径问题,如中文,日文。
作者把python中的dic类封装改写后成为Attrdict类,但代码中也用到了原声dict类,目前还没来得及看这两种实例在运用中的区别。
3.解析命令行参数
怎么说呢,这么多的参数我也是第一次看到,然后就觉得作者的分类的思想(把输入的参数分为数类,估计而后会根据每个类设置不同api接口调用)挺好的吧,如果是我,可能直接就全部放一堆了。。。菜鸟
然后是,把默认参数和用户自定义参数的混合。
后面的还没看,下次继续。
1.检查python运行版本:version 介于 2.6~3之间
from lib.utils import versioncheck
2.设置根目录路径及程序运行中所需要的一些存放运行信息的目录(包括输出目录等的配置)
paths.SQLMAP_ROOT_PATH = modulePath()
setPaths()
3.解析命令行参数,并对其进行分组和组合,便于程序理解(此时,系统也设置了一个参数的备份)设置程序输出
cmdLineOptions.update(cmdLineParser().__dict__)
initOptions(cmdLineOptions)
sys.stdout = StdDbOut(conf.taskid, messagetype="stdout")
sys.stderr = StdDbOut(conf.taskid, messagetype="stderr")
init()
5.程序主逻辑运行
start()
6.异常处理
except .....
今天也只是大过桥式的看了下代码,有很多细节都没有深究。自认为此代码阅读应该分3次,首次,知道其处理逻辑。而后,深究其实现逻辑。最后,知道其为何如此设计。
顺带说下:
2.path设置。各种坑爹,考虑什么weAreFrozen()和非ascii码路径的问题,主要是东亚文字的路径问题,如中文,日文。
作者把python中的dic类封装改写后成为Attrdict类,但代码中也用到了原声dict类,目前还没来得及看这两种实例在运用中的区别。
3.解析命令行参数
怎么说呢,这么多的参数我也是第一次看到,然后就觉得作者的分类的思想(把输入的参数分为数类,估计而后会根据每个类设置不同api接口调用)挺好的吧,如果是我,可能直接就全部放一堆了。。。菜鸟
然后是,把默认参数和用户自定义参数的混合。
后面的还没看,下次继续。