tener son principales muchos mensajes las instalar funciones cuales como android sms messages inbox

android - muchos - cuales son las principales funciones de whatsapp



Obtener todos los mensajes de Whatsapp (9)

Estoy intentando implementar una aplicación que mostrará en una vista de texto todos los mensajes recibidos de Whatsapp. ¿Hay alguna forma de hacerlo? ¿Es posible extraer todos los mensajes de Whatsapp?


Código de Android que funciona: (No se requiere root)

Una vez que tenga acceso al archivo dbcrypt5, aquí está el código de Android para descifrarlo:

private byte[] key = { (byte) 141, 75, 21, 92, (byte) 201, (byte) 255, (byte) 129, (byte) 229, (byte) 203, (byte) 246, (byte) 250, 120, 25, 54, 106, 62, (byte) 198, 33, (byte) 166, 86, 65, 108, (byte) 215, (byte) 147 }; private final byte[] iv = { 0x1E, 0x39, (byte) 0xF3, 0x69, (byte) 0xE9, 0xD, (byte) 0xB3, 0x3A, (byte) 0xA7, 0x3B, 0x44, 0x2B, (byte) 0xBB, (byte) 0xB6, (byte) 0xB0, (byte) 0xB9 }; long start = System.currentTimeMillis(); // create paths backupPath = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/WhatsApp/Databases/msgstore.db.crypt5"; outputPath = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/WhatsApp/Databases/msgstore.db.decrypt"; File backup = new File(backupPath); // check if file exists / is accessible if (!backup.isFile()) { Log.e(TAG, "Backup file not found! Path: " + backupPath); return; } // acquire account name AccountManager manager = AccountManager.get(this); Account[] accounts = manager.getAccountsByType("com.google"); if (accounts.length == 0) { Log.e(TAG, "Unable to fetch account!"); return; } String account = accounts[0].name; try { // calculate md5 hash over account name MessageDigest message = MessageDigest.getInstance("MD5"); message.update(account.getBytes()); byte[] md5 = message.digest(); // generate key for decryption for (int i = 0; i < 24; i++) key[i] ^= md5[i & 0xF]; // read encrypted byte stream byte[] data = new byte[(int) backup.length()]; DataInputStream reader = new DataInputStream(new FileInputStream( backup)); reader.readFully(data); reader.close(); // create output writer File output = new File(outputPath); DataOutputStream writer = new DataOutputStream( new FileOutputStream(output)); // decrypt file Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec secret = new SecretKeySpec(key, "AES"); IvParameterSpec vector = new IvParameterSpec(iv); cipher.init(Cipher.DECRYPT_MODE, secret, vector); writer.write(cipher.update(data)); writer.write(cipher.doFinal()); writer.close(); } catch (NoSuchAlgorithmException e) { Log.e(TAG, "Could not acquire hash algorithm!", e); return; } catch (IOException e) { Log.e(TAG, "Error accessing file!", e); return; } catch (Exception e) { Log.e(TAG, "Something went wrong during the encryption!", e); return; } long end = System.currentTimeMillis(); Log.i(TAG, "Success! It took " + (end - start) + "ms");


Editar

Como WhatsApp se esforzó por mejorar su sistema de encriptación, obtener los datos ya no es tan fácil. Con las versiones más nuevas de WhatsApp, ya no es posible usar la adb backup . Las aplicaciones pueden denegar copias de seguridad y el cliente de WhatsApp hace eso. Si tiene un teléfono rooteado, puede usar un shell raíz para obtener el archivo de base de datos no encriptado.

Si no tiene root, aún puede descifrar los datos si tiene un antiguo APK de WhatsApp. Encuentre una versión que aún permita copias de seguridad. Luego puede hacer una copia de seguridad de la carpeta de datos de la aplicación, que contendrá una clave de cifrado llamada, bueno, key .

Ahora necesitarás la base de datos encriptada. Utilice un explorador de archivos de su elección o, si le gusta más la línea de comando, use adb:

adb pull /sdcard/WhatsApp/Databases/msgstore.db.crypt12

Con los dos archivos, ahora puede usar https://gitlab.com/digitalinternals/whatsapp-crypt12 para obtener la base de datos de texto sin formato. Ya no es posible usar herramientas de la placa Linux como openssl porque WhatsApp parece usar una versión modificada de la API de Spongy Castle para la criptografía que openssl no comprende.

Respuesta original (solo para la antigua crypt7)

Como WhatsApp ahora usa el formato crypt7, ya no es tan fácil obtener y descifrar la base de datos. Hay un enfoque de trabajo que utiliza ADB y depuración de USB.

Puede obtener las claves de cifrado a través de ADB y descifrar la base de datos de mensajes almacenada en / sdcard, o simplemente obtiene la versión simple de la base de datos a través de la copia de seguridad de ADB, lo que parece ser la opción más fácil.

Para obtener la base de datos, haga lo siguiente:

Conecte su teléfono Android a su computadora. Ahora corre

adb backup -f whatsapp_backup.ab -noapk com.whatsapp

hacer una copia de seguridad de todos los archivos que WhatsApp ha creado en su carpeta privada.
Obtendrá un archivo zlib comprimido utilizando el formato tar con algunos encabezados ADB. Necesitamos deshacernos de esos encabezados primero ya que confunden el comando de descompresión:

dd if=whatsapp_backup.ab ibs=1 skip=24 of=whatsapp_backup.ab.nohdr

El archivo ahora se puede descomprimir:

cat whatsapp_backup.ab.nohdr | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" 1> whatsapp_backup.tar

Este comando ejecuta Python y descomprime el archivo usando zlib para whatsapp_backup.tar
Ahora podemos deshacer el archivo:

tar xf whatsapp_backup.tar

El archivo ahora se extrae a su directorio de trabajo actual y puede encontrar las bases de datos (msgstore.db y wa.db) en apps / com.whatsapp / db /


No estoy seguro si WhatsApp realmente almacena sus cosas en una base de datos sqlite almacenada en el espacio de aplicaciones privadas, pero puede valer la pena intentar hacer lo mismo que sugerí here . Necesitará acceso de root para esto.


Para usuarios rooteados: cuál es la aplicación que almacena todos los mensajes y contactos en los archivos msgstore.db y wa.db en texto plano. Estos archivos están disponibles en /data/data/com.whatsapp/databases/. puede abrir estos archivos usando cualquier navegador sqlite como el navegador de bases de datos SQLite.


Puede tener acceso a la base de datos de WhatsApp que se encuentra en la tarjeta SD, creo que es un usuario root. si abre "/ data / data / com.whatsapp", verá que "databases" está vinculado a "/ firstboot / sqlite / com.whatsapp /"


Sí, deben ser formas de recibir mensajes de WhatsApp, ya que hay algunas herramientas disponibles en el mercado que ayudan a los usuarios de WhatsApp a hacer una copia de seguridad del historial de chat de WhatsApp en su computadora. Lo sé desde here . Por lo tanto, debe poder implementar ese tipo de aplicación. Tal vez puedas encontrar estas herramientas en el mercado para ver cómo funcionan.


Si realmente quiere algo simple y sabe cómo escribir / ejecutar Python, eche un vistazo al guión de Bas Bosschert: sources

#!/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()))

Ejecución completa:

(scratch)ehtesh@ackee:/tmp/whatsapp$ mkvirtualenv whatsapp_decrypt New python executable in whatsapp_decrypt/bin/python Installing setuptools, pip...done. (whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ pip install pycrypto >/dev/null (whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ wget https://gist.githubusercontent.com/shurane/ffa15e959e2d134086c9/raw/bc99a9997123bea0ea0acde185e24c7e89133559/whatsapp_decrypt.py >/dev/null (whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ ls msgstore.db.crypt whatsapp_decrypt.py (whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ python whatsapp_decrypt.py msgstore.db.crypt (whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ ls msgstore.db.crypt msgstore.db whatsapp_decrypt.py (whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ sqlite3 msgstore.db SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> PRAGMA table_info(messages); 0|_id|INTEGER|0||1 1|key_remote_jid|TEXT|1||0 2|key_from_me|INTEGER|0||0 3|key_id|TEXT|1||0 4|status|INTEGER|0||0 5|needs_push|INTEGER|0||0 6|data|TEXT|0||0 7|timestamp|INTEGER|0||0 8|media_url|TEXT|0||0 9|media_mime_type|TEXT|0||0 10|media_wa_type|TEXT|0||0 11|media_size|INTEGER|0||0 12|media_name|TEXT|0||0 13|media_hash|TEXT|0||0 14|media_duration|INTEGER|0||0 15|origin|INTEGER|0||0 16|latitude|REAL|0||0 17|longitude|REAL|0||0 18|thumb_image|TEXT|0||0 19|remote_resource|TEXT|0||0 20|received_timestamp|INTEGER|0||0 21|send_timestamp|INTEGER|0||0 22|receipt_server_timestamp|INTEGER|0||0 23|receipt_device_timestamp|INTEGER|0||0 24|raw_data|BLOB|0||0 25|recipient_count|INTEGER|0||0 sqlite>

Pritam Baral ha mencionado una forma aún más simple:

openssl aes-192-ecb -d -in msgstore.db.crypt -out msgstore.db -K 346a23652a46392b4d73257c67317e352e3372482177652c