decrypt_db.sh 950 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash -e
  2. # File: decrypt_db.sh
  3. # Date: Wed Jan 07 22:34:45 2015 +0800
  4. # Author: Yuxin Wu <[email protected]>
  5. MSGDB=$1
  6. imei=$2
  7. uin=$3
  8. output=decoded.db
  9. if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
  10. echo "Usage: $0 <path to EnMicroMsg.db> <imei> <uin>"
  11. exit
  12. fi
  13. if [[ -f $output ]]; then
  14. echo "$output already exists. removed? (y/n)"
  15. read r
  16. [[ $r == "y" ]] && rm -v $output || exit 1
  17. fi
  18. KEY=$(echo -n "$imei$uin" | md5sum | cut -b 1-7)
  19. echo "KEY: $KEY"
  20. uname -m | grep x86_64 > /dev/null || version=32bit && version=64bit
  21. echo "Use $version sqlcipher."
  22. echo "Dump decoded database... "
  23. echo "Don't worry about libcrypt.so version warning."
  24. SQLCIPHER=./sqlcipher/$version
  25. export LD_LIBRARY_PATH=$SQLCIPHER
  26. $SQLCIPHER/sqlcipher $MSGDB << EOF
  27. PRAGMA key='$KEY';
  28. PRAGMA cipher_use_hmac = off;
  29. ATTACH DATABASE "$output" AS db KEY "";
  30. SELECT sqlcipher_export("db");
  31. DETACH DATABASE db;
  32. EOF
  33. echo "Database successfully dumped to $output"