update scripts for avatar code

This commit is contained in:
ppwwyyxx
2015-10-09 14:54:19 -04:00
parent 82240095b6
commit 26115c48df
3 changed files with 25 additions and 22 deletions
+10 -4
View File
@@ -49,7 +49,7 @@ elif [[ $1 == "db" || $1 == "res" ]]; then
if [[ $1 == "res" ]]; then
echo "Pulling resources... this might take a long time, because adb sucks..."
mkdir -p resource; cd resource
for d in image2 voice2 emoji avatar video; do
for d in image2 voice2 emoji avatar video sfs; do
mkdir -p $d; cd $d
adb pull $RES_DIR/$chooseUser/$d
cd ..
@@ -62,11 +62,17 @@ elif [[ $1 == "db" || $1 == "res" ]]; then
echo "Resource pulled at ./resource"
echo "Total size: $(du -sh resource | cut -f1)"
else
echo "Pulling database file..."
echo "Pulling database and avatar index file..."
adb pull $MM_DIR/MicroMsg/$chooseUser/EnMicroMsg.db
[[ -f EnMicroMsg.db ]] && \
echo "File successfully downloaded to EnMicroMsg.db" || {
>&2 echo "Failed to pull database from adb"
echo "Database successfully downloaded to EnMicroMsg.db" || {
>&2 echo "Failed to pull database by adb"
exit 1
}
adb pull $MM_DIR/MicroMsg/$chooseUser/sfs/avatar.index
[[ -f avatar.index ]] && \
echo "Avatar index successfully downloaded to avatar.index" || {
>&2 echo "Failed to pull avatar index by adb, are you using latest version of wechat?"
exit 1
}
fi
+2 -3
View File
@@ -1,5 +1,5 @@
#!/bin/bash -e
# File: decrypt_db.sh
# File: decrypt-db.sh
# Date: Tue Jun 16 22:23:13 2015 +0800
# Author: Yuxin Wu <[email protected]>
@@ -29,8 +29,7 @@ uname | grep Darwin > /dev/null && os=darwin || os=linux
uname -m | grep x86_64 > /dev/null && version=64bit || version=32bit
echo "Use $version sqlcipher of $os."
echo "Dump decoded database... "
echo "Don't worry about libcrypt.so version warning."
echo "Dump decoded database... (Don't worry about libcrypt.so version warning.)"
SQLCIPHER=./third-party/sqlcipher/$os/$version
+13 -15
View File
@@ -34,21 +34,19 @@ class AvatarReader(object):
return img
def read_bm_block(self, pos):
hex_pos = hex(pos)
fname = os.path.join(self.avt_dir,
'avatar.block.0000' + hex_pos[2])
f = open(fname, 'rb')
start_pos = pos - 2 ** 34
f.seek(start_pos+30)
while f.read(1) != b"\x00":
continue
size = (96, 96, 3)
img = np.zeros(size, dtype='uint8')
for i in range(96):
for j in range(96):
r, g, b, a = map(ord, f.read(4))
img[i,j] = (r, g, b)
file_idx = 0
fname = os.path.join(self.avt_dir,
'avatar.block.0000' + str(file_idx))
with open(fname, 'rb') as f:
start_pos = pos + 16 + 51
# 51 = len('xx/xx/user_this-is-md5-of-length-32.png.bm\x00')
f.seek(start_pos)
size = (96, 96, 3)
img = np.zeros(size, dtype='uint8')
for i in range(96):
for j in range(96):
r, g, b, a = map(ord, f.read(4))
img[i,j] = (r, g, b)
return img
def query_index(self, filename):