GithubHelp home page GithubHelp logo

seemoo-lab / opendrop Goto Github PK

View Code? Open in Web Editor NEW
8.5K 79.0 267.0 111 KB

An open Apple AirDrop implementation written in Python

Home Page: https://owlink.org

License: GNU General Public License v3.0

Python 98.01% Makefile 1.99%
airdrop apple awdl linux macos

opendrop's Introduction

OpenDrop: an Open Source AirDrop Implementation

Release Language grade

OpenDrop is a command-line tool 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. Currently (and probably also for the foreseeable future), OpenDrop only supports sending to Apple devices that are discoverable by everybody as the default contacts only mode requires Apple-signed certificates. We support contacts-only devices by using extracted AirDrop credentials (keys and certificates) from macOS via our keychain extractor.

Disclaimer

OpenDrop is experimental software and is the result of reverse engineering efforts by the Open Wireless Link project. Therefore, it does not support all features of AirDrop or might be incompatible with future AirDrop versions. OpenDrop is not affiliated with or endorsed by Apple Inc. Use this code at your own risk.

Requirements

To achieve compatibility with Apple AirDrop, OpenDrop requires the target platform to support a specific Wi-Fi link layer. In addition, it requires Python >=3.6 as well as several libraries.

Apple Wireless Direct Link. As AirDrop exclusively runs over Apple Wireless Direct Link (AWDL), OpenDrop is only supported on macOS or on Linux systems running an open re-implementation of AWDL such as OWL.

Libraries. OpenDrop relies on a current version of libarchive. macOS ships with a rather old version, so you will need to install a newer version, for example, via Homebrew:

brew install libarchive

OpenDrop automatically sets DYLD_LIBRARY_PATH to look for the Homebrew version. You may need to update the variable yourself if you install the libraries differently.

Linux distributions should ship with more up-to-date versions, so this won't be necessary.

Installation

Installation of the Python package release is straightforward using pip3:

pip3 install opendrop

You can also install the current development version by first cloning this repository, and then installing it via pip3:

git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop

Usage

We briefly explain how to send and receive files using opendrop. To see all command line options, run opendrop -h.

Sending a File or a Link

Sending a file is typically a two-step procedure. You first discover devices in proximity using the find command. Stop the process once you have found the receiver.

$ opendrop find
Looking for receivers. Press Ctrl+C to stop ...
Found  index 0  ID eccb2f2dcfe7  name John’s iPhone
Found  index 1  ID e63138ac6ba8  name Jane’s MacBook Pro

You can then send a file (or link, see below) using

$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful

Instead of the index, you can also use ID or name. OpenDrop will try to interpret the input in the order (1) index, (2) ID, and (3) name and fail if no match was found.

Sending a web link. Since v0.13, OpenDrop supports sending web links, i.e., URLs, so that receiving Apple devices will immediately open their browser upon accepting. (Note that OpenDrop receivers still only support receiving regular files.)

$ opendrop send -r 0 -f https://owlink.org --url

Receiving Files

Receiving is much easier. Simply use the receive command. OpenDrop will accept all incoming files automatically and put received files in the current directory.

$ opendrop receive

Current Limitations/TODOs

OpenDrop is the result of a research project and, thus, has several limitations (non-exhaustive list below). I do not have the capacity to work on them myself but am happy to provide assistance if somebody else want to take them on.

  • Triggering macOS/iOS receivers via Bluetooth Low Energy. Apple devices start their AWDL interface and AirDrop server only after receiving a custom advertisement via Bluetooth LE (see USENIX paper for details). This means, that Apple AirDrop receivers may not be discovered even if they are discoverable by everyone.

  • Sender/Receiver authentication and connection state. Currently, there is no peer authentication as in Apple's AirDrop, in particular, (1) OpenDrop does not verify that the TLS certificate is signed by Apple's root and (2) that the Apple ID validation record is correct (see USENIX paper for details). In addition, OpenDrop automatically accepts any file that it receives due to a missing connection state.

  • Sending multiple files. Apple AirDrop supports sending multiple files at once, OpenDrop does not (would require adding more files to the archive, modify HTTP /Ask request, etc.).

Our Papers

  • Alexander Heinrich, Matthias Hollick, Thomas Schneider, Milan Stute, and Christian Weinert. PrivateDrop: Practical Privacy-Preserving Authentication for Apple AirDrop. 30th USENIX Security Symposium (USENIX Security ’21), August 14–16, 2019, virtual Event. Paper Website Code
  • Milan Stute, Sashank Narain, Alex Mariotto, Alexander Heinrich, David Kreitschmann, Guevara Noubir, and Matthias Hollick. A Billion Open Interfaces for Eve and Mallory: MitM, DoS, and Tracking Attacks on iOS and macOS Through Apple Wireless Direct Link. 28th USENIX Security Symposium (USENIX Security ’19), August 14–16, 2019, Santa Clara, CA, USA. Paper

Authors

  • Milan Stute (email, web)
  • Alexander Heinrich

License

OpenDrop is licensed under the GNU General Public License v3.0.

opendrop's People

Contributors

schmittner avatar sn0wfreezedev avatar sumimakito avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opendrop's Issues

You must specify a valid interface name.

Running Ubuntu 19.04 with 5.2.8 kernel. Connected via ethernet cable. Wifi enabled but not connected to anything.

open drop find
Looking for receivers. Press enter to stop ... Traceback (most recent call last): File "/home/stringcode/.local/bin/opendrop", line 10, in <module> sys.exit(main()) File "/home/stringcode/.local/lib/python3.7/site-packages/opendrop/cli.py", line 38, in main AirDropCli(sys.argv[1:]) File "/home/stringcode/.local/lib/python3.7/site-packages/opendrop/cli.py", line 78, in __init__ self.find() File "/home/stringcode/.local/lib/python3.7/site-packages/opendrop/cli.py", line 97, in find self.browser = AirDropBrowser(self.config) File "/home/stringcode/.local/lib/python3.7/site-packages/opendrop/client.py", line 48, in __init__ self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=self.useIPv6) File "/home/stringcode/.local/lib/python3.7/site-packages/opendrop/util.py", line 229, in get_ip_for_interface addresses = netifaces.ifaddresses(interface_name) ValueError: You must specify a valid interface name.

"No buffer space available" on find and receive

System information:
• Operating system: MacOS Catalina 10.15.7
• Device: MacBook Pro (16-inch, 2019)

Steps to reproduce:

~ opendrop find
Looking for receivers. Press enter to stop ...
Error sending through socket 4
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/zeroconf/__init__.py", line 2889, in send
    bytes_sent = s.sendto(packet, 0, (real_addr, port))
OSError: [Errno 55] No buffer space available
~ opendrop receive
Announcing service: host 3c22fbf03a1f.ant.amazon.com, address fe80::7446:c4ff:fe51:d986, port 8771
Error sending through socket 4
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/zeroconf/__init__.py", line 2889, in send
    bytes_sent = s.sendto(packet, 0, (real_addr, port))
OSError: [Errno 55] No buffer space available
Starting HTTPS server

Expected results: Find new devices and/or receive incoming payload
Actual results: Catching OSError: [Errno 55] No buffer space available errors upon execution.

Things tried:

  1. Increasing datagram size:
sudo sysctl -w net.inet.udp.maxdgram=655350
net.inet.udp.maxdgram: 9216 -> 655350

No effect.

'opendrop send' results in 'Broken pipe' or 'Connection reset by peer' exception

I'm working through the Use AirDrop on a Raspberry Pi 3 guide using the suggested setup:

  • Raspberry Pi 3 Model B
  • Raspbian Stretch Lite
  • BCM43430A1 Wi-Fi chip

When attempting to send a file from the Raspberry Pi to an iPhone, the phone is prompted with the Airdrop Decline/Accept popup. After pressing Accept on the phone, an Alert pops up with the text "AirDrop from "raspberrypi" Failed" and OpenDrop throws either a [Errno 32] Broken pipe or a [Errno 104] Connection reset by peer exception.

Example stack trace of the [Errno 32] Broken pipe exception:

pi@raspberrypi:~ $ opendrop send -r 0 -f IMG_0631.jpg 
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Traceback (most recent call last):
  File "/usr/local/bin/opendrop", line 11, in <module>
    load_entry_point('opendrop==0.10', 'console_scripts', 'opendrop')()
  File "/usr/local/lib/python3.5/dist-packages/opendrop/cli.py", line 38, in main
    AirDropCli(sys.argv[1:])
  File "/usr/local/lib/python3.5/dist-packages/opendrop/cli.py", line 85, in __init__
    self.send()
  File "/usr/local/lib/python3.5/dist-packages/opendrop/cli.py", line 162, in send
    if not self.client.send_upload(self.file):
  File "/usr/local/lib/python3.5/dist-packages/opendrop/client.py", line 201, in send_upload
    success, _ = self.send_POST('/Upload', stream, headers=headers)
  File "/usr/local/lib/python3.5/dist-packages/opendrop/client.py", line 112, in send_POST
    self.http_conn.request('POST', url, body=body, headers=_headers)
  File "/usr/lib/python3.5/http/client.py", line 1107, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.5/http/client.py", line 1152, in _send_request
    self.endheaders(body)
  File "/usr/lib/python3.5/http/client.py", line 1103, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.5/http/client.py", line 936, in _send_output
    self.send(message_body)
  File "/usr/lib/python3.5/http/client.py", line 905, in send
    self.sock.sendall(datablock)
  File "/usr/lib/python3.5/ssl.py", line 899, in sendall
    v = self.send(data[count:])
  File "/usr/lib/python3.5/ssl.py", line 869, in send
    return self._sslobj.write(data)
  File "/usr/lib/python3.5/ssl.py", line 594, in write
    return self._sslobj.write(data)
BrokenPipeError: [Errno 32] Broken pipe

Example stack trace of the [Errno 104] Connection reset by peer exception:

pi@raspberrypi:~ $ opendrop send -r 0 -f IMG_0631.jpg 
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Traceback (most recent call last):
  File "/usr/local/bin/opendrop", line 11, in <module>
    load_entry_point('opendrop==0.10', 'console_scripts', 'opendrop')()
  File "/usr/local/lib/python3.5/dist-packages/opendrop/cli.py", line 38, in main
    AirDropCli(sys.argv[1:])
  File "/usr/local/lib/python3.5/dist-packages/opendrop/cli.py", line 85, in __init__
    self.send()
  File "/usr/local/lib/python3.5/dist-packages/opendrop/cli.py", line 162, in send
    if not self.client.send_upload(self.file):
  File "/usr/local/lib/python3.5/dist-packages/opendrop/client.py", line 201, in send_upload
    success, _ = self.send_POST('/Upload', stream, headers=headers)
  File "/usr/local/lib/python3.5/dist-packages/opendrop/client.py", line 112, in send_POST
    self.http_conn.request('POST', url, body=body, headers=_headers)
  File "/usr/lib/python3.5/http/client.py", line 1107, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.5/http/client.py", line 1152, in _send_request
    self.endheaders(body)
  File "/usr/lib/python3.5/http/client.py", line 1103, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.5/http/client.py", line 936, in _send_output
    self.send(message_body)
  File "/usr/lib/python3.5/http/client.py", line 905, in send
    self.sock.sendall(datablock)
  File "/usr/lib/python3.5/ssl.py", line 899, in sendall
    v = self.send(data[count:])
  File "/usr/lib/python3.5/ssl.py", line 869, in send
    return self._sslobj.write(data)
  File "/usr/lib/python3.5/ssl.py", line 594, in write
    return self._sslobj.write(data)
ConnectionResetError: [Errno 104] Connection reset by peer

android app

Hi, is it possible to create an Android app that would enable sharing via AirDrop?

Discovery does not work

I can neither get my laptop discovered nor discover my apple devices from the laptop.

My laptop configuration:

  • Arch Linux / x64 / 4.19.46 LTS kernel
  • Wireless card: Intel 7260 (I have already used it in a monitor mode with airdump-ng, so it works fine)
  • Latest owl from git (I have created an AUR package)

My iPhone SE and iPad Air2 have the latest stable iOS 12.3.1.

I have tried various setups on my laptop:

  • Connected to 5 GHz WiFi network (the same as the Apple devices) with NetworkManager. The result seems to be that owl couldn't get any useful information:

    19:21:13 INFO : WLAN device: mon0 (addr 28:b2:bd:3:b9:d9)
    19:21:13 INFO : Host device: awdl0
    19:21:13 DEBUG: switch channel to 6 (slot 0)
    19:21:13 TRACE: send MIF
    19:21:13 TRACE: Send data (len 126) to 33:33:0:0:0:16 (0.0.38)
    19:21:13 TRACE: send MIF
    19:21:13 TRACE: send PSF
    19:21:13 TRACE: send MIF
    19:21:13 TRACE: send PSF
    19:21:13 TRACE: send MIF
    

    opendrop on both receive and find (with -d flag) was silent except the initial message.

  • Connected to 2.4 GHz WiFi network (reconnected all the Apple devices there as well) with NetworkManager. The result was ERROR: unable to inject packet (send: Resource temporarily unavailable) output from owl.

  • Disconnected from all the WiFi networks (the Apple devices are left connected to 2.4 GHz WiFi network). This mode was the most promising, at least I started getting some useful messages on the owl side:

    19:27:58 INFO : WLAN device: wlp8s0mon (addr 28:b2:bd:3:b9:d9)
    19:27:58 INFO : Host device: awdl0
    19:27:58 DEBUG: switch channel to 6 (slot 0)
    19:28:27 DEBUG: peer 3e:50:c6:71:d8:5f () changed channel sequence to 149,149,149,149,0,0,0,0,6,149,149,149,0,0,0,0
    19:28:27 DEBUG: new election tree: 28:b2:bd:3:b9:d9 -> 3e:50:c6:71:d8:5f (met 60, ctr 174)
    19:28:27 INFO : add peer 3e:50:c6:71:d8:5f ()
    19:28:29 DEBUG: peer 3e:50:c6:71:d8:5f () changed channel sequence to 149,149,149,0,0,0,0,0,6,149,149,0,0,0,0,0
    19:28:32 DEBUG: new election tree: 28:b2:bd:3:b9:d9 -> 3e:50:c6:71:d8:5f -> da:65:4:e9:8d:fa (met 536, ctr 135)
    19:28:34 DEBUG: peer 3e:50:c6:71:d8:5f () changed channel sequence to 149,0,0,0,0,0,0,0,6,149,149,0,0,0,0,0
    19:28:35 DEBUG: peer 3e:50:c6:71:d8:5f () changed channel sequence to 149,149,149,149,0,0,0,0,6,6,6,6,0,0,0,0
    19:28:37 DEBUG: peer 3e:50:c6:71:d8:5f () changed channel sequence to 149,149,149,0,0,0,0,0,6,6,6,0,0,0,0,0
    19:28:46 DEBUG: peer 3e:50:c6:71:d8:5f () changed channel sequence to 149,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0
    ...
    19:32:47 INFO : remove peer 16:8c:3a:d8:ab:13 (iPad)
    19:32:47 DEBUG: new election tree: 28:b2:bd:3:b9:d9 (met 60, ctr 0)
    19:35:35 DEBUG: peer 4a:a7:d4:66:97:34 () changed channel sequence to 149,149,149,149,0,0,0,0,6,149,149,149,0,0,0,0
    19:35:35 INFO : add peer 4a:a7:d4:66:97:34 (iPad)
    19:35:35 DEBUG: new election tree: 28:b2:bd:3:b9:d9 -> 4a:a7:d4:66:97:34 (met 60, ctr 236)
    19:35:37 DEBUG: peer 4a:a7:d4:66:97:34 (iPad) changed channel sequence to 149,149,149,0,0,0,0,0,6,149,149,0,0,0,0,0
    19:35:42 DEBUG: peer 4a:a7:d4:66:97:34 (iPad) changed channel sequence to 149,0,0,0,0,0,0,0,6,149,149,0,0,0,0,0
    19:35:43 DEBUG: peer 4a:a7:d4:66:97:34 (iPad) changed channel sequence to 149,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0
    

    NOTE: My iPhone has no name for some reason while my iPad has.

    On the opendrop side I have seen a useful message only once:

    $ opendrop find -d
    2019-05-29 19:30:39,952 INFO     opendrop.cli: Looking for receivers. Press enter to stop ...
    2019-05-29 19:31:52,144 DEBUG    opendrop.client: Add service c8d4309875b0._airdrop._tcp.local.
    2019-05-29 19:31:52,144 DEBUG    opendrop.cli: AirDrop service found: iPad.local., fe80::148c:3aff:fed8:ab13:8770, ID c8d4309875b0
    2019-05-29 19:31:52,144 DEBUG    opendrop.client: Send /Discover request
    
    
    2019-05-29 19:32:16,459 DEBUG    opendrop.cli: Save discovery results to /home/frol/.opendrop/discover.last.json
    

    I still could not send a file.

owl issue

Make sure that owl is running.'.format(config.interface))
RuntimeError: Interface awdl0 does not have an IPv6 address. Make sure that owl is running.

FileNotFoundError: [Errno 2] No such file or directory: 'openssl': 'openssl'

I'm using Termux on Android 9.0, and I got this issue:

$ opendrop find
Key file or certificate does not exist
Create new self-signed certificate in /data/data/com.termux/files/home/.opendrop/keys
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/bin/opendrop", line 10, in <module>
    sys.exit(main())
  File "/data/data/com.termux/files/usr/lib/python3.7/site-packages/opendrop/cli.py", line 38, in main
    AirDropCli(sys.argv[1:])
  File "/data/data/com.termux/files/usr/lib/python3.7/site-packages/opendrop/cli.py", line 65, in __init__
    debug=args.debug, interface=args.interface)
  File "/data/data/com.termux/files/usr/lib/python3.7/site-packages/opendrop/config.py", line 98, in __init__                           self.create_default_key()                                       File "/data/data/com.termux/files/usr/lib/python3.7/site-packages/opendrop/config.py", line 110, in create_default_key
    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "/data/data/com.termux/files/usr/lib/python3.7/subprocess.py", line 488, in run                                                  with Popen(*popenargs, **kwargs) as process:
  File "/data/data/com.termux/files/usr/lib/python3.7/subprocess.py", line 800, in __init__
    restore_signals, start_new_session)                             File "/data/data/com.termux/files/usr/lib/python3.7/subprocess.py", line 1549, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'openssl': 'openssl'

My openssl version is 1.1.

TypeError: inet_aton() argument 1 must be str, not IPv4Address

Traceback (most recent call last):
  File "/usr/local/bin/opendrop", line 11, in <module>
    load_entry_point('opendrop==0.10.3', 'console_scripts', 'opendrop')()
  File "/usr/local/lib/python3.6/site-packages/opendrop/cli.py", line 38, in main
    AirDropCli(sys.argv[1:])
  File "/usr/local/lib/python3.6/site-packages/opendrop/cli.py", line 77, in __init__
    self.find()
  File "/usr/local/lib/python3.6/site-packages/opendrop/cli.py", line 96, in find
    self.browser = AirDropBrowser(self.config)
  File "/usr/local/lib/python3.6/site-packages/opendrop/client.py", line 49, in __init__
    self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=config.interface)
  File "/usr/local/lib/python3.6/site-packages/opendrop/zeroconf.py", line 1779, in __init__
    socket.inet_aton(_MDNS_ADDR) + socket.inet_aton(i))
TypeError: inet_aton() argument 1 must be str, not IPv4Address

opendrop find : ValueError: You must specify a valid interface name.

I tried this from a ubuntu 19.04 laptop...

$ opendrop find

Looking for receivers. Press enter to stop ...
Traceback (most recent call last):
File "/home/user1/.local/bin/opendrop", line 10, in
sys.exit(main())
File "/home/user1/.local/lib/python3.7/site-packages/opendrop/cli.py", line 38, in main
AirDropCli(sys.argv[1:])
File "/home/user1/.local/lib/python3.7/site-packages/opendrop/cli.py", line 78, in init
self.find()
File "/home/user1/.local/lib/python3.7/site-packages/opendrop/cli.py", line 97, in find
self.browser = AirDropBrowser(self.config)
File "/home/user1/.local/lib/python3.7/site-packages/opendrop/client.py", line 48, in init
self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=self.useIPv6)
File "/home/user1/.local/lib/python3.7/site-packages/opendrop/util.py", line 229, in get_ip_for_interface
addresses = netifaces.ifaddresses(interface_name)
ValueError: You must specify a valid interface name.

Always get low transfer speed.

Hi, I use build-in raspberry pi zero wifi for receiving file from my friend iPad, My speed is around 0.05 - 0.30 MB/s.

I don't know what cause this or this is normal for opendrop. I think its because I use build in antenna. I plan to buy new wifi usb to boost up my speed.

Avoid pycrypto

Hi there,

This is a really cool project - I wish there was something similar for Android :)

I noticed that you're using pycrypto:

    install_requires=['pycrypto', 'requests', 'fleep', 'netifaces', 'Pillow',
                      'requests_toolbelt', 'ctypescrypto', 'libarchive-c'],

At this point, pycrypto is considered insecure, and even has known exploits (pycrypto/pycrypto#176, pycrypto/pycrypto#253, pycrypto/pycrypto#269).

It's recommended to at least move to PyCryptodome, which should be mostly API compatible. The best solution would be to move to the cryptography library, which is considered best-practice at this point (and recommended by Cryptography — The Hitchhiker's Guide to Python).

Set "Host Name"

Is it possible to set the "hostname" to something other than the actual hostname for receiving files?

Not all devices are detected/sporadic behavior

Ok, so I am trying to airdrop things to people and I have ran into many issues that might be caused by the lack of BLE support.

•The commands 'airdrop find' and 'airdrop receive' yield no results on these devices:
iPad mini 1, iPad 4th gen (MD511LL/A)
•But it works on these devices:
iPhone 6, iPhone SE, iPhone 7

Although, the devices I've listed working are sporadic regarding recognition; with the devices in question taking multiple minutes for traffic to appear in the logs when I run the command: 'sudo owl -i mon0 -d -v' . This again may be an issue with the lack of BLE support; correct my if I'm wrong.

Conclusion:
Is this an issue on my end? Or is this caused by the lack of BLE support?

P.S
Incase it's useful, here are some misc. info:
Wifi card used for owl/opendrop: Atheros AR9485
OS: Manjaro (unstable branch but I tested on stable aswell)
Command used to put wifi card in monitor mode: 'sudo iw phy phy2 interface add mon0 type monitor flags active && sudo iw wlp2s0 del'

TypeError when running opendrop

I installed opendrop with the command pip3 install opendrop --user and then ran it with opendrop find, but I'm getting this error:

C:\>opendrop find
Traceback (most recent call last):
  File "c:\program files (x86)\python\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\program files (x86)\python\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\<user>\AppData\Roaming\Python\Python37\Scripts\opendrop.exe\__main__.py", line 5, in <module>
  File "C:\Users\<user>\AppData\Roaming\Python\Python37\site-packages\opendrop\cli.py", line 30, in <module>
    from .client import AirDropBrowser, AirDropClient
  File "C:\Users\<user>\AppData\Roaming\Python\Python37\site-packages\opendrop\client.py", line 26, in <module>
    import libarchive
  File "C:\Users\<user>\AppData\Roaming\Python\Python37\site-packages\libarchive\__init__.py", line 1, in <module>
    from .entry import ArchiveEntry
  File "C:\Users\<user>\AppData\Roaming\Python\Python37\site-packages\libarchive\entry.py", line 6, in <module>
    from . import ffi
  File "C:\Users\<user>\AppData\Roaming\Python\Python37\site-packages\libarchive\ffi.py", line 27, in <module>
    libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
  File "c:\program files (x86)\python\lib\ctypes\__init__.py", line 434, in LoadLibrary
    return self._dlltype(name)
  File "c:\program files (x86)\python\lib\ctypes\__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
TypeError: LoadLibrary() argument 1 must be str, not None

As a side note, thank you so, so much for making this! I've been looking for a way to share files between my devices in an AirDrop-like fashion ever since I started using a Windows machine.

Where are files downloaded?

When using the receive parameter, where are files downloaded?

I got a File(s) received (size 3.17 MB, speed 14.82 MB/s) message but cannot locate any file.

Problems With Find devices

Rpi 4 adapter alfa. I start owl and opendrop dont see apple devices with open airdrop. Can you help me with this problem?

Github release.

Please make a github release, for packaging purposes.
Thanks.

Got "abort" on every command

My environment: macOS 10.15 beta 5, Python 3.7.4.

When I was trying to run whatever command, the application exited:

[1] 49195 abort opendrop

Any clues will be helpful. Thanks.

Random behaviour with opendrop receive

Hi, I've tried in multiple virtual machines with the following configuration the "receive" command with no success:

  • Ubuntu 18.04, network card: Alpha AWUS052NH
  • Debian 9, network card: Alpha AWUS052NH
  • Kali Linux 2019, network card: Alpha AWUS052NH

In all of the environments, I've managed to set up the network with the card in monitor mode, although I have only been able to run the owl process with the -N flag sudo owl -i [iface] -N
When i run the process (both with the daemon process or without it) I've been able to use the opendrop find command all the time, discovering all the devices but when i try to run opendrop receive there are some random issues:

  • Most of the time it does not work, freezing and sending random zerconf mdns packets but not receiven anything.
  • Sometimes it captures the devices and my iDevices display the new device created by opendrop with the given name.
  • Sometimes it captures the devices but it does not appear in my iDevices.

So I don't know what to do to fix those issues.
Thanks in advance.

Code restructuring

Hello, I was wondering if you would be ok with me changing the setup files to current standards, so that the main config entries, such as requirements, script name, entry point, are in the setup.cfg.

Also using click library instead for CLI

TypeError: LoadLibrary() argument 1 must be str, not None

I installed opendrop-0.10.2, and there's is a TypeError occurred when I tried to find devices.

C:\Users\username>opendrop find Traceback (most recent call last): File "c:\users\username\appdata\local\programs\python\python37-32\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "c:\users\username\appdata\local\programs\python\python37-32\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\username\AppData\Local\Programs\Python\Python37-32\Scripts\opendrop.exe\__main__.py", line 4, in <module> File "c:\users\username\appdata\local\programs\python\python37-32\lib\site-packages\opendrop\cli.py", line 30, in <module> from .client import AirDropBrowser, AirDropClient File "c:\users\username\appdata\local\programs\python\python37-32\lib\site-packages\opendrop\client.py", line 26, in <module> import libarchive File "c:\users\username\appdata\local\programs\python\python37-32\lib\site-packages\libarchive\__init__.py", line 1, in <module> from .entry import ArchiveEntry File "c:\users\username\appdata\local\programs\python\python37-32\lib\site-packages\libarchive\entry.py", line 6, in <module> from . import ffi File "c:\users\username\appdata\local\programs\python\python37-32\lib\site-packages\libarchive\ffi.py", line 27, in <module> libarchive = ctypes.cdll.LoadLibrary(libarchive_path) File "c:\users\username\appdata\local\programs\python\python37-32\lib\ctypes\__init__.py", line 442, in LoadLibrary return self._dlltype(name) File "c:\users\username\appdata\local\programs\python\python37-32\lib\ctypes\__init__.py", line 364, in __init__ self._handle = _dlopen(self._name, mode) TypeError: LoadLibrary() argument 1 must be str, not None

Missing pip3 dependency: netifaces

After install opendrop frompip3 on macOS I've get error:

ModuleNotFoundError: No module named 'netifaces'

So i need to install this module manually:

pip3 install netifaces

and then it works. Probably this module should be added as dependency on pip scripts.

Discovering "Contacts Only" devices

Not really an issue, but just a question. Possibly a dumb one, as I'm rather inexperienced when it comes to cryptography, certificates and signing keys. Forgive me for that in advance. I should also mention I'm playing with OpenDrop on macOS, running on top or native AWDL, no OWL involved, although I don't think it makes any difference for this particular question.

If I read correctly, what I can understand from this paper (section 3.3) and OpenDrop source file util.py, (line 94), in order to discover and send files to a device in Contacts Only mode, two certificates are needed. The first one is a device-specific Apple-signed certificate, with subject name something like com.apple.idms.appleid.prd.uuid, where uuid part is an Apple ID account UUID. The certificate is usually placed into user's login Keychain when logging into the device with its Apple ID. The whole purpose of this certificate is to get that UUID (and put it into the record data) and if one can figure out some other way of doing it (e.g. using Apple's private Sharing framework), that certificate is not needed at all.

The second certificate is used to sign binary plist data of created record data. It is said that "to be accepted by Apple clients, we would need the Apple-owned private key of the signing certificate", and of course we don't have it. When my Apple AirDrop devices in Contacts Only mode are discovered by my Mac, I assume the record data containing my Apple ID UUID and hashed contacts is somehow signed on the Mac and send to those devices when trying to establish an authenticated connection. So, if there are no Apple-owned private keys on my Mac, I wonder how that record data gets signed when the Mac initiates authenticated connection to other AirDrop device.

Once again, I apologise for potentially dumb question for the reasons I explained in the first paragraph and thanks for clarification.

wlan0, device can't be found

Whenver I put in
sudo iw phy iw dev wlan0 info | gawk '/wiphy/ {printf "phy" $2}'interface add mon0 type monitor

I get:
command failed: No such device (-19) command failed: No such file or directory (-2)

Sending to multiple devices

I was wondering if there was a plan for sending to multiple devices simultaneously? Or even better, having a argument to either opendrop find or opendrop send that would find a device then automaticly attempt to send a file to it.

Possible example of sending a file to multiple devices:
opendrop send -f "file.png" -n "device name" -r 0,1,2,3,4

Possible example of automaticly finding and sending file:
opendrop find --auto-send -n "device name" -f "file.png"

active monitoring mode

I don't know where to put this so I'll put it here. If your having issues with active monitoring mode try creating a monitoring interface with this command:

sudo iw phy phy1 interface add mon0 type monitor flags active

hope this helps!

Encountered wrong when using the opendrop in terminal

$ opendrop
Traceback (most recent call last):
File "/usr/local/bin/opendrop", line 6, in
from opendrop.cli import main
File "/usr/local/lib/python3.7/site-packages/opendrop/cli.py", line 30, in
from .client import AirDropBrowser, AirDropClient
File "/usr/local/lib/python3.7/site-packages/opendrop/client.py", line 32, in
from .util import AirDropUtil, AbsArchiveWrite
File "/usr/local/lib/python3.7/site-packages/opendrop/util.py", line 30, in
from libarchive import ffi
File "/usr/local/lib/python3.7/site-packages/libarchive/ffi.py", line 27, in
libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/init.py", line 442, in LoadLibrary
return self._dlltype(name)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/init.py", line 364, in init
self._handle = _dlopen(self._name, mode)
OSError: dlopen(/usr/local/opt/libarchive/lib/libarchive.dylib, 6): image not found

libcrypto CMS functionality error

I tried both installing opendrop using "pip3 install opendrop" and "pip3 install ./opendrop" where ./opendrop is the most recent version from repository, but I'm facing this error:

Traceback (most recent call last):
  File "/usr/bin/opendrop", line 5, in <module>
    from opendrop.cli import main
  File "/usr/lib/python3.7/site-packages/opendrop/cli.py", line 28, in <module>
    from .client import AirDropBrowser, AirDropClient
  File "/usr/lib/python3.7/site-packages/opendrop/client.py", line 32, in <module>
    from .util import AirDropUtil, AbsArchiveWrite
  File "/usr/lib/python3.7/site-packages/opendrop/util.py", line 30, in <module>
    from ctypescrypto import cms, x509, pkey, oid
  File "/usr/lib/python3.7/site-packages/ctypescrypto/cms.py", line 24, in <module>
    raise OSError("libcrypto lacks CMS functionality. Try using different libcrypto")
OSError: libcrypto lacks CMS functionality. Try using different libcrypto

I'm using Python 3.7.3 and ctypescrypto 0.5 under OpenSuse Tumbleweed.
So is this a known error or should the code be updated somehow?

Create "opendrop" package for pip installation

Currently the command pip3 install opendrop shows that the package is not registered in the PIP repositories yet, therefore it is easy for someone malicious to claim the package and serve arbitrary code with it.

I suggest the maintainers of this project register it with PIP so it can be installed with above-mentioned command.

Encoder jpeg2k not available

Installed opendrop using pip installation method.

<Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/PIL/ImageFile.py", line 498, in _save
    fh = fp.fileno()
io.UnsupportedOperation: fileno

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 476, in _getencoder
    encoder = getattr(core, encoder_name + "_encoder")
AttributeError: module 'PIL._imaging' has no attribute 'jpeg2k_encoder'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/opendrop", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/opendrop/cli.py", line
36, in main
    AirDropCli(sys.argv[1:])
  File "/usr/local/lib/python3.7/dist-packages/opendrop/cli.py", line
87, in __init__
    self.send()
  File "/usr/local/lib/python3.7/dist-packages/opendrop/cli.py", line
166, in send
    if not self.client.send_ask(self.file):
  File "/usr/local/lib/python3.7/dist-packages/opendrop/client.py",
line 151, in send_ask
    icon = AirDropUtil.generate_file_icon(f.name)
  File "/usr/local/lib/python3.7/dist-packages/opendrop/util.py", line
175, in generate_file_icon
    im.save(imgByteArr, format='JPEG2000')
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2084, in save
    save_handler(self, fp, filename)
  File "/usr/lib/python3/dist-packages/PIL/Jpeg2KImagePlugin.py", line
294, in _save
    ImageFile._save(im, fp, [("jpeg2k", (0, 0) + im.size, 0, kind)])
  File "/usr/lib/python3/dist-packages/PIL/ImageFile.py", line 503, in _save
    e = Image._getencoder(im.mode, e, a, im.encoderconfig)
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 479, in _getencoder
    raise IOError("encoder %s not available" % encoder_name)
OSError: encoder jpeg2k not available

I've tried everything that I could think of to install jpeg2k (too many things to list, mostly making sure that all of the openjpeg stuff was installed)

RuntimeError: Interface awdl0 does not have an IPv6 address. Make sure that `owl` is running.

opendrop receive

Traceback (most recent call last):
File "/home/santiago/.local/bin/opendrop", line 8, in
sys.exit(main())
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/cli.py", line 36, in main
AirDropCli(sys.argv[1:])
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/cli.py", line 75, in init
self.receive()
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/cli.py", line 156, in receive
self.server = AirDropServer(self.config)
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/server.py", line 54, in init
'Make sure that owl is running.'.format(self.config.interface))
RuntimeError: Interface awdl0 does not have an IPv6 address. Make sure that owl is running.

opendrop find
Looking for receivers. Press enter to stop ...
Traceback (most recent call last):
File "/home/santiago/.local/bin/opendrop", line 8, in
sys.exit(main())
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/cli.py", line 36, in main
AirDropCli(sys.argv[1:])
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/cli.py", line 77, in init
self.find()
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/cli.py", line 96, in find
self.browser = AirDropBrowser(self.config)
File "/home/santiago/.local/lib/python3.6/site-packages/opendrop/client.py", line 44, in init
'Make sure that owl is running.'.format(config.interface))
RuntimeError: Interface awdl0 does not have an IPv6 address. Make sure that owl is running.

[question]ipadOS no detected

  1. mbp 2019 13.3' ,macos catalina 10.15.4, ipad 2018 ipadOS 13.3.1;
    2 mbp has installed opendrop, see picture below,i hava set my ipad [discoverable]
    however ,It is set to be discoverable by everyone but it still won't be detected.
    IMG_68F0AC9A6E5A-1
    on mbp, i exec"opendrop find ", only get "Found index 0 ID d3a72bda7ed7 name chenhuiying的MacBook Pro", see below.
    seeblow
    so i want my ipad to be found by opendrop. how could i do ?
    And more often than not, I just get"Looking for receivers. Press enter to stop ...", Nothing,see below
    nothing

Building on windows

Hi,
I am trying to install this on windows but I cannot get it working. I managed to get the libraries and such but I might be missing something here.

C:\Users\hamba\Documents\Repos\opendrop>python opendrop
Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "opendrop\__main__.py", line 20, in <module>
    from opendrop import cli
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\opendrop-0.10-py3.6.egg\opendrop\cli.py", line 30, in <module>
    from .client import AirDropBrowser, AirDropClient
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\opendrop-0.10-py3.6.egg\opendrop\client.py", line 26, in <module>
    import libarchive
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\libarchive\__init__.py", line 1, in <module>
    from .entry import ArchiveEntry
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\libarchive\entry.py", line 6, in <module>
    from . import ffi
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\libarchive\ffi.py", line 27, in <module>
    libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\ctypes\__init__.py", line 426, in LoadLibrary
    return self._dlltype(name)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\ctypes\__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
TypeError: LoadLibrary() argument 1 must be str, not None

Can't discover any devices

I can't discover any devices via the opendrop find command. It successfully starts looking for receivers but then just sits there and can't discover any devices. OWL seems to be working fine, and with wireshark (not wireshark-awdl) I can see packets being sent between other devices.

Is this a problem on my end or a bug/limitation of OpenDrop?
Cheers.

DistributionNotFound

On manjaro I'm getting the following error after installing opendrop-git from aur.

pkg_resources.DistributionNotFound: The 'ipaddress' distribution was not found and is required by ifaddr

After some googling I can't find where this distribution is supposed to come from. Can you point me to the right direction?

Cant find my iphone

This project looks awesome, but sadly its not working for me.
I installed owl und opendrop, then i set the wifi adapter in monitor mode

$ sudo ifconfig wlx74da38ea5fe5 down
$ sudo iwconfig wlx74da38ea5fe5 mode monitor

After that i started owl

$ sudo owl -i wlx74da38ea5fe5 -N

Anything looks like its working, i get the following output from owl

13:24:08 INFO : WLAN device: wlx74da38ea5fe5 (addr 74:da:38:ea:5f:e5)
13:24:08 INFO : Host device: awdl0

Also the output from opendrop (opendrop find) has no exceptions/error messages

Looking for receivers. Press enter to stop ...

But i never find my iphone (Iphone 11 pro), the same thing is while receive (my iphone dont find my pc).

I hope you can help me out :-)

OpenDrop failing after installation

After following the setup instructions in the README . Opendrop fails to run with the following error:

MacBook-Pro-55:open source seniorconsultant$ opendrop read format "lha" is not supported read format "7zip" is not supported read format "warc" is not supported read format "cab" is not supported read format "rar" is not supported read filter "bzip2" is not supported read filter "none" is not supported read filter "gzip" is not supported read filter "compress" is not supported read filter "lzop" is not supported read filter "lzma" is not supported read filter "xz" is not supported read filter "rpm" is not supported read filter "all" is not supported read filter "uu" is not supported read filter "lzip" is not supported read filter "grzip" is not supported read filter "lrzip" is not supported read filter "lz4" is not supported Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.7/bin/opendrop", line 11, in <module> load_entry_point('opendrop==0.10.1', 'console_scripts', 'opendrop')() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2793, in load_entry_point return ep.load() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2411, in load return self.resolve() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2417, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/opendrop/cli.py", line 30, in <module> from .client import AirDropBrowser, AirDropClient File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/opendrop/client.py", line 26, in <module> import libarchive File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/__init__.py", line 1, in <module> from .entry import ArchiveEntry File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/entry.py", line 6, in <module> from . import ffi File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/ffi.py", line 184, in <module> c_int, check_int) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/ffi.py", line 95, in ffi f = getattr(libarchive, 'archive_'+name) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py", line 369, in __getattr__ func = self.__getitem__(name) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py", line 374, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) AttributeError: dlsym(0x7fe5fd53d940, archive_read_open_filename_w): symbol not found MacBook-Pro-55:open source seniorconsultant$ which opendrop /Library/Frameworks/Python.framework/Versions/3.7/bin/opendrop MacBook-Pro-55:open source seniorconsultant$ rm -rf /Library/Frameworks/Python.framework/Versions/3.7/bin/opendrop MacBook-Pro-55:open source seniorconsultant$ which opendrop MacBook-Pro-55:open source seniorconsultant$ pip3 install ./opendrop Processing ./opendrop Requirement already satisfied: requests in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (2.21.0) Requirement already satisfied: fleep in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (1.0.1) Requirement already satisfied: ifaddr in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (0.1.6) Requirement already satisfied: Pillow in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (6.1.0) Requirement already satisfied: requests_toolbelt in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (0.9.1) Requirement already satisfied: ctypescrypto in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (0.5) Requirement already satisfied: libarchive-c in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from opendrop==0.10.1) (2.8) Requirement already satisfied: urllib3<1.25,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from requests->opendrop==0.10.1) (1.24.2) Requirement already satisfied: idna<2.9,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from requests->opendrop==0.10.1) (2.8) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from requests->opendrop==0.10.1) (3.0.4) Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from requests->opendrop==0.10.1) (2019.3.9) Installing collected packages: opendrop Found existing installation: opendrop 0.10.1 Uninstalling opendrop-0.10.1: Successfully uninstalled opendrop-0.10.1 Running setup.py install for opendrop ... done Successfully installed opendrop-0.10.1 MacBook-Pro-55:open source seniorconsultant$ opendrop read format "warc" is not supported read format "lha" is not supported read format "cab" is not supported read format "rar" is not supported read format "7zip" is not supported read filter "xz" is not supported read filter "compress" is not supported read filter "lzip" is not supported read filter "rpm" is not supported read filter "uu" is not supported read filter "all" is not supported read filter "bzip2" is not supported read filter "gzip" is not supported read filter "grzip" is not supported read filter "lzop" is not supported read filter "none" is not supported read filter "lrzip" is not supported read filter "lzma" is not supported read filter "lz4" is not supported Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.7/bin/opendrop", line 11, in <module> load_entry_point('opendrop==0.10.1', 'console_scripts', 'opendrop')() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2793, in load_entry_point return ep.load() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2411, in load return self.resolve() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2417, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/opendrop/cli.py", line 30, in <module> from .client import AirDropBrowser, AirDropClient File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/opendrop/client.py", line 26, in <module> import libarchive File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/__init__.py", line 1, in <module> from .entry import ArchiveEntry File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/entry.py", line 6, in <module> from . import ffi File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/ffi.py", line 184, in <module> c_int, check_int) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/libarchive/ffi.py", line 95, in ffi f = getattr(libarchive, 'archive_'+name) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py", line 369, in __getattr__ func = self.__getitem__(name) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ctypes/__init__.py", line 374, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) AttributeError: dlsym(0x7f810a401140, archive_read_open_filename_w): symbol not found

Triggering AWDL

Triggering macOS/iOS receivers via Bluetooth Low Energy. Apple devices start their AWDL interface and AirDrop server only after receiving a custom advertisement via Bluetooth LE (see USENIX paper for details). This means, that Apple AirDrop receivers may not be discovered even if they are discoverable by everyone.

How do you send this custom advertisement?
I know how to receive it, and how to craft one, but EVERY SINGLE BLE api/wrapper seems to expect you're sending an ibeacon or eddystone and refuses to do otherwise.

Share password via opendrop

Hello, it is possible to share a WLAN password via AirDrop since couple of last iOS versions. Could it be also done with this library?

is it still working?

Hi, I'm trying to run the opendrop on the my Ubuntu machine 18.04.

I'm using the last owl and opendrop, and airmon-ng to switch the WiFi interface to monitor mode,
for the wifi cards I tried my build-in card from intel and external alfa wifi catds with realtek driver.

I followed this blog https://owlink.org/2019/05/16/howto-use-airdrop-on-raspberry-pi-3.html
and everything install and worked fine.

but "opendrop find" dose not find any devices running airdrop (iPhone IOS 12.3.1)
on the owl shell I can watch some mac address when the phone try to look for airdrop destination but without names.

I tried to change channels on owl but it did not work.
even tried to set the "opendrop receive" and I can not find it from the iphone airdrop.

I'm trying to run it now on RPI Zero but I do not think it will make a difference.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.