As part of our research, we developed several tools including implementations of AWDL and AirDrop that we publish as open source software.

Console output of our AWDL implementation OWL
Console output of our AWDL implementation OWL

OWL logo

OWL

OWL is a an open implementation of the Apple Wireless Direct Link (AWDL) protocol written in C. It currently runs on Linux and macOS and requires a Wi-Fi card with support for monitor mode and frame injection.

Code

AirDrop logo

OpenDrop

OpenDrop is a command-line tool written in Python that allows sharing files between devices directly over Wi-Fi. Its unique feature is that it is protocol-compatible with Apple AirDrop which allows to share files with Apple devices running iOS and macOS. To support communication with Apple devices, OpenDrop needs to run over an AWDL-compatible link and, thus, supports macOS and any platform that supports OWL.

Code

OpenHaystack logo

OpenHaystack

Build your own ‘AirTags’ today. OpenHaystack provides a framework for tracking personal Bluetooth-capable devices. It leverages Apple’s massive Find My network to retrieve the location of offline devices.

Code

OpenWifiPass

OpenWifiPass is a command-line tool written in Python that allows for sharing a Wi-Fi password with macOS or iOS devices. OpenWifiPass currently only supports the grantor role of Apple’s Wi-Fi Password Sharing protocol.

Code

BTLEmap logo

BTLEmap

BTLEmap is an auditing tool for Bluetooth Low Energy (BLE) environments. It allows for viewing and inspecting nearby BLE devices. The tool features a proximity view, a fingerprinting module, and a dissector for vendor-specific advertisements.

Code

Wireshark dissecting an AWDL frame
Wireshark dissecting an AWDL frame

Wireshark logo

Protocol Dissectors

Wireshark dissector for Apple Wireless Direct Link (AWDL) and Apple’s CoreCapture logging framework. Note: The AWDL dissector is included in the official Wireshark builds since version 3.0.0.

Code

proxAWDL

Tunnels a regular TCP connection through an AWDL link by exploiting the NetService API. On macOS, you may instead also use the special XNU socket option SO_RECV_ANYIF (0x1104) to allow a socket to send and receive via AWDL.

Code