Opendrop es una herramienta de línea de comandos que permite compartir archivos entre dispositivos directamente a través de Wi-Fi. Su característica única es que es compatible con el protocolo con Apple Airdrop, lo que permite compartir archivos con dispositivos Apple que ejecutan iOS y macOS. Actualmente (y probablemente también en el futuro previsible), Opendrop solo admite el envío a dispositivos Apple que son descubiertos por todos , ya que el modo de contactos predeterminado solo requiere certificados firmados por Apple. Admitimos dispositivos solo contactos mediante el uso de credenciales de AirDrop extraídas (claves y certificados) de MacOS a través de nuestro extractor de llavero.
Opendrop es un software experimental y es el resultado de los esfuerzos de ingeniería inversa del proyecto Open Wireless Link. Por lo tanto, no admite todas las características de AirDrop o podría ser incompatible con futuras versiones de AirDrop. Opendrop no está afiliado o respaldado por Apple Inc. Use este código bajo su propio riesgo.
Para lograr la compatibilidad con Apple AirDrop, Opendrop requiere la plataforma de destino para admitir una capa de enlace Wi-Fi específica. Además, requiere Python> = 3.6, así como varias bibliotecas.
Apple Wireless Direct Link. A medida que AirDrop se ejecuta exclusivamente sobre Apple Wireless Direct Link (AWDL), Opendrop solo es compatible con macOS o en sistemas Linux que ejecutan una reimplementación abierta de AWDL como OWL.
Bibliotecas. Opendrop se basa en una versión actual de Libarchive. MacOS se envía con una versión bastante antigua, por lo que deberá instalar una versión más nueva, por ejemplo, a través de HomeBrew:
brew install libarchive
Opendrop establece automáticamente DYLD_LIBRARY_PATH
para buscar la versión Homebrew. Es posible que deba actualizar la variable usted mismo si instala las bibliotecas de manera diferente.
Las distribuciones de Linux deberían enviarse con versiones más actualizadas, por lo que esto no será necesario.
La instalación de la versión del paquete Python es sencilla utilizando pip3
:
pip3 install opendrop
También puede instalar la versión de desarrollo actual clonando primero este repositorio y luego la instaló a través de pip3
:
git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop
Explicamos brevemente cómo enviar y recibir archivos usando opendrop
. Para ver todas las opciones de línea de comando, ejecute opendrop -h
.
Enviar un archivo es típicamente un procedimiento de dos pasos. Primero descubre dispositivos en proximidad utilizando el comando find
. Detén el proceso una vez que haya encontrado el receptor.
$ 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
Luego puede send
un archivo (o enlace, ver a continuación) usando
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
En lugar del index
, también puede usar ID
o name
. Opendrop intentará interpretar la entrada en el índice (1) index
, (2) ID
y (3) name
y fallar si no se encontró coincidencia.
Enviar un enlace web. Desde V0.13, Opendrop admite el envío de enlaces web, es decir, URL, para que recibir dispositivos Apple abra inmediatamente su navegador al aceptar. (Tenga en cuenta que los receptores Opendrop solo solo admiten recibir archivos regulares).
$ opendrop send -r 0 -f https://owlink.org --url
Recibir es mucho más fácil. Simplemente use el comando receive
. Opendrop aceptará todos los archivos entrantes automáticamente y pondrá archivos recibidos en el directorio actual.
$ opendrop receive
Opendrop es el resultado de un proyecto de investigación y, por lo tanto, tiene varias limitaciones (lista no exhaustiva a continuación). No tengo la capacidad de trabajar en ellos yo mismo, pero estoy feliz de brindar asistencia si alguien más quiere asumirlos.
Activación de receptores de macOS/iOS a través de Bluetooth baja energía. Los dispositivos Apple comienzan su interfaz AWDL y su servidor AirDrop solo después de recibir un anuncio personalizado a través de Bluetooth LE (consulte el documento de Usenix para más detalles). Esto significa que los receptores de Apple Airdrop pueden no ser descubiertos, incluso si todos son descubiertos por todos .
Estado de autenticación y conexión del remitente/receptor. Actualmente, no hay autenticación pares como en AirDrop de Apple, en particular, (1) Opendrop no verifica que el certificado TLS esté firmado por la raíz de Apple y (2) que el registro de validación de ID de Apple sea correcto (ver el documento de Usenix para obtener más detalles) . Además, Opendrop acepta automáticamente cualquier archivo que reciba debido a un estado de conexión faltante.
Enviar múltiples archivos. Apple AirDrop admite el envío de múltiples archivos a la vez, Opendrop no (requeriría agregar más archivos al archivo, modificar la solicitud HTTP /Ask, etc.).
Opendrop tiene licencia bajo la Licencia Pública General de GNU v3.0 .