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.txt
     telnet_user.txt
     ssh_user.txt
     ftp_user.txt
     http_user.txt
     form_user.txt
     rsync_user.txt
     mssql_user.txt   
     mysql_user.txt
     telnet_pass.txt
     ftp_pass.txt
     form_pass.txt   
     mssql_pass.txt
     mysql_pass.txt
     http_pass.txt
     ssh_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_dictpass_dict 前的 # 号去掉,并将值修改为用户远程字典的地址

范例
  1. 范例一

    >>> util.load_password_dict('')
    [['root', 'root'], ['admin', 'admin'], ['test', 'test']]
    
  2. 范例二

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import urlparse
    def assign(service, arg):
     if service == fingerprint.test:
         return True, arg
    def audit(args):
     r = urlparse.urlparse(args)
     host = r.hostname
     debug("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'

results matching ""

    No results matching ""