闲鱼搞的自动化漏扫工具的项目结构分析
2025/7/15大约 1 分钟
项目结构
功能模块
命令行参数解析
parser = argparse.ArgumentParser(description="Tool for web scraping and vulnerability scanning.")
parser.add_argument('-d', '--domain', help='Domain to scrape.')
parser.add_argument('-n', '--name', help='Project name.')
脚本只提供--domain
和--name
两个参数,分别表示扫描目标和项目名称(用于IP扫描和结果保存)Project name
即图中的schoolName
资产扫描
首先进行fofa资产扫描
# start.py
query(args.domain, args.name)
# gather.py
def query(domain, schoolName):
query_string = f'domain="{domain}" && before="2055-01-01"'
print(f"开始查询 {ORANGE}{schoolName}{RESET} || {GREEN}{domain}{RESET}")
ips, domain_query_count, domain_links = domain_query(query_string, schoolName)
...
# gather.py
def domain_query(query_string, save_path):
"""开始发送 fofa 扫描请求"""
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
data = {
"key": base_key,
"qbase64": base64.b64encode(f'{query_string}'.encode("UTF-8")),
"fields": 'ip,link,title,os,host,server',
"size": 10000,
"full": 'true',
}
req = requests.get(url=base_queryURL, verify=True, params=data, timeout=260*100) # 26000秒延迟???
if req.status_code != 200:
print('fofa 请求失败,请检查配置')
return None, None, None
data = req.json()
if data.get("error", True) is not False:
print('fofa 请求失败,请检查配置')
return None, None, None
在进行资产扫描时,可能会遇到网站SSL证书过期或未验证SSL证书导致的不安全访问警告,因此,原作者在domain_query
函数域内禁止了InsecureRequestWarning
报错:
def domain_query(query_string, save_path):
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
...
从前面的命令行参数来看,尽管脚本本身只考虑了单个域名的查询,但还是粗暴地考虑了查询大量数据可能导致的请求延时:
# 查询ip,link,title,os,host,server
req = requests.get(url=base_queryURL, verify=True, params=data, timeout=260*100)
查询完毕后使用csv
库进行格式整理,返回如下参数:
# return IP的列,以及总共的行数
return [result[0] for result in data['results']], len(data['results']), [result[1] for result in data['results']]