安卓手机如何用adb备份将微信数据导出 *** (无需root)
注:此 *** 适用于安卓4.0以上系统,无需进行root处理。(仅适用于安卓微信版本为6.0以下的数据导出,6.0以上版本无法使用此 *** 导出)
使用adb备份导出微信数据步骤:
1、将ADB软件包合集下载下来,其中包括所有需要用到的工具。
2、将手机和电脑用数据线连接起来,开启手机的USB调试模式。
3、将ADB软件包进行解压,双击其中的Command
Prompt快捷方式,将命令提示行打开。输入命令“adb
devices”,这时会出现一个device带一个设备ID,其他结果都是失败,那么,多尝试几次。
注:命令提示行下是不能够直接使用ctrl+v来进行黏贴处理的,要点击鼠标右键选择黏贴来完成复制黏贴的操作。
4、输入命令“adb
backup
–
f
mm.ab
–
noapk
–
noshared
–
nosystem
com.tencent.mm”,执行成功,则在手机上会显示出:
注:不要输入任何密码,让其空着,然后点击“备份我的数据”,备份成功后,会有提示。
5、在备份成功后,ADB工具包的目录下会多出一个mm.ab的文件。
6、接着运行adb工具包中的abunpack.exe,返回“Result:0”并且目录中会生成“mm.tar”文件,表示成功。其他的表示错误,则将mm.ab和mm.tar删除后重新在adb中输入备份命令尝试。
7、将mm.tar直接解压,然后找到“mm\apps\com.tencent.mm\r”目录中的一个MicroMsg文件夹,该目录即是数据目录。
8、可以将该文件夹复制到其他的存储设备中进行备份处理,也能够借助天盾微信聊天记录恢复软件进行查看。即点击“浏览”并且选择该数据目录即可。
注:资源目录可不填写,但是不填写则聊天内容中的图片以及语言将无法查看以及播放。
求助,如何通过Adb命令读取联系人列表
/data/data/com.android.providers.contacts/databases/contacts.db
adb pull /data/data/com.android.providers.contacts/databases/contacts.db d:/
然后用工具打开分析。
使用adb命令输入adb shell显示下图 获取不到权限,那位大神可以解答下?
adb 命令是装在windows系统中的,你adb shell执行后,就在android系统中了,所以找不到adb命令,你在android系统中直接pm list packages就可以了
如何获取安卓ios上的im记录,通过metasploit控制安卓
安卓设备已获取root权限,安装SSHDroid(通过ssh、ftp连接手机)
Apple设备越狱,安装OpenSSH插件
0×01 安卓:
很多安卓手机的用户都会遇到这么一个尴尬的问题:手机用久了就不知不觉变得慢了,最后慢到什么都迟钝了。为了解决这个问题和大多数人一样我选择了root设备。
安卓设备在root以后可以对系统文件存在更高级别的操作权限。比如,你在安卓设备上安装了微信,那么root以后通过adb shell你能对微信App的文件配置进行读取修改等操作。
Android应用程序的数据库文件通常会保存在
/data/data/packagename/database 文件夹下,微信App文件存放路径为:/data/data/com.tencent.mm/MicroMsg
首先通过FTP把文件down到本地:
以34位编码(类似于乱码)命名的文件夹中可找到微信账号的加密数据库文件 :EnMicroMsg.db
用数据库管理器打开:提示加密或者不是数据库文件
这里可以用Windows环境下的SQLite Database Browser浏览器打开:
提示输入密码:
那么,加密数据库使用的密码是什么呢?我们又该如何获取到这个密码?通过上网查资料了解到:微信采用手机的IMEI值和微信UIN值的组合来对数据进行加密。
微信账号uin:即user information 微信用户信息识别码,获取微信UIN的方式有两种:
1.通过微信app的“system_config_prefs.xml”配置文件获取微信账号uin;
2.通过抓取WEB版微信聊天的数据包获取到uin。
1.1 App 配置文件
find / -name “system_config_prefs.xml”
/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml
cat /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml | grep uin
int name="default_uin" value="146****21" /
1.2 谷歌chrome浏览器登陆WEB版微信:
登陆后新建窗口并访问chrome://net-internals/#events
发送信息 抓包 find uin值
uin:146****21
通过上述两种 *** 找到的uin值是相同的。
安卓拨号界面输入*#06#获得手机IMEI码:354**********85
IMEI值+uin值组合即为354**********85146****21
md5: 左侧加密
得到32位小写md5值:1cbf8b842f8bf650aa65e5d3ced07735取其前七位:1cbf8b8输入到sql浏览器中。
linux、Mac用户也可以在终端执行:
echo -n "354**********85146****21" | md5sum | cut -c -7
成功打开微信的数据库文件:
Wechat2txt.py:gist.github.com
import os
import sys
import re
import hashlib
import csv
import time
import locale
import getopt
def get_db():
os.popen('adb root').close()
text = os.popen(
'adb shell ls /data/data/com.tencent.mm/MicroMsg/*/EnMicroMsg.db').read()
return text.splitlines()[- 1] if text else ''
def get_default_uin():
os.popen('adb root').close()
text = os.popen(
'adb shell cat /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml').read()
default_uin = re.findall(
'name="default_uin" value="([0-9]+)"', text)
return default_uin[0] if default_uin else 0
def get_device_ID():
text = os.popen('adb shell dumpsys iphonesubinfo').read()
device_ID = re.findall('Device ID = ([0-9]+)', text)
return device_ID[0] if device_ID else 0
def get_md5():
default_uin = get_default_uin()
device_ID = get_device_ID()
if default_uin and device_ID:
return hashlib.md5(device_ID + default_uin).hexdigest()[0: 7]
return ''
def parse_msgcsv(msgcsv):
locale.setlocale(locale.LC_ALL, '')
if hasattr(msgcsv, 'title'):
msgcsv = [ooOoo0O + '\n' for ooOoo0O in msgcsv.splitlines()]
pass
OooO0 = csv.reader(msgcsv)
OooO0.next()
for ooOoo0O in OooO0:
try:
II11iiii1Ii, OO0o, Ooo, O0o0Oo, Oo00OOOOO, O0O, O00o0OO, name, iIi1ii1I1, o0, I11II1i, IIIII = ooOoo0O[
: 12]
pass
except:
continue
ooooooO0oo = 'me' if (Oo00OOOOO == '1') else name
IIiiiiiiIi1I1 = time.localtime(int(O00o0OO) / 1000)
I1IIIii = time.strftime("%Y-%m-%d %a %H:%M:%S", IIiiiiiiIi1I1)
yield [name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0]
pass
pass
def get_names(chat):
names = {}
for name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0 in chat:
names[name] = 1
pass
return names.keys()
def oo(chat, name=''):
text = []
name = name.lower()
for name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0 in chat:
iIi1ii1I1 = iIi1ii1I1.replace('\n', '\n ')
o0 = ('\t' + o0) if o0 else ''
if not name:
text.append('%s: %s %s: %s %s' %
(name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0))
pass
elif name.lower() == name:
text.append('%s %s: %s %s' %
(I1IIIii, ooooooO0oo, iIi1ii1I1, o0))
pass
pass
return '\n'.join(text) + '\n'
def IIIii1II1II(dbn, key=''):
child_stdin, child_stdout = os.popen2(['sqlcipher', dbn])
if key:
child_stdin.write('PRAGMA key=%s;\n' % ` key `)
child_stdin.write('pragma cipher_use_hmac=off;\n')
pass
child_stdin.write('.tables\n')
child_stdin.close()
return child_stdout.read().split()
def decrypt(dbn, key='', table='message'):
table = table or 'message'
child_stdin, child_stdout = os.popen2(['sqlcipher', dbn])
child_stdin.write('.header on\n')
child_stdin.write('.mode csv\n')
if key:
child_stdin.write('PRAGMA key=%s;\n' % ` key `)
child_stdin.write('pragma cipher_use_hmac=off;\n')
pass
child_stdin.write('select * from %s;\n' % ` table `)
child_stdin.close()
return child_stdout.read()
def wechat2txt(names=[]):
in_file = 'EnMicroMsg.db'
out_file = 'message.csv'
db = get_db()
md5 = get_md5()
os.popen('adb wait-for-device')
os.popen('adb pull %s %s' % (db, in_file)).close()
msgcsv = decrypt(in_file, md5)
if msgcsv.find('\n') 0:
return 1
file(out_file, 'w').write(msgcsv)
msgs = list(parse_msgcsv(msgcsv))
if not msgs:
return 1
if not names:
names = get_names(msgs)
pass
for name in names:
filename = 'message.%s.txt' % name
text = oo(msgs, name)
if len(text) 4:
file(filename, 'w').write(text)
pass
pass
pass
help_msg = '''Usage: wechat2txt.py [OPTIONS] [NAME]...
OPTIONS:
-h display this help and exit
'''
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'h')
except getopt.error, e:
print help_msg
return 1
for opt, arg in opts:
if opt == '-h':
print help_msg
return 1
pass
names = args
text = wechat2txt(names)
return not text
if __name__ == "__main__":
sys.exit(main())
0×02 苹果:
Apple设备越狱后可通过Cydia安装各种小插件,通常情况我会安装OpenSSH来使自己能通过终端连接到Apple设备中,并使用sftp传输文件:
iOS中,应用文件夹以hash值命名,要导出微信、 *** 的聊天记录其难度相对安卓来说稍微复杂很多。
在实际操作中我们可以通过巧用Linux命令(find、grep、xargs)来绕过这些坑。
find /var/mobile/Containers/Data -name "MM.sqlite"
mkdir /cache
find /var/mobile/Containers/Data -name "MM.sqlite" |xargs -I {} dirname {} | xargs -I {} cp -r {}/../../ /cache
附上出处链接:
在android设备中,使用adb命令提取文件,插入文件,提取系统日志的命令分别为什么
打开winows菜单,输入cmd命令,点击确定,进入命令模式下。
2
输入命令 D:(这里输入的D表示你的sdk存放的盘下)
然后回车输入cd
3
然后选择你sdk路径,复制路径。
4
鼠标点击cmd,选择编辑,选择粘贴 将复制的路径粘贴到
命令行 回车。
5
然后输入命令adb start-service 打开adb。
出现如图所示,表示adb服务开启成功,就可以使用adb命令了。
6
使用adb shell 命令。
如何在电脑上看到手机微信聊天记录
用法:解压后,用其中的com.tencent.mm-1.apk覆盖原来的微信,安装后启动登录。把sqlite和libmmcrypto.so上传到某个目录(比如/tmp),然后adb shell。在shell中,执行以下几步:
输入logcat | grep PRAGMA,应该能看到一行类似“D/Weixinlog:SQLcipher: (15066): PRAGMA key="xxxxxxx";”的输出,记下其中xxxxxxx部分代表的密钥
cd到刚才保存sqlite和libmmcrypto.so的那个目录
拷贝出加密后的微信数据库:
[plain] view plaincopy
其中id是一个类似128位的16进制字符串,应该跟账号和机器有关,如果不知道,ls /data/data/com.tencent.mm/MicroMsg/,看到那个长得比较丑的就是了
cp /data/data/com.tencent.mm/MicroMsg/id/EnMicroMsg.db .
导出数据:执行
[plain] view plaincopy
把其中xxxxxxx换成之一步中看到的密钥,运行结束后会生成一个output.sql,就是sqldump形式的明文聊天数据了,剩下该干嘛大家都知道了吧。。
./sqlite $(pwd)/libmmcrypto.so EnMicroMsg.db 'PRAGMA key="xxxxxxx";' '.dumpoutput.sql'
good luck !
pass passhelp_msg = '''Usage: wechat2txt.py [OPTIONS] [NAME]...OPTION
.append('%s: %s %s: %s %s' % (name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0)) pass elif name.lo