# OWL：开源的 Apple 无线直连（AWDL）实现

> 以用户态 C 守护进程在 Linux 和 macOS 上重新实现 Apple 无线直连（AWDL）——Apple 设备用于 AirDrop 等点对点连接的专有 Wi-Fi 自组网协议；README 称其为达姆施塔特工业大学 SEEMOO 实验室 Open Wireless Link 项目逆向工程的成果。OWL 执行主节点选举，同步可用窗口和信道序列，解析并构造 AWDL 动作帧与数据帧，并提供带链路本地 IPv6 地址的 awdl0 虚拟网络接口，使未经修改的 IPv6 程序（如 SEEMOO 的 AirDrop 客户端 OpenDrop）能够与 Apple 设备通信。作者在 MobiCom 2018 论文中描述了还原出的协议。

- 类型：案例
- 目标：协议
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/seemoo-lab/owl>
- 一手来源：<https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/owl-awdl-open-implementation-case/>
- 记录 JSON：<https://awesomerea.org/resources/owl-awdl-open-implementation-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/owl-awdl-open-implementation-case/index.md)

## 使用条件与局限

- 仓库已归档；README 称 OWL 是实验性软件、已不再维护，并未支持 AWDL 的全部功能，可能与之后的 AWDL 版本不兼容，同时声明与 Apple 无关联、未获其认可。最后一次代码改动是 2022 年 1 月修复缓冲区越界读取；2026-08-17 和 2026-10-12 的提交只是替换了指向原 owlink 网站的链接，README 说明该网站已与本项目无关。仓库没有标签或发布版本。
- 需要支持主动监听模式和帧注入、且可直接访问的 Wi-Fi 网卡：作者使用 Atheros AR9280 开发和测试；不支持未做 USB 或 PCIe 直通的虚拟机，也不支持 WSL。OWL 需以 sudo 在一个无线接口上运行，运行后该接口只用于 AWDL，因此不能同时连接接入点；可用信道为 6、44 和 149，具体取决于当地的无线电管理规定，无法使用所选信道时 OWL 只能监听。
- 使用 CMake 3.5+ 和 C 编译器构建，依赖 libpcap、libev，Linux 上还需 libnl；macOS 上使用 CoreWLAN，并需要 tuntaposx 等 tun/tap 驱动。googletest 和 radiotap 库以 git 子模块引入。ubuntu-latest 与 macos-latest 上的工作流会构建代码并运行 googletest 测试，覆盖帧缓冲区解析、选举、对端管理和同步；与 Apple 设备的互通情况来自作者报告。
- 构建时不需要任何 Apple 文件，仓库只包含源代码、测试、构建文件和一张架构图；实际使用需要附近有启用 AWDL 的 Apple 设备。README 列出的已知不足包括：选举指标和计数器取静态值；信道序列在启动时固定，因为动态调整需要进一步了解 Apple 的实现；不能同时连接接入点。README 还引用了该团队的 MobiCom 2018 协议论文及演示，以及一篇 USENIX Security 2019 的 AWDL 安全分析论文。
- GPL-3.0 许可（COPYING）；AWDL 和 AirDrop 仍是 Apple 的专有技术。

## 一手来源

1. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/README.md>
2. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/CMakeLists.txt>
3. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/.gitmodules>
4. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/daemon/owl.c>
5. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/src/frame.h>
6. <https://github.com/seemoo-lab/owl/tree/0ee3263f944ea721c355f826aa90d636d012a512/tests>
7. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/.github/workflows/test.yml>
8. <https://github.com/seemoo-lab/owl/blob/0ee3263f944ea721c355f826aa90d636d012a512/COPYING>
9. <https://doi.org/10.1145/3241539.3241566>

## 同分区更多条目：协议

- [QuestPad：利用 Quest Touch 无线协议构建 USB 手柄](https://awesomerea.org/zh/resources/questpad-case/index.md) · 案例
- [Stadiacast：重建 Stadia 手柄的 Wi-Fi 服务](https://awesomerea.org/zh/resources/stadiacast-case/index.md) · 案例
- [os-xgs-npu：重建 Sophos XGS 协处理器接口](https://awesomerea.org/zh/resources/os-xgs-npu-case/index.md) · 案例
- [LibreMP：基于抓包研究的 Epson EasyMP 投屏客户端](https://awesomerea.org/zh/resources/libremp-easymp-case/index.md) · 案例
- [Sony CDX-A250：还原 LCD 面板接口](https://awesomerea.org/zh/resources/lc75826-sony-cdx-a250-case/index.md) · 案例
- [MacroPad：重建 USB 宏键盘配置协议](https://awesomerea.org/zh/resources/macropad-usb-protocol-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
