Python 使用 ARP 扫描网络主机并保存结果
Python 使用 ARP 扫描网络主机并保存结果
本文将介绍如何使用 Python 编写代码,利用 ARP 协议扫描网络主机,并将扫描结果保存到文本文件中。
import os
from scapy.all import *
def scan_hosts():
# 获取本机IP地址
local_ip = os.popen('ifconfig | grep 'inet' | awk '{print $2}'').read().strip()
# 获取本机MAC地址
local_mac = os.popen('ifconfig | grep 'ether' | awk '{print $2}'').read().strip()
# 获取本机网段
local_network = '.'.join(local_ip.split('.')[:-1]) + '.0/24'
# 发送ARP请求包扫描主机
ans, unans = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=local_network), timeout=2, verbose=False)
# 将扫描到的主机IP地址和MAC地址存入文件中
with open('hosts.txt', 'w') as f:
for send, recv in ans:
f.write(recv.sprintf('%ARP.psrc% %Ether.src%
'))
for host in hosts:
ip, mac = host.strip().split()
# 判断是否为本机
if mac == local_mac:
# ...
代码解释:
- 导入模块: 首先,需要导入
os模块用于获取本机信息,以及scapy.all模块用于发送 ARP 请求和解析响应。 - 获取本机信息: 代码使用
os.popen()函数执行系统命令获取本机的 IP 地址和 MAC 地址。 - 获取本机网段: 通过将 IP 地址的最后一段替换为
0并添加'/24',得到本机的网络地址。 - 发送 ARP 请求: 使用
srp()函数发送 ARP 请求包,目标 MAC 地址为广播地址ff:ff:ff:ff:ff:ff,目标 IP 地址为本机的网络地址。 - 解析 ARP 响应:
ans列表存储了所有接收到的 ARP 响应。 - 保存结果: 代码将扫描到的主机 IP 地址和 MAC 地址存入名为
hosts.txt的文件中。
使用示例:
- 确保已安装
Scapy库。 - 运行代码,结果将保存到
hosts.txt文件中。
注意:
- 代码需要 root 权限才能执行。
- 代码仅展示了基本的 ARP 扫描功能,实际使用中可以根据需求添加更多功能。
总结:
本文介绍了如何使用 Python 编写代码,利用 ARP 协议扫描网络主机,并将扫描结果保存到文本文件中。通过使用 Scapy 库,可以轻松实现 ARP 扫描功能,并根据需要定制代码以满足不同的需求。
相关资料:
原文地址: https://www.cveoy.top/t/topic/jpiJ 著作权归作者所有。请勿转载和采集!