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:
        # ...

代码解释:

  1. 导入模块: 首先,需要导入 os 模块用于获取本机信息,以及 scapy.all 模块用于发送 ARP 请求和解析响应。
  2. 获取本机信息: 代码使用 os.popen() 函数执行系统命令获取本机的 IP 地址和 MAC 地址。
  3. 获取本机网段: 通过将 IP 地址的最后一段替换为 0 并添加 '/24',得到本机的网络地址。
  4. 发送 ARP 请求: 使用 srp() 函数发送 ARP 请求包,目标 MAC 地址为广播地址 ff:ff:ff:ff:ff:ff,目标 IP 地址为本机的网络地址。
  5. 解析 ARP 响应: ans 列表存储了所有接收到的 ARP 响应。
  6. 保存结果: 代码将扫描到的主机 IP 地址和 MAC 地址存入名为 hosts.txt 的文件中。

使用示例:

  1. 确保已安装 Scapy 库。
  2. 运行代码,结果将保存到 hosts.txt 文件中。

注意:

  • 代码需要 root 权限才能执行。
  • 代码仅展示了基本的 ARP 扫描功能,实际使用中可以根据需求添加更多功能。

总结:

本文介绍了如何使用 Python 编写代码,利用 ARP 协议扫描网络主机,并将扫描结果保存到文本文件中。通过使用 Scapy 库,可以轻松实现 ARP 扫描功能,并根据需要定制代码以满足不同的需求。

相关资料:

Python 使用 ARP 扫描网络主机并保存结果

原文地址: https://www.cveoy.top/t/topic/jpiJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录