2012-05-21 24 views
17

Estoy interesado en implementar AirDrop como cliente en un dispositivo como un iPad o una computadora con Windows. ¿Alguien puede señalarme en la dirección correcta para implementar el protocolo AirDrop en Python o C. Cualquier ayuda sobre esto sería muy apreciada. Gracias por adelantado.Implementación del protocolo AirDrop

+0

Relacionado: http://stackoverflow.com/questions/5220136/how-the-new-mac-os-airdrop-works –

Respuesta

43

Para el beneficio de usted o cualquier persona que trate de realizar ingeniería inversa e implementar lanzamiento desde el aire, aquí es lo que he encontrado y lo que tendrá que hacer para empezar:

hay dos pasos involucrados y pueden hacerse de forma independiente o en paralelo.

  1. ingeniería inversa de la forma en que se creó y nombró

Para ello, obtener iStumbler de aquí http://istumbler.net/ y tratar de ver si una red ad-hoc adicional aparece la red ad-hoc WLAN física cuando se está ejecutando Airdrop. Lo he intentado brevemente y parece que hay una red 802.11b no encriptada y ad-hoc, 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. Intenta con múltiples Macs para encontrar esto.

  1. ingeniería inversa de los protocolos

vez que los clientes han unido a la red Wi-Fi, lanzamiento desde el aire detectará otros clientes mediante Bonjour.

En primer lugar, tal como se describe en http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/, ejecute esto en su terminal para que todo funcione sin la red oculta ad-hoc:

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1

A continuación, reinicie Buscador .

Consigue el navegador Bonjour desde aquí: tildesoft.com

Al iniciar lanzamiento desde el aire se encuentra que su Mac anuncia un servicio de "_airdrop._tcp". También publica las diversas direcciones IP del host y el puerto (se crea una nueva cada vez que se abre Airdrop en Finder) que su mac está escuchando. También publica el nombre de la Computadora así como dos claves "ehash" y "phash" y una clave "banderas" 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 Bonjour disponibles y fíjese si aparecen en Airdrop (en Finder).

He encontrado que el servicio TCP expuesto por cada cliente está utilizando una conexión SSL. El certificado del servidor parece estar vinculado a tu 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 identificación 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ás que MITMAR la conexión para averiguarlo (prueba con Charles y Wireshark). En cualquier caso, se usará 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 limitara a usuarios con una ID de Apple, son gratis después de todo.

¡Buena suerte!

+0

Muchas gracias. Buenos consejos para comenzar. Llegué tan lejos como monitorear con el navegador Bonjour pero renuncié después de eso. – petschekr

+0

Gracias por la útil respuesta, también estoy interesado en esto –

Cuestiones relacionadas