使用 Scapy Python 查找所有 Wifi 设备
原文:https://www . geeksforgeeks . org/find-all-wifi-devices-use-scapy-python/
Scapy 是 Python2 和 Python3 都支持的库。它用于与网络上的数据包进行交互。它有几个功能,通过它们我们可以很容易地伪造和操纵数据包。通过 scapy 模块,我们可以创建不同的网络工具,如 ARP 欺骗器、网络扫描器、数据包转储器等。该模块可用于创建与网络安全和道德黑客相关的更高级的工具。
在本文中,我们将了解如何获取您周围连接的各种无线网络的 mac 地址以及它们发送的数据包类型。我们将探讨无线局域网报头中的地址 2,它是发射机地址。然后我们将创建一组这些地址,并将打印我们得到的所有唯一地址。
我们使用无线设备的 Dot 11 层来获取其地址和有效负载。Dot11 是无线通信网络全球规范的技术名称。
要成功运行 scapy,应满足以下条件:
对于窗户:
- 安装 WinPcap 。
- 转到开始->命令提示符->在管理中打开。使用命令“ipconfig/all”并复制我们将来将使用的无线适配器的描述。它看起来像这个“高通 QCA9377 802.11ac 无线适配器”。
- 现在到你正在使用的 IDE,打开终端,使用“pip install scapy”安装 scapy。
对于 Linux:
只需使用终端使用“pip install scapy”安装 scpay 并使用它。不需要额外的过程。为了获得所需的地址和数据包,使用了 scapy 模块的 sniff()方法。
语法:嗅探(iface,计数,prn,超时=无)
参数:
- iface 是我们想要嗅探到的接口。(默认值=所有可用接口)。
- count 是要嗅探的数据包总数。(0 表示无穷大)
- prn 是应用于每个嗅探数据包的回调方法。
- 超时是您希望嗅探功能在秒内停止工作的时间(默认值为无)
方法
- 导入模块
- 查找 Iface 名称
- 将 IFACE_NAME 声明为网卡描述,并将其作为接口提供给嗅探功能
- 使用所需的参数调用 sniff()函数
示例 1: 打印所有检测到的地址
Python 3
import sys
from scapy.all import *
IFACE_NAME = "Qualcomm QCA9377 802.11ac Wireless Adapter"
devices = set()
def PacketHandler(pkt):
if pkt.haslayer(Dot11):
dot11_layer = pkt.getlayer(Dot11)
if dot11_layer.addr2 and (dot11_layer.addr2 not in devices):
devices.add(dot11_layer.addr2)
print(dot11_layer.addr2)
sniff(iface=IFACE_NAME, count=1, prn=PacketHandler)
输出:
示例 2: 打印所有检测到的数据包类型&地址
Python 3
import sys
from scapy.all import *
IFACE_NAME = "Qualcomm QCA9377 802.11ac Wireless Adapter"
devices = set()
def PacketHandler(pkt):
if pkt.haslayer(Dot11):
dot11_layer = pkt.getlayer(Dot11)
if dot11_layer.addr2 and (dot11_layer.addr2 not in devices):
devices.add(dot11_layer.addr2)
print(len(devices), dot11_layer.addr2, dot11_layer.payload.name)
sniff(iface=IFACE_NAME, count=100, prn=PacketHandler)
输出:
版权属于:月萌API www.moonapi.com,转载请注明出处