viernes, 23 de mayo de 2014

Analisis forense a whatsapp (cracking msgstore.db.crypt5)

 Este tutorial es para los que tienen respaldos de conversaciones con la extensión  crypt5  de Whatsapp. Si tienes el crypt normal puedes ver el post anterior:
http://villatux.blogspot.mx/2013/04/analisis-forence-whatsapp-cracking.html


Este nuevo tipo de encripción  utiliza el correo de google con el que está registrado el telefono + una llave para formar la llave de encripción:

echo -n micorreo@gmail.com | md5sum
f114f9011ed7050730b29d78ba7f2883

El MD5 resultante tendrá un valor de 32 dígitos hexadecimales  y tendremos que convertirlo a un valor de 48 digitos agregando los primeros 16 digitos al final del hash resultante ,  nos quedaría algo así la llave para des encriptar:

f114f9011ed7050730b29d78ba7f2883f114f9011ed70507


Ahora necesitamos hacer una operación XOR en el hash obtenido de 48 digitos,  el resultado nos dará la llave para desencriptar. Para esto es necesario un valor inicializador :

1e39f369e90db33aa73b442bbbb6b0b9

Ya teniendo estos valores requeridos , usamos openssl para desencriptar el archivo directamente:

openssl enc -aes-192-cbc -d -nosalt -in msgstore.db.crypt5 -out msgstore.db -K [key] -iv [iv]

Para hacer el proceso más sencillo Mohamed Ibrahim escribió el siguiente script que hace todo el proceso. Para esto es necesario pasarle como parámetro el correo electronico con el que está registrado el teléfono, el nombre de el archivo encriptado  y el nombre de el archivo de salida como el siguiente comando:

./script.sh micorreo@gmail.com msgstore.db.crypt5 > msgstore.db


 SCRIPT:
#!/bin/bash
 
function xor24 ()
{
  x24=$1
  y24=$2
  z24=""
   
  for ((i=0;i<48;i=i+2))
  do
    x=${x24:$i:2}
    y=${y24:$i:2}
    z=`printf "%02x" $((16#$x^16#$y))`   
    z24="${z24}${z}"
  done
  echo $z24
}
 
 
if [ "$#" -ne 2 ] ; then
  echo "Usage: $0 (primary-android-email-account) (whatsapp-inputfile) > outputfile"
  exit 1
fi
 
key=8d4b155cc9ff81e5cbf6fa7819366a3ec621a656416cd793   
iv=1e39f369e90db33aa73b442bbbb6b0b9
emailacct="$1"
infile="$2"
 
md5_16=`echo -n $emailacct | md5sum | cut -c -32`
md5_24=`echo -n $md5_16 ; echo $md5_16 | cut -c -16`
aeskey=`xor24 $key $md5_24`
 
#openssl enc -aes-192-cbc -d -nosalt -in $infile -K $aeskey  -iv $iv
openssl enc -aes-192-cbc -d -nosalt -nopad -bufsize 16384 -in $infile -K $aeskey  -iv $iv

6 comentarios:

Unknown dijo...

Hola, llevo tiempo intentando decifrar el contenido de unos archivos .db.crypt pero todo lo que uso no me funciona y en este caso cuando descargo el OpenSSL me pide una donacion, me podrias ayudar a desifrar el contenido de los archivos que tengo.

villatux dijo...

mandame tu archivo

villatux dijo...

mandame tu archivo

Unknown dijo...

seria posible desifrar un archibo crip 7 sin el key

soledad dijo...

hola necesito desifrar uno archivos db crip7 y no hay formano puedo :( HELP!!!!

soledad dijo...

hola necesito desifrar uno archivos db crip7 y no hay formano puedo :( HELP!!!!