ENScanGo主域名批量提取脚本

关于ENScanGo可参考: 红队web打点信息收集_山山而川'的博客-CSDN博客

这是一款由狼组安全团队的 Keac 师傅写的专门用来解决企业信息收集难的问题的工具,可以一键收集目标及其控股公司的 ICP 备案、APP、小程序、微信公众号等信息然后聚合导出。

该工具不能批量查询公司的主站,所以这里写个脚本来进行实现。公司名写在company.txt中,脚本运行完即可以批量提取出主域名

enscan批量获取主域.py

import os, fnmatch, win32api
from  openpyxl import Workbook, load_workbook
from colorama import init,Fore
init(autoreset=True)

path = "D:\\xxxx\\红队打点"  #ENScanGo放在这个路径
enscan_path = path + "\\ENScanGo"
enscan_outs_path = enscan_path + "\\outs"
domain_set = set()   #装所有公司的主域
nodomain_company = set()

def enscan(company):
    enscan_command = "ENScanPublic_amd64_windows.exe -n %s -type all"%(company)
    print(Fore.RED + "\n[info]开始收集'%s'主域..."%(company))

    #判断公司文件夹是否存在原来结果
    os.chdir(enscan_outs_path)
    for name in os.listdir():
        if fnmatch.fnmatch(name,"*%s*--*"%(company)):
            os.remove(name)
    #执行命令
    os.chdir(enscan_path)
    os.system(enscan_command)
    #提取主域
    print(Fore.RED + "\n提取主域如下:")
    os.chdir(enscan_outs_path)
    domain = set()   #装每个公司的主域
    for name in os.listdir():
        if fnmatch.fnmatch(name,"*%s*--*"%(company)):
            wb = load_workbook(name)
            try:
                sheet = wb["ICP备案"]
            except:
                sheet = wb["icp"]
            for row in sheet.iter_rows():   #遍历所有表格,以元组的形式展示
                for cell in row:          #遍历所有表格,一个个显示
                    if "C" in cell.coordinate :   #每个表格的位置cell.coordinate如A1 A2
                        if cell.coordinate != 'C1':  #不提取第一行
                            print(cell.value)
                            domain.add(cell.value)
                            domain_set.add(cell.value)
    if len(domain) == 0:
        print("该公司未查询到主域!")
        nodomain_company.add(company)

if __name__ == '__main__':
    for c in open("company.txt",'r',encoding="utf-8"):
        enscan(c.replace("\n",""))
    
    #输出主域
    os.chdir(path)
    if os.path.exists("ens_domain.txt"):
        os.remove("ens_domain.txt")
    print(Fore.RED + "\n全部主域如下:")
    for i in domain_set:
        print(i)
        with open("ens_domain.txt","a",encoding="utf-8") as f:
            f.write(i + "\n")
    if len(nodomain_company) != 0:
        print(Fore.RED + "\n未获取到主域的公司如下:")
        for h in nodomain_company:
            print(h)

    win32api.ShellExecute(0, 'open', 'ens_domain.txt', '', '', 1) 

猜你喜欢

转载自blog.csdn.net/qq_44159028/article/details/126175967