Trabajando en la construcción de una plataforma de sincronización de LAN similar durante casi un mes, probablemente pueda compartir algunas ideas ya que he revisado toda la información disponible públicamente sobre él [y sin saberlo había imitado su arquitectura de LAN, incluso antes de leerlo].
Paso 1: descubre otros clientes de Dropbox en LAN
- Dropbox envía una transmisión a través de su LAN cada pocos segundos. Por ejemplo, si miro una captura de paquetes para mi LAN, veo “[IP de origen] 255.255.255.255 DB-LSP-Dropbox LAN Sync Discovery Protocol” cada 30 segundos (eso es MUCHOS paquetes sobre su LAN para incluso 5 clientes) .
- Cada vez que un cliente de Dropbox se inicia en un sistema, comienza la transmisión UDP , con el nombre de servicio “Dropbox LAN Sync Discovery Protocol”, para que sea reconocible para todos los pares de Dropbox disponibles en LAN y captura paquetes con el mismo nombre de servicio para identificar todos compañeros
Nota : Los datos disponibles públicamente y los experimentos realizados por expertos en seguridad indican que Dropbox usó el puerto fijo 17500 ( contrario al puerto disponible aleatoriamente como lo usan muchos softwares para UDP) y 17500 para TCP.
- Mi oficina ha emitido una circular sobre las políticas de Internet. Según esto, nadie puede usar Facebook ni descargar películas. Estamos teniendo una conexión LAN. ¿Cómo puedo evitarlos?
- Cómo conectar dos sistemas en una LAN
- Usando Phaser.js con Socket.IO y Cocoon.js / Phonegap, ¿cuál es la forma más sencilla de implementar el modo multijugador local multiplataforma?
- Cómo transferir un archivo de una computadora portátil Linux a otra Linux a través de un cable LAN
- ¿Puede un puerto LAN tener dos direcciones IP diferentes funcionando al mismo tiempo? (como 192.168.1.1 y 172.20.20.20)
Paso 2: Identificar clientes autenticados (una suposición basada en datos y experimentos disponibles públicamente)
- El cliente actual utiliza una base de datos SQLite encriptada (con el valor predeterminado / clave de licencia …) y el DPAPI de Windows para almacenar información confidencial. Una implementación personalizada pero robusta para almacenar datos confidenciales también está disponible para MAC. Desde una perspectiva de red, las actualizaciones automáticas de los clientes se firman y utilizan una lista codificada de CA raíz para establecer las comunicaciones SSL .
- Los clientes identificados se comunican entre sí a través de SSL Sockets (TCP) y comparten datos entre ellos, que luego se autentican por los servidores de Dropbox para identificar cómo se conecta un par con el otro par (Al identificar datos compartidos entre 2 pares, usando carpetas compartidas, Sumas de comprobación SHA-256 , etc.)
Paso 3: recuperar archivos (ESPECULACIÓN)
- Cuando el cliente se conecta al servidor de Dropbox, solicita nuevas operaciones de archivo (Agregar / Modificar / Eliminar) y la información transmitida se presenta en forma de Nombre de archivo, tamaño, Sha-256 Hash [algoritmo Rolling Cheksum?] (Del todo archivo y partes, se dividen en partes de 4 MB para transferir a través de WAN), etc.
- Luego, los archivos se consultan sobre la información disponible de los pares (archivos disponibles con pares y accesibles para usted) y se descargan en consecuencia (desde los servidores o pares de Dropbox).
- La operación de transferencia de archivos se realiza a través de un flujo de bytes que permite reanudar las transferencias iniciando la transferencia de archivos desde +1 byte hasta que el cliente la haya recibido.
Espero que esto ayude.
Fuente (s): ASFWS – Un análisis crítico de la seguridad del software de Dropbox