☰
Airgorah源码剖析:Rust手工构造802.11 Deauth帧的34字节奥秘
2026/9/28 20:56:55 网站建设 项目流程

Airgorah源码剖析:Rust手工构造802.11 Deauth帧的34字节奥秘

【免费下载链接】airgorahA WiFi security auditing software项目地址: https://gitcode.com/gh_mirrors/ai/airgorah

Airgorah 是一款用 Rust 编写的 WiFi 安全审计软件,能捕获附近 WiFi 流量、发现连接客户端、发起 Deauth(去认证)攻击并抓取握手包。它的 Deauth 功能不依赖任何第三方协议库,而是手工拼装一个仅34 字节的 802.11 帧,通过原始套接字直接注入到监控模式的无线网卡上。本文带你逐字节拆解这个 802.11 Deauth 帧的构造奥秘。

Airgorah 图形界面:上方为扫描到的热点(含 BSSID、加密方式、是否抓到握手包),下方为可发起攻击的客户端列表

🏗️ 攻击链路:从按钮到网卡

Airgorah 采用「GUI + 特权代理」双进程架构:图形界面以普通用户运行,需要提权的操作通过polkit拉起特权代理airgorah-agent。一次 Deauth 攻击的完整链路是:

  1. 用户在界面上勾选目标客户端、设置速率,点击 Attack
  2. GUI 侧 crates/gui/src/frontend/connections/deauth.rs 收集选中的 MAC 地址
  3. 通过 IPC 转发到特权代理 crates/agent/src/server.rs
  4. 核心逻辑落在 crates/agent/src/backend/deauth.rs —— 手工构造帧并注入

真正"有奥秘"的,就是第 4 步里build_mgmt_frame函数拼出来的 34 个字节。

📦 34 字节 = 8 字节 Radiotap + 26 字节 802.11 帧

在 crates/agent/src/backend/deauth.rs 中,帧的组装分为两段:

Radiotap 头部(8 字节)

0x00 0x00 0x08 0x00 0x00 0x00 0x00 0x00

这是注入时网卡驱动要求的"元数据头":版本号 0、填充 0、长度 8、字段标志位为 0(不携带任何额外字段)。标志位全 0 的含义是:发射参数(速率、功率等)全部交给驱动自行决定,应用层无需关心。

802.11 管理帧(26 字节)

偏移字节数字段值
82帧控制(Frame Control)0xC0(去认证)或0xA0(去关联)
102Duration全 0
126Address 1(目的地址)目标 MAC 或广播地址
186Address 2(源地址)源 MAC
246Address 3BSSID(AP 的 MAC)
302序列号全 0
322原因码7(去认证)/8(去关联),小端序

0xC0的二进制是11_000_000:高 2 位11表示 Management 类型,后 6 位000000即 subtype 12(Deauthentication)。管理帧没有加密、没有认证信息,这正是它能被任意伪造的根本原因。

🎯 广播还是点名:两种攻击模式

crates/agent/src/backend/deauth.rs 的launch_deauth_attack函数支持两种目标:

  • 全员模式:目的地址填0xFF:FF:FF:FF:FF:FF(BROADCAST常量,一行定义搞定),AP 会踢掉所有连接的客户端——这是最容易触发握手包重连的模式
  • 点名模式:对每个选中客户端构造AP→客户端和客户端→AP两个方向各一帧,双向同时攻击

发射速率被限制在 1~1000 帧/轮/秒,攻击线程按间隔循环发送,直到用户停止。

🔌 原始套接字:帧怎么飞出去

构造好的 34 字节交给 crates/agent/src/backend/raw_socket.rs:创建一个AF_PACKET类型的SOCK_RAW原始套接字,绑定到监控模式的网卡索引,之后send()出去的每个字节都原样变成无线信号——不经过协议栈任何处理。这也是为什么网卡必须支持监控模式和包注入(注入通常只在 2.4GHz 频段可靠)。

✅ 单元测试:34 字节一个都不能少

作者在 crates/agent/src/backend/deauth.rs 的测试里对每段字节都做了断言:

assert_eq!(frame.len(), 34); // 总长 34 assert_eq!(&frame[0..4], &[0x00,0x00,0x08,0x00]); // radiotap: v0, len 8 assert_eq!(frame[8], SUBTYPE_DEAUTH); // 0xC0 assert_eq!(&frame[32..34], &REASON_DEAUTH.to_le_bytes());

MAC 解析的边界情况(段数不足、非法十六进制、超长)也在 parse_mac 测试 中覆盖。这种"字节级"的测试正是手工构造协议帧的可靠保障。

📚 小结

Airgorah 用不到 20 行核心代码揭示了 Deauth 攻击的本质:一帧 34 字节的管理帧,伪造 3 个 MAC 地址 + 一个原因码,即可让客户端掉线。理解这 34 个字节,你就理解了 802.11 管理帧为何缺乏认证保护——这也正是现代 WPA3 引入对管理帧进行 PMF 保护的意义所在。

⚠️法律提示:Deauth 攻击仅可用于审计你自己拥有或获授权测试的无线网络。在绝大多数国家和地区,对非自有网络发起此类攻击均属违法行为。

想继续深入?可以从这两个入口读起:

  • 帧构造与攻击线程:crates/agent/src/backend/deauth.rs
  • 原始套接字收发:crates/agent/src/backend/raw_socket.rs

【免费下载链接】airgorahA WiFi security auditing software项目地址: https://gitcode.com/gh_mirrors/ai/airgorah

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询