OpenDrop : Une implémentation open source d'AirDrop en Python
OpenDrop est un outil en ligne de commande Python qui implémente le protocole Apple AirDrop, permettant le partage de fichiers avec des appareils iOS et macOS via Wi-Fi.
Qu'est-ce qu'OpenDrop ?
OpenDrop est un outil open source en ligne de commande qui implémente le protocole Apple AirDrop, vous permettant de partager des fichiers directement via Wi-Fi avec des appareils Apple fonctionnant sous iOS et macOS. Développé par le Seemoo Lab de l'Université technique de Darmstadt, il est le fruit d'une rétro-ingénierie approfondie du protocole propriétaire AirDrop d'Apple.
Pourquoi OpenDrop est important
AirDrop est une fonctionnalité pratique pour les utilisateurs Apple, mais elle est verrouillée dans l'écosystème Apple. OpenDrop brise ce mur en fournissant une implémentation multiplateforme capable d'envoyer et de recevoir des fichiers depuis des appareils Apple. Cela est particulièrement utile pour les développeurs, les chercheurs et toute personne ayant besoin de transférer des fichiers entre des systèmes non Apple et Apple sans recourir à des services cloud ou à des applications tierces.
Fonctionnalités clés
- Compatibilité de protocole : OpenDrop est compatible avec le protocole Apple AirDrop, ce qui signifie qu'il peut communiquer directement avec les appareils Apple.
- Interface en ligne de commande : Simple et scriptable, parfait pour l'automatisation et l'intégration dans des flux de travail.
- Partage de fichiers et d'URL : Prend en charge l'envoi de fichiers et de liens web (URL) vers des appareils Apple.
- Découverte de récepteurs : Peut découvrir les appareils Apple à proximité qui sont réglés sur le mode de découvrabilité "tout le monde".
- Acceptation automatique des fichiers : Lors de la réception, OpenDrop accepte automatiquement tous les fichiers entrants et les enregistre dans le répertoire courant.
Comment ça fonctionne
OpenDrop fonctionne via Apple Wireless Direct Link (AWDL), une couche de liaison Wi-Fi propriétaire utilisée par les appareils Apple pour la communication peer-to-peer. Cela signifie qu'il ne fonctionne actuellement que sur macOS ou Linux avec une réimplémentation open source d'AWDL, comme OWL.
Installation
Installer OpenDrop est simple via pip :
pip3 install opendrop
Pour la dernière version de développement, clonez le dépôt et installez :
git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop
Envoyer un fichier
- Découvrir les récepteurs : Utilisez la commande
findpour lister les appareils Apple à proximité.
$ opendrop find
Recherche de récepteurs. Appuyez sur Ctrl+C pour arrêter ...
Trouvé index 0 ID eccb2f2dcfe7 nom iPhone de John
Trouvé index 1 ID e63138ac6ba8 nom MacBook Pro de Jane
- Envoyer un fichier : Utilisez la commande
sendavec l'index, l'ID ou le nom du récepteur.
$ opendrop send -r 0 -f /chemin/vers/un/fichier
Demande d'acceptation au récepteur ...
Récepteur accepté
Téléchargement du fichier ...
Téléchargement réussi
Envoyer une URL
Depuis la v0.13, OpenDrop peut envoyer des liens web. L'appareil Apple récepteur ouvrira immédiatement l'URL dans son navigateur après acceptation.
$ opendrop send -r 0 -f https://owlink.org --url
Recevoir des fichiers
Recevoir est encore plus simple. Exécutez simplement la commande receive, et OpenDrop acceptera automatiquement tous les fichiers entrants, les enregistrant dans le répertoire courant.
$ opendrop receive
Détails techniques
Prérequis
- Python : >= 3.6
- AWDL : macOS ou Linux avec OWL
- libarchive : Une version récente est requise. Sur macOS, installez via Homebrew :
brew install libarchive
OpenDrop définit automatiquement DYLD_LIBRARY_PATH pour utiliser la version Homebrew. Les distributions Linux sont généralement livrées avec des versions à jour.
Limitations (et opportunités de recherche)
OpenDrop est un logiciel de recherche expérimental, il a donc certaines limitations :
- Déclenchement Bluetooth LE : Les appareils Apple démarrent leur interface AWDL uniquement après avoir reçu une publicité Bluetooth LE personnalisée. Cela signifie qu'OpenDrop peut ne pas découvrir les récepteurs qui ne font pas activement de publicité.
- Pas d'authentification pair : OpenDrop ne vérifie pas les certificats TLS signés par la racine d'Apple ni ne valide les enregistrements Apple ID. Il accepte automatiquement tous les fichiers.
- Envoi de fichier unique : Contrairement à AirDrop d'Apple, OpenDrop ne prend pas en charge l'envoi de plusieurs fichiers à la fois.
- Mode contacts uniquement : OpenDrop fonctionne uniquement avec les appareils réglés sur la découvrabilité "tout le monde". Le mode contacts uniquement nécessite des informations d'identification Apple extraites de macOS.
Contexte de recherche
OpenDrop fait partie du projet Open Wireless Link, qui vise à comprendre et documenter les protocoles sans fil propriétaires d'Apple. L'équipe a publié plusieurs articles académiques :
- PrivateDrop : Un schéma d'authentification préservant la vie privée pour AirDrop (USENIX Security '21)
- A Billion Open Interfaces : Analyse des attaques sur iOS et macOS via AWDL (USENIX Security '19)
Conclusion
OpenDrop est un outil puissant pour les développeurs et les chercheurs qui ont besoin d'interagir avec l'écosystème Apple depuis des plateformes non Apple. Bien qu'il ait des limitations en raison de sa nature de recherche, il fournit une base solide pour comprendre et étendre les fonctionnalités d'AirDrop. Que vous automatisiez des transferts de fichiers, meniez des recherches en sécurité, ou souhaitiez simplement envoyer des fichiers de Linux vers un iPhone, OpenDrop mérite d'être exploré.
Pour plus d'informations, visitez le dépôt GitHub.
Source
seemoo-lab/opendrop : Une implémentation open source d'AirDrop en Python