介绍:跨平台的sql注入攻击神器,自己谷歌
安装方法:git clone https://github.com/sqlmapproject/sqlmap.git
第一次看纯python项目,自己的python也就那样,欢迎留言交流~注:大牛勿喷
打开sql文件夹:其中各个文件夹的内容和作用话说我现在还没有看到,就不妄言了。直接打开sqlmap.py文件
可以看到:先是一大堆import,上面的是python内置库,不管他,重点看下面的
上面的那个versioncheck跟进去看看,就是检查一些东西,看是否满足配置条件(类似于c文件里的宏定义检查配置)
然后来看看那个logger,为啥那么多先看logger呢,一般来说,logger都是比较简单的实现,
柿子要挑软的捏~~
进去看看:
from lib.core.log import LOGGER
logger= LOGGER
跟下去
1 #!/usr/bin/env python
2
3 """
4 Copyright (c) 2006-2014 sqlmap developers (http://sqlmap.org/)
5 See the file 'doc/COPYING' for copying permission
6 """
7
8 import logging
9 import sys
10
11 from lib.core.enums import CUSTOM_LOGGING
12
13 logging.addLevelName(CUSTOM_LOGGING.PAYLOAD, "PAYLOAD")
14 logging.addLevelName(CUSTOM_LOGGING.TRAFFIC_OUT, "TRAFFIC OUT")
15 logging.addLevelName(CUSTOM_LOGGING.TRAFFIC_IN, "TRAFFIC IN")
16
17 LOGGER = logging.getLogger("sqlmapLog")
18
19 LOGGER_HANDLER = None
20 try:
21 from thirdparty.ansistrm.ansistrm import ColorizingStreamHandler
22
23 disableColor = False
24
25 for argument in sys.argv:
26 if "disable-col" in argument:
27 disableColor = True
28 break
29
30 if disableColor:
31 LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
32 else:
33 LOGGER_HANDLER = ColorizingStreamHandler(sys.stdout)
34 LOGGER_HANDLER.level_map[logging.getLevelName("PAYLOAD")] = (None, "cyan", False)
35 LOGGER_HANDLER.level_map[logging.getLevelName("TRAFFIC OUT")] = (None, "magenta", False)
36 LOGGER_HANDLER.level_map[logging.getLevelName("TRAFFIC IN")] = ("magenta", None, False)
37 except ImportError:
38 LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
39
40 FORMATTER = logging.Formatter("\r[%(asctime)s] [%(levelname)s] %(message)s", "%H:%M:%S")
41
42 LOGGER_HANDLER.setFormatter(FORMATTER)
43 LOGGER.addHandler(LOGGER_HANDLER)
44 LOGGER.setLevel(logging.WARN)
那个lib.core.enums相当与常量定义区,c项目里面的各种要用到的常量的宏定义
而后是基于python自带的logging模块的自适配的logger.
这里不得不吐槽下python的命令行文档,完全不知道在哪里看类的关系~,自己太菜~,总之,我在这里看https://docs.python.org/2/howto/logging.html#logging-basic-tutorial,里面
有张图很清晰的描述了logger、handler和filter之间的关系。
总之,sqlmap中的logger是添加了几个日志级别,payload | TranficOUT | TranficIN之类的
而后,适配了handler(包括引用第三方的handler和自定义输出消息格式),那个第三方库的ansistrm中,也是继承自自带logging的一个带有颜色输出的logger,还没仔细看。
恩,就这样结束了,不太会用csdn的博客编辑。。。