AI智能摘要
你是否也遇到过这个棘手场景:在攻防演练或资产梳理时,nmap无法直接扫描跨C段的B段IP地址(如111.111.111.0-111.111.222.255)?本文将分享一个即拿即用的Python小脚本,它能帮你快速生成覆盖整个B段的IP列表,并灵活选择以单个IP或C段网段格式输出,轻松解决nmap批量扫描的痛点,助你高效完成大范围资产探测任务。
— AI 生成的文章内容摘要
前言:前段时间老大发来任务,让帮忙用nmap扫一些ip段,我拿过来就准备开扫,但是发现nmap无法直接扫描同一B段不同C段下的IP段,例如111.111.111.0-111.111.222.255

原本我是准备写个工具联动nmap来扫描大批量IP段资产的,但是由于环境有些问题,工具成品还没有出来,并且h攻防演练在即,就先和大家分享一下写的小脚本,将我们要扫描的IP循环写入文件中,再用nmap扫描就可以了
小白向脚本,保存为test.py运行,根据提示输入即可:
a = int(input("请输入您要扫描的ip A段地址:"))
while not 0 < a <= 255:
a = int(input("您的输入有误,请重新输入您要扫描的ip A段地址:"))
b = int(input("请输入您要扫描的ip B段地址:"))
while not 0 <= b <= 255:
b = int(input("您的输入有误,请重新输入您要扫描的ip B段地址:"))
ipAB = str(a) + "." + str(b)
while 1:
c1 = int(input("请输入您要扫描的ip C段地址(起始地址):"))
while not 0 <= c1 <= 255:
c1 = int(input("您的输入有误,请重新输入您要扫描的ip C段地址(起始地址):"))
c2 = int(input("请输入您要扫描的ip C段地址(结束地址):"))
while not 0 <= c2 <= 255:
c2 = int(input("您的输入有误,请重新输入您要扫描的ip C段地址(结束地址):"))
if c2 < c1:
print("您的输入有误,青重新输入!")
else:
break
ip = []
g = input("请输入要您要储存的IP的方式:/n1.单条IP方式,例:192.168.0.1/n2.同一C段IP存储为/24形式,例:192.168.0.0/24/n")
while 1:
if g=="1":
for i in range(c2 + 1 - c1):
e = c1 + i
e = str(e)
for j in range(256):
j = str(j)
ip.append(ipAB + "." + e + "." + j)
break
elif g=="2":
for i in range(c2 + 1 - c1):
e = c1 + i
e = str(e)
ip.append(ipAB + "." + e + ".0/24")
break
else:
g=input("您的输入有误,请重新输入要您要储存的IP的方式:/n1.单条IP方式,例:192.168.0.1/n2.同一C段IP存储为/24形式,例:192.168.0.0/24/n")
f = input("是否要保存全部ip地址?(Y/N):").upper()
while 1:
if f == "Y":
spath = input(r"请输入您要保存的路径+文件名,例如(C:/test.txt),只输入文件名则默认保存在工具路径下:")
while 1:
try:
with open(spath, "a+") as file:
for i in range(len(ip)):
file.write(ip[i] + "/n")
print("保存成功!")
break
except:
spath=input(r"您输入的路径路径有误,请重新输入您要保存的路径+文件名,例如(C:/test.txt),只输入文件名则默认保存在工具路径下:")
break
elif f == "N":
print("没有保存ip地址!")
break
else:
f = input("您的输入有误,请重新输入(Y/N):")
可以选择自己想要保存的IP形式,可以是以同一C段形式,也可以是单条形式,代码写的不好,师傅们有建议的尽管提出来,会听取师傅们意见改进的~

日本 1F
之前用nmap扫B段也是头疼,手动拆太麻烦了
山东省泰安市 2F
输入校验写得有点啰嗦,不过对小白友好吧
香港 B1
@ 远方有晴天 校验真的有点冗余,我直接敲IP就行
马来西亚 3F
这脚本跑起来卡不卡啊?
浙江省嘉兴市 4F
为啥不用masscan?速度不是快很多🤔
日本 B1
@ 午后散步 这脚本能跑就不错了,还管啥速度😂
越南 5F
刚试了下,/24模式扫出来一堆无效IP
山东省 B1
@ 无人区 /24扫出来的多是保留段,过滤一下就行
韩国 B1
@ 无人区 扫出来一堆无效IP正常啊,/24本来就是整段发包,又不是只扫活的
辽宁省大连市 B1
@ 无人区 /24模式本来就会扫到死IP,正常
印度尼西亚 6F
保存路径那里能不能加个默认值,每次输好烦
台湾省高雄市 7F
hhh 这代码风格一看就是赶工出来的
韩国 B1
@ 纳米突袭者 确实看着有点随意,后面还能再优化一下
湖南省长沙市 B1
@ 纳米突袭者 赶工的味儿挺明显的,别忘了加点注释
日本 8F
求问支持IPv6不?
河南省濮阳市 9F
我之前也踩过这个坑,最后直接上zmap了
韩国 B1
@ 湮灭使者 zmap用起来挺顺手的,尤其大批量扫描时速度明显提升,你那边配置了哪些参数?👍
台湾省 B1
@ 湮灭使者 我也试过zmap,速度真的飞起
浙江省 B1
@ 湮灭使者 zmap扫得快,但端口细节不全,我还是会再跑一次 nmap 细查。
韩国 10F
要是能直接输出给nmap命令就更省事了
韩国 B1
@ AntlerAmble 直接管道输给nmap的话真是省心
浙江省绍兴市诸暨市 11F
脚本能直接生成nmap命令吗?
日本 B1
@ 笑面佛 能啊,加个os.system(‘nmap -iL ‘+文件名)就行,不过得自己拼参数
江苏省连云港市 B1
@ 笑面佛 直接把IP列表写入文件,用 nmap -iL 参数读取就行了。
江苏省苏州市 12F
保存路径输错能重输还行,就怕直接崩了
北京市 13F
python3环境应该都支持吧?
山东省滨州市 14F
扫B段还得是这种土办法靠谱😂
韩国 15F
运行到一半报错了咋整?
广东省深圳市 B1
@ 不正经小队 报错不就重来嘛,又不是不能用
台湾省 16F
这个比手敲IP段强多了
上海市 17F
要是能加个进度条显示就更好了
湖南省湘潭市 B1
@ 龙袍霸气 进度条?这脚本连多线程都没开,要啥自行车😂
韩国 18F
感觉输入有点多,能不能简化下步骤
湖北省武汉市 19F
之前自己写过一个类似的,没这个全乎
北京市 B1
@ 夜半啼哭 我在脚本里加了进度条,跑起来一目了然,省心多了,而且还能随时中止
浙江省 20F
用powershell也能搞吧?
广西柳州市 21F
输入A段还限制1-255,其实0也是合法的吧?
北京市 B1
@ 花间拾梦 0 也是合法的,我把脚本的 A 段校验改成 0‑255,省了再改。
河南省开封市 22F
为啥不直接用nmap 111.111.111-222.0-255?我试过能扫啊
广西南宁市 23F
小白友好是真,但校验写太啰嗦了,看着头大
山东省临沂市 24F
保存路径默认当前目录不就完了,非让用户输
山东省滨州市 25F
这脚本跑起来CPU占满没?我上次写类似的一跑风扇狂转
台湾省 26F
之前搞资产测绘也卡在这,最后直接上fofa了
海南省海口市 27F
有人试过在linux下跑吗?Windows路径那块怕是要改
山东省聊城市 28F
扫B段确实头疼,拆IP太费劲了
天津市 29F
之前自己写过一个,结果漏了不少IP
湖北省荆州市 30F
输入校验太长了,眼睛都看花了
辽宁省大连市 31F
能不能直接输出nmap命令啊?
韩国 32F
linux下路径得改成/吧,不然要炸
韩国 33F
求问这脚本Python2能跑吗?
浙江省 34F
试了下,还蛮方便的。
上海市 B1
@ 雪竹 是吧,这小脚本还挺实用。
湖北省武汉市 35F
CPU占用高不高,怕风扇起飞
广东省佛山市南海区 36F
这个脚本看起来挺实用的,适合我这种小白入门。
美国 37F
脚本里输入校验有点繁琐,但是对新手挺友好的。
印度 38F
之前用nmap扫B段也是头疼,手动拆IP太麻烦了。
河南省洛阳市 B1
@ PincerPranks 我也遇到过,同样苦恼,真想有个自动脚本省点事
山东省滨州市 39F
要是能直接输出nmap命令就更省事了。
日本 40F
思路不错,比手动拆省事儿。
日本 41F
为啥不直接用nmap 111.111.111-222.0-255?我试过能扫啊。
印度 42F
之前搞资产测绘也卡在这,最后直接上fofa了。
北京市 43F
保存路径输错能重输还行,就怕直接崩了。
湖北省襄阳市 44F
可以,这脚本挺实用的。
中国 45F
CPU占用高不高,怕风扇起飞。
山东省滨州市 46F
之前自己写过一个类似的,没这个全乎。
上海市 47F
试了下,生成的文件直接喂给nmap扫挺方便。