rewrite decryption logic

This commit is contained in:
Yuxin Wu
2020-06-27 01:45:15 -07:00
parent a82bd281a7
commit 0f97ecc9f0
3 changed files with 15 additions and 56 deletions
+2 -42
View File
@@ -1,14 +1,11 @@
#!/bin/bash
# File: android-interact.sh
# Date: Wed Nov 29 02:19:00 2017 -0800
# Author: Yuxin Wu
PROG_NAME=`python -c "import os, sys; print(os.path.realpath(sys.argv[1]))" "$0"`
PROG_DIR=`dirname "$PROG_NAME"`
cd "$PROG_DIR"
source compatibility.sh
# Please check that your path is the same, since this might be different among devices
RES_DIR="/mnt/sdcard/tencent/MicroMsg"
MM_DIR="/data/data/com.tencent.mm"
@@ -16,26 +13,7 @@ MM_DIR="/data/data/com.tencent.mm"
echo "Starting rooted adb server..."
adb root
if [[ $1 == "uin" ]]; then
adb pull $MM_DIR/shared_prefs/system_config_prefs.xml 2>/dev/null
uin=$($GREP 'default_uin' system_config_prefs.xml | $GREP -o 'value=\"\-?[0-9]*' | cut -c 8-)
[[ -n $uin ]] || {
>&2 echo "Failed to get wechat uin. You can try other methods, or report a bug."
exit 1
}
rm system_config_prefs.xml
echo "Got wechat uin: $uin"
elif [[ $1 == "imei" ]]; then
imei=$(adb shell dumpsys iphonesubinfo | $GREP 'Device ID' | $GREP -o '[0-9]+')
[[ -n $imei ]] || {
imei=$(adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed 's/[^0-9A-F]*//g' | tr -d '\n')
}
[[ -n $imei ]] || {
>&2 echo "Failed to get imei. You can try other methods mentioned in README, or report a bug."
exit 1
}
echo "Got imei: $imei"
elif [[ $1 == "db" || $1 == "res" ]]; then
if [[ $1 == "db" || $1 == "res" ]]; then
echo "Looking for user dir name..."
sleep 1 # sometimes adb complains: device not found
# look for dirname which looks like md5 (32 alpha-numeric chars)
@@ -85,26 +63,8 @@ elif [[ $1 == "db" || $1 == "res" ]]; then
exit 1
}
fi
elif [[ $1 == "db-decrypt" ]]; then
set -e
echo "Getting uin..."
$0 uin | tail -n1 | $GREP -o '\-?[0-9]*' | tee /tmp/uin
echo "Getting imei..."
$0 imei | tail -n1 | $GREP -o '[0-9]*' | tee /tmp/imei
echo "Getting db..."
$0 db
echo "Decrypting db..."
imei=$(cat /tmp/imei)
uin=$(cat /tmp/uin)
if [[ -z $imei || -z $uin ]]; then
>&2 echo "Failed to get imei or uin. See README for manual methods."
exit 1
fi
./decrypt-db.py EnMicroMsg.db $imei $uin
rm /tmp/{uin,imei}
echo "Done. See decoded.db"
else
echo "Usage: $0 <res|db-decrypt>"
echo "Usage: $0 <res|db>"
exit 1
fi
-13
View File
@@ -1,13 +0,0 @@
#!/bin/bash -e
# $File: compatibility.sh
# $Date: Tue Jun 16 22:23:36 2015 +0800
# Author: Vury Leo <i[at]vuryleo[dot]com>
if [ `uname` = 'Darwin' ]; then
GREP='grep -E'
MD5SUM='md5'
else
GREP='grep -E'
MD5SUM='md5sum'
fi
-1
View File
@@ -1 +0,0 @@
../compatibility.sh
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash -e
# $File: compatibility.sh
# $Date: Tue Jun 16 22:23:36 2015 +0800
# Author: Vury Leo <i[at]vuryleo[dot]com>
if [ `uname` = 'Darwin' ]; then
GREP='grep -E'
MD5SUM='md5'
else
GREP='grep -E'
MD5SUM='md5sum'
fi