OpenDrop est un outil de ligne de commande qui permet de partager des fichiers entre les appareils directement via Wi-Fi. Sa caractéristique unique est qu'il est compatible avec le protocole avec Apple Airdrop qui permet de partager des fichiers avec des appareils Apple exécutant iOS et MacOS. Actuellement (et probablement aussi dans un avenir prévisible), OpenDrop prend uniquement en charge l'envoi aux appareils Apple qui sont découvrables par tout le monde , car le mode Contacts par défaut ne nécessite des certificats signés par Apple. Nous prenons en charge les appareils de contacts uniquement en utilisant des informations d'identification AirDrop extraites (clés et certificats) de MacOS via notre extracteur de tractures.
OpenDrop est un logiciel expérimental et est le résultat des efforts d'ingénierie inverse du projet de liaison sans fil ouvert. Par conséquent, il ne prend pas en charge toutes les caractéristiques de AirDrop ou pourrait être incompatible avec les futures versions AirDrop. OpenDrop n'est pas affilié ou approuvé par Apple Inc. utiliser ce code à vos propres risques.
Pour atteindre la compatibilité avec Apple Airdrop, OpenDrop nécessite la plate-forme cible pour prendre en charge une couche de liaison Wi-Fi spécifique. De plus, il nécessite Python> = 3,6 ainsi que plusieurs bibliothèques.
Lien direct sans fil Apple. Comme AirDrop s'exécute exclusivement sur Apple Wireless Direct Link (AWDL), OpenDrop n'est pris en charge que sur MacOS ou sur les systèmes Linux exécutant une réimplémentation ouverte de AWDL tel que OWL.
Bibliothèques. OpenDrop s'appuie sur une version actuelle de Libarchive. MacOS est expédié avec une version plutôt ancienne, vous devrez donc installer une version plus récente, par exemple, via Homebrew:
brew install libarchive
OpenDrop définit automatiquement DYLD_LIBRARY_PATH
pour rechercher la version Homebrew. Vous devrez peut-être mettre à jour la variable vous-même si vous installez les bibliothèques différemment.
Les distributions Linux doivent être expédiées avec des versions plus à jour, donc cela ne sera pas nécessaire.
L'installation de la version du package Python est simple à l'aide de pip3
:
pip3 install opendrop
Vous pouvez également installer la version de développement actuelle en clonage d'abord ce référentiel, puis en l'installant via pip3
:
git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop
Nous expliquons brièvement comment envoyer et recevoir des fichiers à l'aide opendrop
. Pour voir toutes les options de ligne de commande, exécutez opendrop -h
.
L'envoi d'un fichier est généralement une procédure en deux étapes. Vous découvrez d'abord des appareils à proximité à l'aide de la commande find
. Arrêtez le processus une fois que vous avez trouvé le récepteur.
$ 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
Vous pouvez ensuite send
un fichier (ou un lien, voir ci-dessous) en utilisant
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
Au lieu de l' index
, vous pouvez également utiliser ID
ou name
. OpenDrop essaiera d'interpréter l'entrée dans l' index
de l'ordre (1), (2) ID
et (3) name
et échec si aucune correspondance n'a été trouvée.
Envoi d'un lien Web. Depuis V0.13, OpenDrop prend en charge l'envoi de liens Web, c'est-à-dire des URL, afin que la réception des appareils Apple ouvrira immédiatement leur navigateur à accepter. (Notez que les récepteurs d'OpenDrop ne prennent toujours en charge que la réception de fichiers réguliers.)
$ opendrop send -r 0 -f https://owlink.org --url
La réception est beaucoup plus facile. Utilisez simplement la commande receive
. OpenDrop acceptera automatiquement tous les fichiers entrants et mettra les fichiers reçus dans le répertoire actuel.
$ opendrop receive
OpenDrop est le résultat d'un projet de recherche et, par conséquent, a plusieurs limites (liste non exhaustive ci-dessous). Je n'ai pas la capacité de travailler sur eux moi-même, mais je suis heureux de fournir une assistance si quelqu'un d'autre veut les affronter.
Déclencher des récepteurs macOS / iOS via Bluetooth basse énergie. Les appareils Apple démarrent leur interface AWDL et son serveur Airdrop uniquement après avoir reçu une publicité personnalisée via Bluetooth LE (voir le papier Usenix pour plus de détails). Cela signifie que les récepteurs d'Apple Airdrop peuvent ne pas être découverts même s'ils sont découvrables par tout le monde .
Authentification et état de connexion de l'expéditeur. Actuellement, il n'y a pas d'authentification par les pairs comme dans Airdrop d'Apple, en particulier, (1) OpenDrop ne vérifie pas que le certificat TLS est signé par la racine d'Apple et (2) que l'enregistrement de validation de l'ID Apple est correct (voir le papier Usenix pour plus de détails) . De plus, OpenDrop accepte automatiquement tout fichier qu'il reçoit en raison d'un état de connexion manquant.
Envoi de plusieurs fichiers. Apple Airdrop prend en charge l'envoi de plusieurs fichiers à la fois, OpenDrop ne nécessite pas (il faudrait ajouter plus de fichiers à l'archive, modifier la demande HTTP / ASK, etc.).
OpenDrop est autorisé en vertu de la licence publique générale GNU v3.0 .