当前位置:首页 > 编程笔记 > 正文
已解决

主机存活检测脚本

来自网友在路上 173873提问 提问时间:2023-09-19 18:26:08阅读次数: 73

最佳答案 问答题库738位专家为你答疑解惑

原理演示

在命令行下用下面命令安装scap模块:

python -m pip install scapy

scapy与scrapy 有非常大的区别。
scapy 是一个Python 的第三方模块,被称为“网络神器”。scapy 模块能够发送、捕获、分析和铸造网络数据

sr1发送接收函数

如图,安装成功,并加载成功:

在这里插入图片描述

用pkt设置源IP和目标IP,协议为TCP

pkt=IP(src="10.9.75.238",dst="10.9.75.2")/TCP()

然后用sr1发送接收函数探测主机IP是否存活,超时时间设置为5秒:

 res=sr1(pkt,timeout=5)

如下图,接收到1035个数据包,但是没有得到目标主机的回应,这是因为sr1函数在发送数据包的时候会一直处于监听状态,收到的1035个数据包是该局域网所有主机的数据包:

在这里插入图片描述

使用ICMP协议进行主机探测,并查看该pkt的配置:

pkt=IP(src="10.9.75.238",dst="10.9.75.2")/ICMP()

查看pkt的配置:

pkt.show()

如图,源IP和目标IP分别是10.9.75.238和10.9.75.2,ICMP的类型是request请求包:
在这里插入图片描述

发包后依然没有回应包,说明该主机没有存活:

在这里插入图片描述

脚本编写

verbose= False:隐藏发包过程,上述的点

from scapy.all import *和from scapy.layers.inet import *:载入IP()和ICMP()函数需要的包

import logging
logging.getLogger(“scapy.runtime”).setLevel(logging.ERROR):这两个模块可以隐藏warning报错信息,设置只显示最高级的报错ERROR

from termcolor import colored:该模块可以提供文本变色的效果

print(colored(f"\n{ip} is ALINE",“green”))将存活的主机IP颜色变为绿色

ip=f"{netmask}{i}"将10.9.75.与for循环遍历的i拼接

from scapy.all import *
from scapy.layers.inet import *
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from termcolor import colorednetmask="10.9.75."
src="10.9.75.45"
for i in range(1,12):ip=f"{netmask}{i}"pkt=IP(src=src,dst= ip)/ICMP()res = sr1(pkt,timeout= 1,verbose= False)if res and res.type == 0:print(colored(f"\n{ip} is ALTVE","green"))else:print(f"\r{ip} is NOT ALTVE")

结果如下,遍历11次,探测出两个存活IP:

在这里插入图片描述

如果将最后一句改为

 print(f"\r{ip} is NOT ALTVE",end="")

输出结果就会原地输出,后面的输出会覆盖前面的,直到输出存活IP:

在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"主机存活检测脚本":http://eshow365.cn/6-9485-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!