adb获取聊天记录,adb获取通知

hacker|
242

安卓手机如何用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 !

2条大神的评论

  • avatar
    访客 2022-09-17 上午 09:24:02

    pass passhelp_msg = '''Usage: wechat2txt.py [OPTIONS] [NAME]...OPTION

  • avatar
    访客 2022-09-17 上午 09:15:45

    .append('%s: %s %s: %s %s' % (name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0)) pass elif name.lo

发表评论