Module View
模块示例
#coding=utf-8
__author__ = 'DM_'
from lib.ProxiesFunctions import *
import hashlib #test import
class ModuleClass:
"""
this is a demo module of MultiProxies Web Attack Framework,
"""
info ={
"author": "DM_",
"date": "2014/08/08",
}
options = {
"site": "http://www.x0day.me",
}
req = requests
def exploit(self):
url = self.options['site']
resp = urlGet(self.req, url)
if resp:
color.echo(resp.headers, GREEN)
else:
color.echo(" error", RED)
文件结构
插件先引入lib.ProxiesFunctions中所有函数,如果有额外引入的包也写在这里。如果没有特殊信息提示不用做try/except判断。主程序会有ImportError的处理。之后就是ModuleClass。
插件可以以单文件的形式发布,此时显示的插件名就是文件名。也可以是以python package的形式发布。此时插件名为package根目录下python文件的名称。
也就是说以python package的形式发布,文件夹根目录下只能有一个插件文件。 如果需要额外的引入自定义文件,需要将待引入的文件放入新建文件夹然后再在该文件夹中新建一个名为private的文件(不含后缀)。
ModuleClass
ModuleClass需要有options,info成员变量及exploit成员函数。Options和info为字典。 并且需要注意的是
options的键值必须为小写。
比如:
option = {
'URL' : 'http://x0day.me',
}
这样是不符合规范的。 如果有额外的信息说明可以写在ModuleClass的帮助文档中。可以在ModuleClass的__init__()中初始化变量等其他不影响的操作。
info
必须存在且非空,存放模块作者等相关详细。类型为dict。在info命令被调用时会显示这里的信息及ModuleClass的帮助文档。
options
必须存在且非空,存放模块参数,类型为dict,键值必须为小写。
exploit
必须存在,主运行函数。