- util
decode_html(head, body)- 参数
- 返回值
- 范例
get_domain_root(url)- 参数
- 返回值
- 范例
get_url_ext(url)- 参数
- 返回值
- 范例
get_url_host(url)- 参数
- 返回值
- 范例
is_ipaddr(varObj)- 返回值
- 范例
load_password_dict(hostname, userfile=None, passfile=None, userlist=None, passlist=None, mix=True)- 参数
- 返回值
- 说明
- 范例
urljoin(base, ref, encoding='utf-8')
util
提供了一些公用的方法库
decode_html(head, body)
将 HTTP 响应头和响应体以 utf-8 编码方式解码
参数
head
HTTP 响应头,类型 String
body
HTTP 响应体,类型 String
返回值
类型 String
范例
code, head, body, err, redir_url = hackhttp.http(url="xxxx")ret = util.decode_html(head, body)
get_domain_root(url)
获取 url 的根域名地址
参数
url
URL 地址,类型 String
返回值
类型 String
范例
>>> util.get_domain_root("http://www.test.com/index.php?id=1")'test.com'>>> util.get_domain_root("http://www.test.com/test/")'test.com'>>> util.get_domain_root("http://test.com/test/index.php?id=1")'test.com'
get_url_ext(url)
获取 URL 中请求的文件的后缀名(不适用于重写 URL 规则的 URL)
参数
url
目标 URL 地址,类型 String
返回值
后缀名,类型 String
范例
>>> util.get_url_ext("http://www.test.com/test/test.jsp?id=1")'.jsp'
get_url_host(url)
获取该 URL 的域名地址
参数
url
目标 URL 地址,类型 String
返回值
类型 String
范例
>>> util.get_url_host("http://www.test.com/test/")'www.test.com'>>> util.get_url_host("http://www.test.com/test/index.php?id=2")'www.test.com'
is_ipaddr(varObj)
判断 varObj 是不是 IPv4 地址
返回值
类型 Bool
范例
>>> util.is_ipaddr("www.test.com")False>>> util.is_ipaddr("127.0.0.1")True
load_password_dict(hostname, userfile=None, passfile=None, userlist=None, passlist=None, mix=True)
加载字典,函数自带去重功能
参数
hostname
类型 str。当前扫描的域名或者 ip(若是 IP,会自动从当前扫描的 url 匹配到域名)
userfile
类型 str。加载的内置用户名字典文件
用户名字典例子:
- root:root 表示一对用户名和密码,这种类型会不和密码字典来组合
- %domain% 该通过扫描的域名来生成,包含一级二级三级
- %domain%:%domain%
- admin:admin
- test:test
passfile
类型 str。 加载的内置密码字典文件
密码字典例子:
- %null% 空口令
- 123456789
- %username%123 与用户名组合
内置的用户名和密码字典列表
sub_domain.txttelnet_user.txtssh_user.txtftp_user.txthttp_user.txtform_user.txtrsync_user.txtmssql_user.txtmysql_user.txttelnet_pass.txtftp_pass.txtform_pass.txtmssql_pass.txtmysql_pass.txthttp_pass.txtssh_pass.txt
内置字典均放在
database/目录下,具体使用方法参见范例二userlist 类型 list。 用户名的文本列表
- passlist 类型 list。 密码的文本列表
- mix 类型 bool。额外将
%username%+密码作为密码
返回值
类型 list
说明
加载顺序为:
1.加载默认用户字典
2.加载内置文件用户字典
3.加载添加任务时设置url用户字典
4.加载默认密码字典
5.加载内置文件密码字典
6.加载添加任务时设置url密码字典
如果需要在本地测试自定义字典,请打开 dummy/__init__.py
_G = {'scanport':False,'subdomain': False,'target': 'www.abc.com','disallow_ip':['127.0.0.1'],'kv' : {},#'user_dict':'http://192.168.0.158/1.txt'#'pass_dict':'http://192.168.0.158/1.txt'}
将其中的 user_dict 和 pass_dict 前的 # 号去掉,并将值修改为用户远程字典的地址
范例
范例一
>>> util.load_password_dict('')[['root', 'root'], ['admin', 'admin'], ['test', 'test']]
范例二
#!/usr/bin/env python# -*- coding: utf-8 -*-import urlparsedef assign(service, arg):if service == fingerprint.test:return True, argdef audit(args):r = urlparse.urlparse(args)host = r.hostnamedebug("host:%s",host)pass_list = util.load_password_dict(host,userfile='database/ftp_user.txt',passfile='database/ftp_pass.txt',userlist=['sa:sa','username'],passlist=['123456'],mix=True,)for username,password in pass_list:debug("%s,%s", username, password)if __name__ == '__main__':from dummy import *audit(assign(fingerprint.test, 'http://mp3.baidu.com/')[1])
urljoin(base, ref, encoding='utf-8')
连接 URL,用法和返回值与 urlparse.urljoin 完全相同
>>> util.urljoin('http://www.test.com/', '/index.php?id=1&page=2')'http://www.test.com/index.php?id=1&page=2'
