Python 网络扫描代码解析:发现活动主机
这段Python代码定义了一个名为scan_network的函数,用于扫描指定网络中的活动主机。
def scan_network(ifname):
active_hosts = {}
for i in range(1, 255):
dst_ip = '192.168.197.' + str(i)
send_arp_request(ifname, '192.168.197.1', get_mac_address(ifname), dst_ip)
time.sleep(0.1)
response = send_arp_reply(ifname, dst_ip, get_mac_address(ifname), '192.168.197.1', get_mac_address(ifname))
if response is not None:
active_hosts[response['src_ip']] = response['src_mac']
return active_hosts
该代码的主要逻辑如下:
- 初始化一个空字典
active_hosts用于存储扫描到的活动主机信息。 - 循环遍历IP地址范围
192.168.197.1到192.168.197.254,对每个IP地址执行以下操作:- 使用
send_arp_request函数发送ARP请求,目标IP地址为当前遍历到的IP地址。 - 等待一段时间后,使用
send_arp_reply函数发送ARP回复,接收目标设备的MAC地址。
- 使用
- 如果收到了回复,则将目标设备的IP地址和MAC地址添加到
active_hosts字典中。 - 最后返回
active_hosts字典,其中包含所有扫描到的活动主机的IP地址和MAC地址。
该代码利用ARP协议的特性,通过发送和接收ARP请求和回复来识别网络中所有在线设备的IP地址和MAC地址。
注意: 该代码仅供学习参考,实际使用中可能需要根据具体情况进行修改。例如,需要根据实际网络情况修改IP地址范围,以及可能需要使用更强大的ARP扫描工具来提高扫描效率。
原文地址: https://www.cveoy.top/t/topic/jm8U 著作权归作者所有。请勿转载和采集!