Whatsapp web, la seguridad que manejan y el adiós de tu batería.

¿Por que se tiene que dejar el móvil con conexión a internet para poder usar whatsapp web?

Armé este pequeño documento para explicar el como funciona este sistema, que realmente se me hace ingenioso, no funcional, pero ingenioso.

La actualización en móvil de whatsapp incluye una nueva tabla, la cual se llama sesiones, en esta hay campos como:

browser_id (23 caracteres aprox)
secret (88 caracteres aprox)
token (44 caractere saprox)

Solo por mencionar algunos.

Estos datos son los que se mostrarán al entrar al apartado whatsapp web de nuestros móviles, al principio se piensa que solo es para tener un "control" propio de los dispositivos conectados, pero mas adelante explicare el funcionamiento un poco mas extenso de esto.

Al abrir el menú de whatsapp web, nos da para escanear un código qr, si analizamos este código, tenemos algo como esto:

bjqPtTTbnhUvq1FWyLZmMh1RhesUcGU8eJMG2aUnrps4z2Z80XBiUVguqJ2Cb9YUyQY2t32apwXpP2qn4QAWbHXsNQV7ik7CT2PZbsfNEU+2ThPFhjRTVS7act+7irrQIbPSCHon8GCFXzM/ADHeA==,pbKOZCwnvdlYLFF8bmQePMKtNL7IoiJf7PQdH9XawD8=,/abc7sigtAjidMiWNCUOTw==

El código se genera cada 10 segundos aproximadamente, y es una mezcla del timestamp actual con el id del navegador, y alguna otra cosa más (que debe ser code generado en aleatorio por WA), lo que nunca cambia al generar el código desde un mismo navegador es la última parte (,pbKOZCwnvdlYLFF8bmQePMKtNL7IoiJf7PQdH9XawD8=,/abc7sigtAjidMiWNCUOTw==), esa parte siempre se mantendrá igual, por lo que se puede deducir que es el id del navegador, o en la DB el browser_id.

Ahora vamos con una parte de como trabaja la aplicación (al menos en android).

Al escanear el código con la aplicación de WA, está programada para que mande una petición a los servidores de WA, es decir y como ejemplo, podría ser un WS como el siguiente:

https://whatsapp.com/?añadirdispositivo=si&id_dispositivo=52155XXXXXXXX&token=YYYYY&browser_id=ZZZZZZZ&secret=AAAAAAA&imei_dispositivo=BBBBB

Al momento de que se manda esa petición al servidor de WA, este busca el browser_id asociado y refresca el contenido en el navegador web, algo así como funciona youtube remote y algunas aplicaciones por el estilo.

Listo, ya tenemos asociado nuestro WAWeb con WAMovil, ya todo funciona de manera perfecta y buena, ahora vamos con la parte como se gestionan los mensajes desde la aplicación web.

Al mandar un mensaje en el servidor web, lo que se hace es que se manda a una DB de WA en donde se almacena temporalmente, en ese momento aún NO es entregado a su destinatario, después de que se mandó correctamente, el servidor de WA procesa el mensaje y lo envía a nuestro dispositivo móvil, para que después nuestro dispositivo móvil mande el mensaje nuevamente al servidor de WA y el servidor de WA se encargue de entregarlo a su destinatario.

¿Raro no?

Si, la verdad es raro, pero funcional, no digo que la mejor solución, pero a ellos les funciona.

¿Por que se hace ese embrollo en la comunicación del sistema?

Al plantear un navegador WEB, whatsapp tenía el inconveniente de la DB en los móviles, es decir, como se podrían mostrar los historiales de conversación que se tuvieran en web para después mostrarlos en móvil, WA no fue diseñada para ser una aplicación como FBMessenger (que hubieran podido tomar el ejemplo y la funcionalidad de ahí para hacer WAWeb), a lo que me refiero, es que fue una aplicación completamente nativa en los dispositivos, no es una aplicación que primero haya sido web y después sea facil portarla a móvil de forma hibrida.

Uno de las cosas buenas de esto es lo siguiente:

La seguridad.


WAWeb está en comunicación constante con nuestro dispositivo móvil, es decir, si nuestro dispositivo llega a borrar o limpiar la tabla de sesiones, WAWeb se cierra yq dice que no está asociado ya con nuestro dispositivo.

Está bien, así estamos seguros de que si dejan la sesión abierta en la casa de Juan Perez, podríamos "cerrarla" de forma remota.

Esto nos garantiza que aunque obtengan nuestro secret y token, la comunicación no pueda ser tan fácilmente suplantada por alguna otra entidad maliciosa :P, ya que faltaría el id del móvil, más el IMEI que se hace constante revisión, y puede que algunas otras cosas más (eso, por el momento, sólo lo saben los desarrolladores de WAWeb).

Una de las cosas malas, muy malas en este mismo punto mencionado arriba:

Tu batería.


Si estás usando WAWeb durante tus 8 horas godinescas en la oficina, olvídate de que puedas subsistir con lo que tienes de batería, ya que el navegador estará en constante comunicación con el dispositivo, y por lo tanto el dispositivo en ningún momento estará en modo de espera o "standby", aunque la pantalla esté apagada, el wifi seguirá funcionando o en su caso, los datos móviles.

Otra de las cosas que te "podría" afectar.

Tus datos.


Si usas WAWeb de la misma forma menciono arriba, y por alguna casualidad se te olvida activar el WiFi, entonces despidete de tus datos de una forma rápida.

Si, se que hay algunos planes con WA ilimitado y demás, pero hasta ahorita no estamos seguros de que el webservice del que se hace llamada para verificar todos los datos del dispositivo sea desde un dominio llamado whatsapp.com, puede ser por amazon, o algún otro servicio en la nube que sea capaz de soportar tantas, pero tantas conexiones activas por tanto tiempo, por lo que si la petición se hace desde otro servidor, tu operador no sabrá que es de whatsapp y hará el cobro de la debida factura.

Bueno, creo que ya me extendí mucho, hay algunas otras cosas que se pueden colocar aquí, pero quiero investigar un poco más sobre la aplicación, para que pueda poner algunos datos muy concretos, al principio me emocioné por la forma que hacia la conexión y por eso investigué esto, pero veo que si es un poco difícil suplantar la identidad con esta forma fea, pero funcional de hacer la comunicación.




Saludos!

Komtec1

Comentarios

Entradas populares de este blog

Integrar API de Google Maps, archivos kml, kmz y otras fumarolas :D

Musimetría - música generada de forma automática por computadora.

Solución [fix] a hamachi Logging in .. failed, busy