Enviar mensajes WhatsApp mediante PHP usando WhatsAPI (2 de 2)


WhatsApp  como  sabemos es un  servicio de mensajera para los teléfonos inteligentes que  sólo está disponible para smartphones por  ahora. Si desea utilizar otras herramientas o escribir aplicaciones web que envíen o reciban mensajes de WhatsApp (e.g. WhatsAPI), usted tiene que encontrar una manera de detectar la contraseña WhatsApp desde su poprio smartphone.

Hasta hace poco, esta contraseña era sólo un hash MD5 de tu IMEI (o dirección MAC), pero eso cambió cuando fue descubierto. Desde entonces, el servidor de WhatsApp asigna una contraseña a cada cuenta del dispositivo cuando registra por primera vez.

Este tutorial muestra cómo captar  la contraseña de su cuenta de WhatsApp usando el mitmproxy proxy SSL/TLS. Una vez que usted tiene esta contraseña, lo puede utilizar para comunicarse con los servidores de WhatsApp directamente o a través de un marco (esa es la primera parte ).

Una vez que usted ha adquirido su contraseña de la cuenta de WhatsApp , es relativamente fácil de enviar y recibir mensajes de WhatsApp mediante PHP. Utilizando el framework PHP-based WhatsAPI, un simple script notificador de WhatsApp que tiene sólo una docena de líneas de código.

Este pequeño tutorial muestra cómo usar las dos funciones muy básicas de WhatsAPI, es decir para enviar los mensajes salientes simples a cualquier número y a los nuevos mensajes entrantes desde su propia cuenta de WhatsApp ,mediante  PHP.

PARTE 2

1. Obtener su contraseña de WhatsApp

Esta pequeña demostración sólo funciona si usted ya ha obtenido su contraseña de WhatsApp. Si usted no tiene y no imaginas cómo hacerlo, consulte la primera parte de este tutorial.

2. WhatsAPI y enviar/recibir mensajes

Suponiendo que tiene a mano tu contraseña de WhatsApp, vamos a ver lo fácil que es el uso de WhatsAPI.

2.1. WhatsAPI descargar y probar scripts

Descargar WhatsAPI es realmente simplemente puesto que se encuentra alojada en Github. Simplemente cree un nuevo directorio y recuper WhatsAPI desde Github.

Shell
mkdir whatsapp
cd whatsapp
sudo apt-get install git
git clone https://github.com/venomous0x/WhatsAPI
1
2
3
4
mkdir whatsapp
cd whatsapp
sudo apt-get install git

Una vez que ha hecho esto, puedes revisar la actual estructura del proyecto. También hay un archivo llamado EXAMPLES.php que muestra algunos ejemplos más.

También el autor de este estudio , ha preparado unas pequeñas secuencias de comandos que puede utilizar como base para hacer sus propios scripts:

Para descargar  dos ejemplos mínimos, ejecute los siguientes comandos y editar el archivo whatsapp_whatsapi_config.php para configurar sus propias credenciales de usuario:

Shell
1
2
3
4
5
6

2.2. Enviar mensajes WhatsApp

Como sabe ,desde su cliente desde su  smartphone, puede enviar otro tipo de mensajes a través de WhatsApp: además de texto, puede enviar archivos de audio y video, ubicaciones y contactos. WhatsAPI puede hacer todas esas cosas en una sola línea de código.

Como muestra este simple script whatsapp_whatsapi_send.php , se demuestra cómoes de sencillo  enviar un mensaje de texto normal. El guión está destinado a ser llamado por la línea de comandos, pero puede utilizarse también el código en una aplicación web:

PHP
#!/usr/bin/php
<!–?phprequire_once('whatsapp_whatsapi_config.php');$destinationPhone = ‘495553333333’;$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
$w->Message($destinationPhone, $argv[1]);?>

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/php
<?php
require_once(‘whatsapp_whatsapi_config.php’);
$destinationPhone = ‘495553333333’;
$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
$w->Message($destinationPhone, $argv[1]);
?>

El guión incluye la configuración de tu nombre de usuario, contraseña y pantalla de WhatsApp. Es muy fácil de usar y bastante autoexplicativo: la clase WhatsProt es la única cosa que usted necesita. Simple conexión a los servidores de WhatsApp y LoginWithPassword a autenticarse. Después de eso, puede utilizar los siguientes métodos:

  • Mensaje ($a, $msg): de $to le enviará un mensaje de texto normal.
  • MessageImage ($a, $imageURI): envío de imágenes por URL o ruta de acceso local (jpg) a $to.
  • MessageVideo ($a, $videoURI): enviar videos por URL o ruta de acceso local (mp4) a $to.
  • MessageAudio ($a, $audioURI): Envíe audios por URL o ruta de acceso local (mp3) a $to.
  • Ubicación ($a, $lng, $lat): coordenadas GPS enviar a $to
  • vCard ($a, $vCardName, $vCard): enviar vCard a $to.
  • WaitForReceipt(): esperar a que los servidores de WhatsApp confirmar la entrega.

El pequeño script ante dicho obviamente sólo envía mensajes de texto sin formato. Se puede utilizar desde la línea de comandos como este:

./whatsapp_whatsapi_send.php “Warning: CPU temperature at 65°C”
1
./whatsapp_whatsapi_send.php “Warning: CPU temperature at 65°C”

El guión es particularmente útil como un notificador de WhatsApp, permitiéndole recibir notificaciones de sus servidores cada vez que quieras — por ejemplo, si la temperatura de la CPU se eleva por encima de un umbral determinado, la carga es demasiado alta para una cierta cantidad de tiempo o uno de sus guiones falló/tuvo éxito. Esto es particularmente interesante en combinación con un sistema de monitoreo de servicio como Nagios o Monit.

2.3. Recibir mensajes de WhatsApp

Para ser capaz de recibir mensajes de WhatsApp usando PHP, necesita escuchar para nuevos mensajes. De WhatsAPI PollMessages hace exactamente eso:lee los mensajes del zócalo del servidor de WhatsApp y los pone en una cola local para su procesamiento. El método se bloquea si no hay mensajes y espera para que el servidor enviar un mensaje indefinidamente — tal como lo hace cualquier otro servidor. Mediante GetMessages puedes tirar los mensajes de la cola y procesarlos en su aplicación.

Un guión mínimo se vería muy similar a del ejemplo de arriba, excepto que en lugar de llamar a Message(), tienes que llamar PollMessages() y GetMessages() en un bucle de servidor:

PHP
<!–?phprequire_once('whatsapp_whatsapi_config.php');$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);while (true) {
$w->PollMessages();
$msgs = $w->GetMessages();
// Do something with the messages …
}?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
require_once(‘whatsapp_whatsapi_config.php’);
$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
while (true) {
    $w->PollMessages();
    $msgs = $w->GetMessages();
    // Do something with the messages …
}
?>

Cada mensaje de WhatsApp tiene un conjunto de atributos estándar ($m -> _attributeHash) como de (número de remitente) o t (enviar timestamp). Además, dispone de diferentes tipos de nodos secundarios que contienen información adicional/opcional, dependiendo de qué tipo de mensaje es: un nodo secundario de notificar , por ejemplo, dice la conversación socio y que está en línea y sigue escribiendo y el nodo secundario cuerpo contiene el contenido del texto. Hay muchos más de ellos. Puedes ver por ti mismo llamando al print_r($msgs).

El siguiente fragmento de código muestra un extracto de un mensaje — se refieren a la salida de este ejemplo para ver más:

ProtocolNode Object
(
[_tag] => message
[_attributeHash] => Array
(
[from] => [email protected]
[id] => 1373204559-6
[type] => chat
[t] => 1373205620
)[_children] => Array
(

[2] => ProtocolNode Object
(
[_tag] => body

[_children] =>
[_data] => Hallo blog readers
)
)
[_data] =>
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ProtocolNode Object
(
    [_tag] => message
    [_attributeHash] => Array
        (
            [from] => [email protected]
            [id] => 1373204559-6
            [type] => chat
            [t] => 1373205620
        )
    [_children] => Array
        (
         …
            [2] => ProtocolNode Object
                (
                    [_tag] => body
                    …
                    [_children] =>
                    [_data] => Hallo blog readers
                )
        )
    [_data] =>
)

El ejemplo de servidor script whatsapp_whatsapi_listen.php extiende el fragmento de código anterior y procesa los mensajes como este: toma el tiempo (t) y el número de remitente (de) de $m -> _attributeHash y el nombre y _data del niño nodos. Cada mensaje no vacío se imprime en STDOUT, así:

Shell
./whatsapp_whatsapi_listen.php
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Hallo blog readers
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Everything I write is printed to STDOUT
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Exit
1
2
3
4
./whatsapp_whatsapi_listen.php
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Hallo blog readers
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Everything I write is printed to STDOUT
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Exit

Si el cuerpo del mensaje es “salir”, sale el guión.

Espero que este tutorial  de  Philipp C. Heckel   nos  haya ayudado un poco a comprender cómo funciona WhatsAPI.

 

Fuente aqui

Anuncios

Enviar mensajes WhatsApp mediante PHP usando WhatsAPI (1 de 2)


WhatsApp es un  servicio de mensajera SMS muy popular para los teléfonos inteligentes, pero lamentablemente sólo está disponible para smartphones por  ahora. Si desea utilizar otras herramientas o escribir aplicaciones web que envíen o reciban mensajes de WhatsApp (e.g. WhatsAPI), usted tiene que encontrar una manera de detectar la contraseña WhatsApp desde su poprio smartphone.

Hasta hace poco, esta contraseña era sólo un hash MD5 de tu IMEI (o dirección MAC), pero eso cambió cuando fue descubierto. Desde entonces, el servidor de WhatsApp asigna una contraseña a cada cuenta del dispositivo cuando registra por primera vez.

Este tutorial muestra cómo captar el WhatsApp contraseña de tu cuenta de WhatsApp usando el mitmproxy proxy SSL/TLS. Una vez que usted tiene esta contraseña, lo puede utilizar para comunicarse con los servidores de WhatsApp directamente o a través de un marco (esa es la primera parte ).

Una vez que usted ha adquirido su contraseña de la cuenta de WhatsApp , es relativamente fácil de enviar y recibir mensajes de WhatsApp mediante PHP. Utilizando el framework PHP-based WhatsAPI, un simple script notificador de WhatsApp que tiene sólo una docena de líneas de código.

Este pequeño tutorial muestra cómo usar las dos funciones muy básicas de WhatsAPI, es decir para enviar los mensajes salientes simples a cualquier número y a los nuevos mensajes entrantes desde su propia cuenta de WhatsApp ,mediante  PHP.

PRIMERA PARTE

1. Introducción

1.1. Nota: tutorial sólo Linux!

Por favor, tenga en cuenta que este es un tutorial para usuarios de Linux. Utiliza el TLS/SSL proxy mitmproxy para capturar la conexión segura entre el teléfono y los servidores de WhatsApp. Si es un usuario de Windows, consulte MissVenom, una herramienta hecha para husmear en contraseñas de WhatsApp. Todas las cosas que ha hecho con mitmproxy en este tutorial están básicamente lo que hace MissVenom para usuarios de Windows.

1.2. Cómo funciona

Este tutorial utiliza un ataque man-in-the-middle para interceptar la comunicación entre el teléfono y los servidores de WhatsApp. Para ello, tiene que redirigir todo el tráfico desde su teléfono a su máquina Linux ejecutando mitmproxy (cambio de puerta de enlace predeterminada del teléfono). Mitmproxy, una aplicación proxy man-in-the-middle mostrará toda HTTP (S) solicitud/respuesta su teléfono. Mientras se ejecuta mitmproxy, entonces debes borrar todos sus datos de usuario de WhatsApp desde su teléfono y configurarlo como si fueras un usuario nuevo, así que usted puede oler en la conversación de teléfono y los servidores de WhatsApp mientras se intercambia la contraseña de la cuenta de WhatsApp.

No se preocupe,suena más complicado de lo que es y su WhatsApp sólo verá lo mismo después. Aquí está un paso a paso:

  1. Configurar y ejecutar mitmproxy y preparar su teléfono (como se describe en este tutorial)
  2. Deja de WhatsApp y borrar los datos de usuario de WhatsApp
  3. Abra WhatsApp y re-configuración de tu cuenta
  4. Olfatear la contraseña mediante la supervisión del tráfico HTTP (S)

1.3. Más acerca de mitmproxy

El tutorial no incluye mucha información acerca de cómo configurar mitmproxy y lo que hace. Si quieres leer más vaya a a la página web mitmproxy y lea el manual.

2. Vamos a hacerlo!

Los siguientes pasos se corresponden con el corto paso a paso por encima de la versión de Android, pero debería funcionar igualmente en un iPhone.

2.1. Configurar y ejecutar mitmproxy y preparar su teléfono

Primero tiene que configurar mitmproxy como se describe en el capítulo 2 del howto de mitmproxy. En pocas palabras, este tutorial muestra cómo habilitar el reenvío de IP, configurar iptables para redirigir todo el tráfico del puerto 80 y 443 a 8080 así como instalar y ejecutar mitmproxy.

Observe por favor: Las explicaciones de este paso se mantienen al mínimo. Mira el post sobre mitmproxy para leer más.

Shell
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 443 -j REDIRECT –to-port 8080
apt-get install python-pyasn1 python-flask python-urwid
pip install mitmproxy
mitmproxy -T –host
1
2
3
4
5
6
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 443 -j REDIRECT –to-port 8080
apt-get install python-pyasn1 python-flask python-urwid
pip install mitmproxy
mitmproxy -T –host

En tu teléfono, necesita instalar el certificado de CA mitmproxy:

Y luego cambiar su entrada estándar:

Si ha hecho todo correctamente, usted debe ser capaz de ver todo el tráfico que envía su teléfono, así:

2.2. Cerrar WhatsApp y datos de usuario claro

WhatsApp sólo negocia una nueva contraseña en el servidor cuando primero se comunica con él. Si ya tienes WhatsApp y funcionando en tu iPhone o dispositivo Android, tiene que borrar los datos del usuario, así que WhatsApp puede negociar una nueva contraseña — que entonces usted puede oler usando mitmproxy.

Limpiar los datos de usuario existentes es muy simplemente. Simplemente vaya a ajustes, gestor de aplicaciones y desplácese hacia abajo para WhatsApp. En la pantalla de WhatsApp, haga clic en “Fuerza stop” y luego “Datos claros”.

Tenga en cuenta que según comentario de Adtc, WhatsApp no respalda los mensajes en sus servidores, pero en el dispositivo local en 4 cada noche.

2.3 Oler contraseña WhatsApp y restaurar datos de usuario

Después de limpiar todos sus datos de usuario de WhatsApp, es como que sólo compró un teléfono nuevo o reiniciar el sistema operativo del teléfono inteligente. La próxima vez que abra WhatsApp, tiene que conectarse a su cuenta de WhatsApp e intercambiar una nueva contraseña. Dado que ahora cuentan con un “sniffer” y puede capturar todas las de la comunicación de su teléfono, simplemente puedes leer la contraseña fuera del aire.

Asegúrese de que está ejecutando mitmproxy. Luego simplemente Abre WhatsApp y siga las pantallas:

2.4. Examinar los resultados de mitmproxy

Si todo salió según lo planeado, ahora debería ver un par de peticiones para el dominio v.whatsapp.net — particularmente algo como esto:

Mitmproxy debería mostrar una pantalla que parece muy similar a esto:

Usted puede encontrar la contraseña de tu cuenta de WhatsApp en el último de esos tres solicitudes (https://v.whatsapp.net:443/v2/registro?&#8230;). Utilice las teclas de flecha para navegar a esta entrada y presione la tecla de retorno . Luego golpeó TAB para cambiar a la descripción de ‘Respuesta’. Y ahí está — una respuesta JSON del servidor WhatsApp como respuesta a la solicitud de registro. Su nombre de usuario de WhatsApp se indica mediante la tecla de “iniciar sesión”, tu contraseña presionando la tecla “pw”.

Copie la contraseña y guardar la conversación con el servidor de WhatsApp mediante función save de mitmproxy: volver a la pantalla principal pulsando q, entonces golpeó s y escriba un nombre de archivo (e.g. /home/user/WhatsApp-password.mitmproxy). Más tarde puede cargar esta conversación con L.

2.5. Uso de la contraseña en secuencias de comandos

¿Para qué sirve la contraseña? Puede utilizar esta contraseña en scripts o aplicaciones web para enviar y recibir mensajes de WhatsApp. Uso del framework PHP WhatsAPI para recibir las notificaciones de mi servidor y HTPC. A partir de ahora, sólo lo uso para recibir alertas y advertencias de mi servicio de monitoreo (Nagios) y para obtener las notificaciones de mi podcast descargar secuencias de comandos.

Si está interesado en ver cómo funciona esto, por favor revise el post acerca de Cómo enviar y recibir mensajes de WhatsApp usando PHP.

3. Lo que no puedes hacer esto

Un comentario adicional a lo que este método no alcanza: Lamentablemente, el anterior descrito método no permite leer o modificar WhatsApp mensajes enviados desde su teléfono o recibidos por teléfono. La aplicación WhatsApp sólo realiza tareas administrativas sobre HTTPS (por ejemplo, cambios en el estado o el inicio de sesión). No lo hace, sin embargo, enviar o recibir mensajes sobre HTTPS.

En cambio, WhatsApp utiliza un derivado del protocolo Jabber/XMPP para comunicarse usando su propio protocolo propietario para intercambiar y cifrar mensajes. Eso hace husmeando en la conexión un poco más engorrosa, porque simplemente escuchando la toma no es suficiente. Mientras que los mensajes de WhatsApp individuales (“nodos”) pueden ser extraídos utilizando tcpdump (probar: tcpdump -X - vv -i eth0 'Puerto 5222'), los resultados son bastante decepcionantes al principio:

Outgoing WhatsApp message, captured using tcpdump
20:03:46.645026
IP (tos 0x0, ttl 50, id 42975, offset 0, flags [DF], proto TCP (6),
length 267)
50.22.231.44-static.reverse.softlayer.com.xmpp-client >
pbox.fritz.box.38975: Flags [P.], cksum 0xc9a7 (correct), seq 143:358,
ack 124, win 514, options [nop,nop,TS val 924424164 ecr 631853177],
length 215
0x0000: 4500 010b a7df 4000 3206 1406 3216 e72c E…[email protected]…2..,
0x0010: c0a8 b21c 1466 983f ae43 0976 fdc2 b59d …..f.?.C.v….
0x0020: 8018 0202 c9a7 0000 0101 080a 3719 97e4 …………7…
0x0030: 25a9 5079 8000 5e54 18d1 a86c 8e70 cf13 %.Py..^T…l.p..
0x0040: 290f 3a28 6add b8f6 f8e3 10d7 7bc5 f965 ).:(j…….{..e
0x0050: b672 fe25 fdb8 4730 ce3a dcbe b040 0df4 .r.%..G0.:…@..
0x0060: 84c4 581d d8df 996e 50d5 7f12 b6bf 24f7 ..X….nP…..$.
0x0070: 0d72 f46d 704d cb21 7a56 2032 bc1a e15c .r.mpM.!zV.2…
0x0080: 88db d754 e3a3 4aa7 e7dc a2ad d2f4 2841 …T..J…….(A
0x0090: f3b8 d52c 6180 005e 524b 1573 757d 2095 …,a..^RK.su}..
0x00a0: 5f64 28da 3518 1e37 1a07 0f41 265a 867c _d(.5..7…A&Z.|
0x00b0: f016 6e0e 114b 73f2 329f d1b2 b17b dc6f ..n..Ks.2….{.o
0x00c0: 1d16 0b62 194e 9d26 b5cd d5d1 321e b033 …b.N.&….2..3
0x00d0: ce40 8afe e6c6 79bf 4ada 5149 f29a be13 [email protected]….y.J.QI….
0x00e0: 291c 503d 4661 5cb5 047b 2dfe 41f9 5db9 ).P=Fa..{-.A.].
0x00f0: 6442 0eac 0a8d 8000 1222 6248 7dc9 b7a5 dB…….”bH}…
0x0100: 563d 4a9a cafe 42f8 011f ee V=J…B….
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20:03:46.645026 IP (tos 0x0, ttl 50, id 42975, offset 0, flags [DF], proto TCP (6), length 267)
    50.22.231.44-static.reverse.softlayer.com.xmpp-client > pbox.fritz.box.38975: Flags [P.], cksum 0xc9a7 (correct), seq 143:358, ack 124, win 514, options [nop,nop,TS val 924424164 ecr 631853177], length 215
    0x0000:  4500 010b a7df 4000 3206 1406 3216 e72c  E…[email protected]…2..,
    0x0010:  c0a8 b21c 1466 983f ae43 0976 fdc2 b59d  …..f.?.C.v….
    0x0020:  8018 0202 c9a7 0000 0101 080a 3719 97e4  …………7…
    0x0030:  25a9 5079 8000 5e54 18d1 a86c 8e70 cf13  %.Py..^T…l.p..
    0x0040:  290f 3a28 6add b8f6 f8e3 10d7 7bc5 f965  ).:(j…….{..e
    0x0050:  b672 fe25 fdb8 4730 ce3a dcbe b040 0df4  .r.%..G0.:…@..
    0x0060:  84c4 581d d8df 996e 50d5 7f12 b6bf 24f7  ..X….nP…..$.
    0x0070:  0d72 f46d 704d cb21 7a56 2032 bc1a e15c  .r.mpM.!zV.2…
    0x0080:  88db d754 e3a3 4aa7 e7dc a2ad d2f4 2841  …T..J…….(A
    0x0090:  f3b8 d52c 6180 005e 524b 1573 757d 2095  …,a..^RK.su}..
    0x00a0:  5f64 28da 3518 1e37 1a07 0f41 265a 867c  _d(.5..7…A&Z.|
    0x00b0:  f016 6e0e 114b 73f2 329f d1b2 b17b dc6f  ..n..Ks.2….{.o
    0x00c0:  1d16 0b62 194e 9d26 b5cd d5d1 321e b033  …b.N.&….2..3
    0x00d0:  ce40 8afe e6c6 79bf 4ada 5149 f29a be13  [email protected]….y.J.QI….
    0x00e0:  291c 503d 4661 5cb5 047b 2dfe 41f9 5db9  ).P=Fa..{-.A.].
    0x00f0:  6442 0eac 0a8d 8000 1222 6248 7dc9 b7a5  dB…….”bH}…
    0x0100:  563d 4a9a cafe 42f8 011f ee              V=J…B….

El mensaje real comienza justo después de la cabecera TCP, así que en este ejemplo después de 52 bytes (8000 5e54 18d 1 a86c 8e70…). Cada mensaje puede contener múltiples nodos, cada uno de los cuales tiene un nombre de etiqueta, y puede tener atributos y contenido (datos) — tanto como en XML. Sin embargo, dado que XML es conversador, WhatsApp codifica nombres de etiqueta un atributos con un diccionario, para que ciertos números corresponden a determinadas etiquetas. El fragmento de código anterior es una representación encriptada y codificada de las siguientes etiquetas XML:

XHTML
from=”[email protected]” id=”1375004720-28″ type=”chat” t=”1375034628″>
xmlns=”urn:xmpp:whatsapp” name=”Philipp Heckel”>
xmlns=”urn:xmpp:receipts”>
Hi there!
<offline></offline>
</message>
1
2
3
4
5
6
from=”[email protected]” id=”1375004720-28″ type=”chat” t=”1375034628″>
  xmlns=”urn:xmpp:whatsapp” name=”Philipp Heckel”>
  xmlns=”urn:xmpp:receipts”>
  Hi there!
  <offline></offline>
</message>

Nodos pueden ser codificados o sin cifrar: en una inicial “apretón de manos” con el servidor de WhatsApp, se autentica al cliente usando su nombre de usuario y contraseña (ver arriba). Después de eso, el servidor proporciona un desafío que — en combinación con la contraseña — se utiliza para cifrar el resto de la comunicación. La encriptación real se basa en un cifrado RC4 con tamaño de clave de 256 bits, y la clave se deriva de la contraseña y el desafío (como una sal) usando PBKDF2.

Todas estas cosas hacen más complejas para detectar mensajes de alambre. Sin embargo, los chicos de WhatsAPI ya implantado con éxito este protocolo, así que mucho de su código puede ser reutilizado para leer mensajes de WhatsApp en la interfaz de red.

 

Fuente aqui