输入与输出
输入
用户的输入主要和ModuleClass的options有关,在用户使用set命令设置时为输入。 注意用户使用set命令输入时的所有值都是str类型。在exploit或后续调用时需要注意类型转换。 比如
options = {
'site': 'http://x0day.me',
'threads': 10,
}
….snip…
def exploit(self):
threads = int(self.options['thread'])
输入参数的处理
对于一些参数的输入,我们希望用户的输入符合规范,或者需要对输入进行判断或处理。这里有一些函数可以做到对一些参数进行判断与预处理。
rhosts/sites
这两个参数意指不定数量的IP,或者url。
retRhosts(rhosts)
/retSites(sites)
函数可以对rhosts
/sites
参数进行判断,
判断是否为文件(一行一条数据) 文件内容是否规范,是否为单一ip/url。并且retRhosts(rhosts)
函数还可以判断是否为ip段。
如果不希望这样的判断,还可以用isip()
,isUrl()
函数判断单一输入。
True/False
有的情况下,需要对用户输入判断是否为真,单一的字符匹配不够人性化。这里可以使用
isTrue(check)
,isFalse(check)
判断。
其他的输入处理可以参考函数文件。
输出
全局有一个输出函数:
color.echo(mess, color=None, append=False, verbose=False)
支持的颜色有:BLACK,BLUE,GREEN,CYAN,RED,PURPLE,YELLOW,WHITE,GREY
不换行输出
for x in range(1, 100):
color.echo("test ... %d\r" % x , GREEN, append=True)
time.sleep(0.1)
注意字符串后有 "\r"
verbose
如果输出不希望被全局冗余输出(verbose)设置影响,可以设置 verbose=True
。
这样当全局禁止冗余输出时依然可以正常显示。