You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Monitor Mode模式下Packet Injection跨设备失效问题求助

WiFi数据包注入仅本地可见的问题排查与修复

你遇到的问题核心是注入的802.11帧不符合标准或参数配置错误,导致目标设备无法识别接收。以下是具体的遗漏点和修复方案:

1. 802.11帧地址字段完全配置错误

Dot11帧的三个地址字段有明确分工:

  • addr1:接收方MAC(目标设备/AP的MAC)
  • addr2:发送方MAC(本地注入网卡的MAC)
  • addr3:BSSID(目标AP的MAC,关联请求帧必须设置为AP的MAC)

你的代码中把addr1设为本地网卡MAC,addr2设为目标设备MAC,完全搞反了,导致帧被发送到错误的接收方,目标设备自然无法捕获。

2. SSID字段配置错误

关联请求帧中的Dot11Elt(ID=0)是SSID字段,你填写的info="MY_BSSID"是无效值,必须替换为目标AP的真实SSID,否则AP和目标设备都会忽略这个帧。

3. 自定义Dot11EltRates存在风险

Scapy已经内置了标准的Dot11EltRates实现,自定义类可能存在字段解析偏差(比如长度字段的处理)。建议直接用内置的Dot11Elt类型指定速率:

Dot11Elt(ID=1, info=b'\x0c\x12\x18\x24\x30\x48\x60\x6c')

4. 关联请求的能力字段(cap)可能不匹配

cap=0x1100可能不符合目标AP的能力要求,建议改为更通用的配置,比如0x0410(表示ESS网络+支持CFP),或者先通过Wireshark捕获合法的关联请求帧,复制其cap值。

修正后的代码示例

from scapy.all import *

# 配置正确的参数
src_sta_mac = "4c:5e:0c:11:01:95"  # 本地注入网卡MAC
dst_ap_mac = "d0:39:57:b8:a8:bf"   # 目标AP的MAC
target_ssid = "Real_AP_SSID"       # 目标AP的真实SSID

# 构造符合标准的关联请求帧
packet = Dot11(
    addr1=dst_ap_mac,  # 接收方是AP
    addr2=src_sta_mac, # 发送方是本地STA
    addr3=dst_ap_mac   # BSSID等于AP的MAC
) / Dot11AssoReq(
    cap=0x0410,        # 通用能力字段
    listen_interval=0x000a
) / Dot11Elt(
    ID=0, info=target_ssid  # 正确的SSID
) / Dot11Elt(
    ID=1, info=b'\x0c\x12\x18\x24\x30\x48\x60\x6c'  # 标准速率字段
)

# 发送数据包,指定速率确保兼容性
sendp(packet, iface="wlan0mon", rate=6, verbose=1)
packet.show()

额外排查点

  • 确认两块网卡在同一频段(2.4G或5G),不能跨频段使用相同信道号
  • 调整网卡发射功率:sudo iw dev wlan0mon set txpower fixed 20(单位dBm)
  • 用Wireshark同时捕获两端的流量,对比本地发送的帧和目标端是否有接收痕迹

内容的提问来源于stack exchange,提问作者Filip Vuković

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:31:04