Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OWL works, but opendrop doesn't #119

Open
littleblack111 opened this issue May 13, 2024 · 4 comments
Open

OWL works, but opendrop doesn't #119

littleblack111 opened this issue May 13, 2024 · 4 comments

Comments

@littleblack111
Copy link

for context: I’m using Intel Wireless 7265 for wifi card, but the network is using ethernet
I am using https://github.com/seemoo-lab/owl and https://github.com/seemoo-lab/opendrop. I use owl -i wlp2s0 -N(because without -N, ERROR: Error while receiving via netlink: Operation not supported), then opendrop recive. doesn't work, opendrop find doesn't work as well. although I can see when i click airdrop on macbook, it will add peer on owl's log

@littleblack111
Copy link
Author

What is the status of this project. Archived?

@jairwen
Copy link

jairwen commented Sep 1, 2024

same here, guess new IOS and OSX changes some workflow in AWDL protocol which ignore opendrop service.

@OPiElix
Copy link

OPiElix commented Sep 4, 2024

Look at this: seemoo-lab/owl#9
It might be that your wireless card doesn't support active monitor mode, which is needed by owl as in the README of https://github.com/seemoo-lab/owl .

Requirements
Wi-Fi card with active monitor mode. To use OWL, you will need a Wi-Fi card supporting active monitor mode with frame injection.

That's why OWL throws an error without the -N. With -N, OWL doesn't throw an error, but simply doesn't work. OWL needs monitor mode to create the awdl0 interface, because Apple devices don't do AirDrop over WLAN, do they?

@jayache80
Copy link

Can anyone confirm that this project indeed still works with recent iOS (17 or 18)? I could not get nearby iOS 17 or iOS 18 devices to show up. I confirmed that the Wi-Fi adapter I used supported active monitor mode (Netgear A6210 USB dongle, which uses Mediatek MT7612U chip). I'm using Arch on kernel 6.12.6

I start owl like this:

sudo owl -i wlan1

This gives

14:52:57 ERROR: Error while receiving via netlink: Object busy
14:52:57 ERROR: Could not put device in monitor mode: wlan1
14:52:57 ERROR: could not initialize core

so I bring the interface down (to free it from whatever's keeping it "busy") and try again:

sudo ip link set wlan1 down
sudo owl -i wlan1

and then owl yields no errors:

14:57:10 INFO : WLAN device: wlan1 (addr xx:xx:xx:xx:xx:xx)
14:57:10 INFO : Host device: awdl0

and when I run ip a I can see that the awdl0 interface was created, and that wlan1 was brought UP. When I run iw wlan1 info I see that it is "type monitor".

While owl is running, I then run opendrop find but it doesn't find newer nearby iOS devices. It throws this warning when it starts but otherwise no errors that I can see:

Looking for receivers. Press Ctrl+C to stop ...
/usr/lib/python3.13/site-packages/opendrop/client.py:69: FutureWarning: <opendrop.client.AirDropBrowser object at 
0x73f352d97230> has no update_service method. Provide one (it can be empty if you don't care about the updates), it'll 
become mandatory.
  self.browser = ServiceBrowser(self.zeroconf, "_airdrop._tcp.local.", self)

However, I brought a Mid-2012 MacBook Pro into the mix (running macOS Catalina 10.15.7) and while running opendrop find on the Linux computer I could tell it it did start to discover that Macbook's Airdrop (while using an iOS 17 device to attempt to share a picture, searching for available airplay recipients). It threw an error but that's perhaps a little code rot:

Exception in thread Thread-3 (_send_discover):
Traceback (most recent call last):
  File "/usr/lib/python3.13/threading.py", line 1041, in _bootstrap_inner
    self.run()
    ~~~~~~~~^^
  File "/usr/lib/python3.13/threading.py", line 992, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/opendrop/cli.py", line 156, in _send_discover
    receiver_name = client.send_discover()
  File "/usr/lib/python3.13/site-packages/opendrop/client.py", line 141, in send_discover
    _, response_bytes = self.send_POST("/Discover", discover_plist_binary)
                        ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/opendrop/client.py", line 109, in send_POST
    self.http_conn = HTTPSConnectionAWDL(
                     ~~~~~~~~~~~~~~~~~~~^
        self.receiver_host,
        ^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
        context=self.config.get_ssl_context(),
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.13/site-packages/opendrop/client.py", line 266, in __init__
    super(HTTPSConnectionAWDL, self).__init__(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        host=host,
        ^^^^^^^^^^
    ...<6 lines>...
        check_hostname=check_hostname,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
TypeError: HTTPSConnection.__init__() got an unexpected keyword argument 'key_file'

That was accompanied by a message in owl's output:

16:03:03 INFO : add peer xx:xx:xx:xx:xx:xx (redacted)
16:03:07 INFO : remove peer xx:xx:xx:xx:xx:xx (redacted)

I'm thinking that iOS changed and this no longer works with these newer iOS versions, but would appear to still work with older Airplay implementations (like this Mid-2012 MacBook Pro running Catalina).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants