'''子网掩码是255.255.252.0,
用python扫描网内所有电脑并返回它们的IP与MAC
要使用 Python 扫描子网内的所有电脑并返回它们的 IP 和 MAC,
需要使用 socket 和 scapy 库进行操作。
请参考下面的代码,其中包含要执行的基本步骤:'''
'''以下这个winpcap如果没装的话,运行会出现如下错误,先装一下:
RuntimeError: Sniffing and sending packets is not available at layer 2:
winpcap is not installed.
You may use conf.L3socket orconf.L3socket6 to access layer 3
winpcap简介:
winpcap(windows packet capture)是windows平台下一个免费,
公共的网络访问系统。
开发winpcap这个项目的目的在于为win32应用程序提供访问网络
底层的能力。它用于windows系统下的直接的网络编程。
反正就是说你想抓包,先安装这个才行
下载地址:
http://soft.onlinedown.net/soft/2685.htm
解压后直接安装即可,问题解决。'''
'''安装 scapy 库
pip install scapy
您还可以安装特定版本的库,例如:
pip install scapy==2.4.5
注意:这个命令可能需要使用管理员权限运行。
安装完成后,您可以在 Python 中使用以下导入语句导入库:
import socket
from scapy.all import ARP, Ether, srp
'''
import socket
from scapy.all import srp
from scapy.layers.l2 import ARP,Ether
#ARP和Ether要在scapy.layers.l2中引用,不能在scapy.all中引用
# 初始化目标 IP 和子网掩码
目标IP = "192.168.1.0/22"
#IP 地址 192.168.1.0/22 的范围是
# 从 IP 地址 192.168.0.0 到 192.168.3.255,
# 共包含 1022 个可用的 IP 地址。
# 创建 ARP 请求包
arp = ARP(pdst=目标IP)
#ARP是地址解析协议,它是一种将IP地址转换成物理地址的协议。
# ARP协议运行在IP层,
# 它的工作是将网络接口上存储的IP地址转换成对应的物理地址。
以太网 = Ether(dst="ff:ff:ff:ff:ff:ff")
数据包 = 以太网/arp
# 发送请求包并解析响应
结果, _ = srp(数据包, timeout=3, verbose=0)
# 将响应数据处理成字典形式
电脑列表 = []
for sent, received in 结果:
电脑列表.append({'ip': received.psrc, 'mac': received.hwsrc})
# 打印出子网内的所有计算机的 IP 和 MAC 地址列表
for 电脑 in 电脑列表:
print(f"IP地址:{电脑['ip']} | MAC地址:{电脑['mac']}")
用python扫描网内所有电脑并返回它们的IP与MAC
最新推荐文章于 2024-03-19 13:53:17 发布