资产测绘中增大发现弱资产概率的小技巧 附实现代码

作者:Sec-Labs | 发布时间:

工具介绍

工具来源:ybdt师傅的分享

分享一个小工具,资产收集时,排除CDN后,会收集到很多零散的公网IP,而目标公司往往是从运营商申请的连续IP,此时根据零散IP获取连续IP,会增大发现弱资产的概率

算法实现费了些时间,方便师傅们可集成到自己的自动化工具中

核心代码

get-serial-ip.py

ip_list = []
with open("ip.txt", "r", encoding="UTF-8") as fr:
    for ip in fr.readlines():
        ip_list.append(ip.strip("\n"))

d = {}
for ip in ip_list:
    ip_parts = ip.split(".")
    c_range = ip_parts[0] + "." + ip_parts[1] + "." + ip_parts[2]
    if c_range not in d.keys():
        c_range_elements = []
        d[c_range] = c_range_elements
        c_range_elements.append(ip)
    else:
        c_range_elements = d[c_range]
        c_range_elements.append(ip)
print(d)
print()

new_ip_list = []
for key, value_list in d.items():
    if len(value_list) == 1:
        new_ip_list.append(value_list[0])
    else:
        ip_parts = value_list[0].split(".")
        c_range = ip_parts[0] + "." + ip_parts[1] + "." + ip_parts[2]
        ip_last_part_list = []
        for ip in value_list:
            ip_last_part_list.append(ip.split(".")[3])
        ip_last_part_list.sort()
        # print(ip_last_part_list)
        # print(ip_last_part_list[0])
        start = int(ip_last_part_list[0])
        end = int(ip_last_part_list[-1])
        for i in range(start, end + 1):
            new_ip = c_range + "." + str(i)
            new_ip_list.append(new_ip)
print(new_ip_list)

with open("new-ip.txt", "w", encoding="UTF-8") as fw:
    for ip in new_ip_list:
        fw.write(ip + "\r")

 

标签:工具分享, 资产测绘