用python扫描网内所有电脑并返回它们的IP与MAC

'''子网掩码是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']}")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将出东方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值