python - Implementando el protocolo AirDrop
wifi bonjour (1)
Estoy interesado en implementar AirDrop como cliente en un dispositivo como un iPad o una computadora con Windows. ¿Alguien puede indicarme la dirección correcta para implementar el protocolo AirDrop en Python o en C. Cualquier ayuda en esto sería muy apreciada? Gracias por adelantado.
Para el beneficio de usted o de cualquiera que intente realizar ingeniería inversa e implementar Airdrop, esto es lo que encontré y lo que deberá hacer para comenzar:
Hay dos pasos involucrados y se pueden hacer de forma independiente o en paralelo.
- Realice una ingeniería inversa en la forma en que se crea y nombra la red física WLAN ad-hoc
Para hacer esto, obtenga iStumbler desde aquí http://istumbler.net/ e intente ver si aparece una red ad-hoc adicional cuando se ejecuta airdrop. Lo he intentado brevemente y parece que hay una red 802.11b ad hoc sin cifrar, cuyo nombre comienza con una "H". (Pero podría estar equivocado, intente esto usted mismo). Intente encontrar el patrón utilizado por Airdrop para nombrar o identificar la red. Prueba con múltiples Mac para encontrar esto.
- Realiza ingeniería inversa de los protocolos.
Una vez que los clientes se hayan unido a la red WiFi, Airdrop detectará a otros clientes que usan Bonjour.
Primero, como se describe en http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/ , ejecute esto en su Terminal para que las cosas funcionen sin la red ad-hoc oculta:
los valores predeterminados escriben com.apple.NetworkBrowser BrowseAllInterfaces 1
Luego reinicie Finder.
Obtenga el navegador Bonjour desde aquí: tildesoft.com
Cuando inicie Airdrop, encontrará que su mac anuncia un servicio "_airdrop._tcp". También publica las distintas direcciones IP del host y del puerto (se crea una nueva cada vez que se abre Airdrop en Finder) en la que está escuchando su mac. También publica el nombre de la computadora, así como dos "ehash" y "phash" y una "clave" de dos teclas que tiene un valor de 1. Tendría que ver cómo se generan estos dos hashes y si son necesarios. . Probablemente lo sean. Intente publicar sus propios datos en una segunda computadora utilizando una de las bibliotecas de Bonjour disponibles y vea si aparecen en Airdrop (en Finder).
Descubrí que el servicio TCP expuesto por cada cliente está utilizando una conexión SSL. El certificado del servidor parece estar vinculado a su ID de Apple. Puedes encontrar el certificado en el llavero. El servidor también solicita un certificado de cliente. Probablemente sea el mismo certificado de ID de Apple de la otra computadora. Tendrás que experimentar con esto.
No sé qué protocolo se usa dentro de esa conexión SSL y no tengo acceso a una segunda Mac para investigar actualmente. Tendrá que MITM la conexión para averiguarlo (pruebe con Charles y Wireshark). En cualquier caso, se utilizará para transferir el icono del usuario, así como para negociar la transferencia y, posiblemente, también para mover los datos reales.
Creo que una implementación abierta de esto sería de gran beneficio, incluso si al final se limitaría a los usuarios con un ID de Apple, son gratuitos después de todo.
¡Buena suerte!