当前位置:首页 > 网络黑客 > 正文内容

python微信聊天记录获取(python保存微信聊天记录)

hacker3年前 (2022-07-06)网络黑客56

本文目录一览:

微信聊天记录使用python爬虫到底能采集吗

首先,下载互盾苹果恢复大师,先安装好备用。

第二,打开“互盾苹果恢复大师”软件,看到界面上“从iTunes备份文件中恢复”,点击即可。

第三,此时你可以看到软件正在扫描手机数据,等待扫描完成即可。

第四,扫描完成后,可以看到界面上有“微信”、“短信”等栏目显示,点击“微信”即可恢复微信的内容。

最后,点击“微信”后可以在右侧直接看到内容,也可以选择“导出”。

python 能抓去微信的聊天记录吗

1. 微信把一个人删除以后,只要对方未删除对方手机聊天记录,对方还能看见我们之前的聊天记录。 2. 微信删除好友是单向的行为,删除好友,你仍会在对方好友列表存在,除非对方主动删除。 3. 删除好友后,对方将从你好友列表删除,你和对方聊天即...

微信聊天记录怎么提取出来

一、没有删除的话,你可以直接看到的。

二、如果你删除了,你可以通过以下方法找到:

1、查看语音聊天记录:语音聊天记录的备份和提取无需root,这些内容都备份在SD卡上。

提取的方法:将手机通过USB连接电脑。打开SD卡所在文件夹,找到:/sdcard/Tencent/MicroMsg/。打开对应的备份文件夹,正常都是一堆数字和字母组成文件名的文件夹,进入后,找到“voice”文件夹,文件家里的arm格式文档就是所有的聊天语音记录。只要把这些文件存下来,则语音聊天记录给备份下来。只要用暴风影音打开。

2、查看文本聊天记录:导出文本聊天记录就需要把手机进行root,只有在root后才能进行文本聊天记录的。

具体的方法:首先先把手机进行root,root完成后,打开\data\data\com.tencent.mm\MicriMsg 文件夹,里面会有一个以很长一串数字或者一些字母组成命名的文件夹(也可能有多个。不同的文件夹名代表不同的QQ,如果你用不同的QQ登陆过微信,每个QQ会产生一个新乱码文件夹,保险起见,可以都备份上)把此文件夹备份出来,文件夹里还有个systemInfo.cfg文件可以不用备份。然后进入找到MicroMsg.db文件,就是它了,这就是存储好友号码、昵称、聊天记录的数据库文件。想备份,简单,直接复制了就得!想要打开和导出为文本什么的,下载个SQLite相关软件就能做到了。

三、如果你手机里文件全部清理了,那就找不到了。

python能看微信记录吗

导出微信聊天db文件

手机端导出

发现现在的Android手机都很难root,而db文件肯定在微信的应用目录下。拿不出来的。

电脑端导出(mac)

从~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat下找到对应账号的数据存储目录。

屏幕快照 2019-10-17 下午5.46.38.png

Message

存储聊天消息

Contact

存储联系人信息

获取db密钥

打开微信

命令行运行 lldb -p $(pgrep WeChat)

在 lldb 中输入 br set -n sqlite3_key, 回车

还是在 lldb 中,输入 c, 回车

扫码登录微信

这时候回到 lldb 界面, 输入 memory read --size 1 --format x --count 32 $rsi, 回车

命令行回显结果

0x000000000000: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

0x000000000008: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

0x000000000010: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

0x000000000018: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

忽略左边的地址( 0x000000000000: ,0x000000000008:),从左到右,从上到下,把形如 0xab 0xcd 的数据拼起来,然后去掉所有的 "0x"和空格、换行, 得到 64 个字符的字符串,这就是 微信数据库的 key

可以遇到的问题(来自网上,我在使用过程中没有这个问题))

*.db 文件要在另一台 PC 或 Mac 上 登录微信, 才能被关闭,否则里面的聊天记录不是最新的;当然也可以强制调用 wal_checkpoint, 不过作为土办法,在另一台电脑上登一下微信也无妨。

那么wal_checkpoint是什么?是一个sqlite命令,可以参考:,如果不想看英文,那就百度一下吧!

db browser for sqlite

db数据库可视化工具,打开需要查看的数据库文件:

屏幕快照 2019-10-17 下午6.43.43.png

先输入0x,然后把上面得到的密钥复制进来。由于编码的问题,可能复制进来会出现打不开的情况,你可以先把密钥复制到软件执行sql语句的地方,然后在复制。一会python读取db数据库会参考上面的设置参数。

python解密db数据库

这里需要使用sqlite来操作数据库,而sqlite本身是不支持加密和解密的,那么这部分就需要我们自己来完成,但是网上已经有开源库了。

使用到的python库

加密解密db库——pysqlcipher3。

加密算法库——sqlcipher。

微信db加密库——wcdb

参考文档

db解密

路径配置

# 加密DB文件绝对路径,微信DB加密方案参考:    

DB_PATH = '/Users/pengdaosong/pds/python/PythonStudy/db/encryption/'

# 解密后生成不加密DB文件绝对路径

DB_OUT_PATH = '/Users/pengdaosong/pds/python/PythonStudy/db/decrypt/'

DB_OUT_JSON_PATH = '/Users/pengdaosong/pds/python/PythonStudy/db/json/'

DB_ROOT_PATH = '/Users/pengdaosong/pds/python/PythonStudy/db/'

# 解密数据库key

DB_KEY = "x''1133d3dd61764a9e80699b42b61e443515aeb00cf4f5497d9729adcb6c8e78e2''"

# 新的DB加密数据KEY,如果为空,者不加密

DB_NEW_KEY = ''

这里说一下DB_KEY的写法,官网写法是这样的:"x'2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99'";但是这样写始终是不能打开数据库的,始终报“不是一个数据库文件”。换成上面的写法后可以打开。所以,这里如果不能打开,把这两种写都试一试。像在密钥前加'0x'等都可以试一试。

解密

import pysqlcipher3.dbapi2 as sqliteimport config as cfdef decrypt(path, fileName):

   # ———————————————————————————————————数据库操作———————————————————————————————————

   # 参考:

   # 连接数据库如果文件不存在,会自动在当前目录创建:

   db = sqlite.connect(path + fileName)

   # 创建一个Cursor:

   db_cursor = db.cursor()

   # ————————————————————————————————————解密数据DB———————————————————————————————————

   # sqlcipher加密解密参考:

   # sqlcipher开源库地址:

   # sqlcipherApi:

   db_cursor.execute("PRAGMA key='" + cf.DB_KEY + "';")

   db_cursor.execute("PRAGMA cipher_compatibility=3;")

   db_cursor.execute("PRAGMA cipher_page_size=1024;")

   db_cursor.execute("PRAGMA kdf_iter=64000;")

   db_cursor.execute("PRAGMA cipher_hmac_algorithm=HMAC_SHA1;")

   db_cursor.execute("PRAGMA cipher_kdf_algorithm=PBKDF2_HMAC_SHA1;")

   # 将解密文件导入新的DB文件

   decrypt = cf.DB_OUT_PATH + 'decrypt_' + fileName

   db_cursor.execute("ATTACH DATABASE '" + decrypt + "' AS db_de KEY '" + cf.DB_NEW_KEY + "';  -- empty key will disable encryption")

   db_cursor.execute("SELECT sqlcipher_export('db_de');")

   db_cursor.execute("DETACH DATABASE db_de;")

   db_cursor.close()

更多加密参数设置参考:sqlcipher使用文档

将数据库导出为json

import pysqlcipher3.dbapi2 as sqliteimport config as cf_wximport dbToJsondef parse(path, fileName):

   db = sqlite.connect(path + fileName)

   db_cursor = db.cursor()

   all_table = db_cursor.execute("SELECT name FROM sqlite_master WHERE type = 'table';").fetchall()

   print(all_table)

   for x in all_table:

       table_name = x[0]

       print("Searching", table_name)

       try:

           t = db_cursor.execute('SELECT * FROM ' + table_name + ';')

           dbToJson.tableToFile(db_cursor,table_name)  

           print('\n')

       except BaseException as e:

           print(e)

           continue

   db_cursor.close()

   db.close()

import jsonimport numpy as npimport config as cf_wxclass MyEncoder(json.JSONEncoder):

 def default(self, obj):

     if isinstance(obj, np.ndarray):

         return obj.tolist()

     elif isinstance(obj, bytes):

         # utf-8会报错:'utf-8' codec can't decode byte 0xfc in position 14: invalid start byte

         return str(obj, encoding='ISO-8859-15')

     return json.JSONEncoder.default(self, obj)def tableToJson(cursor, table):

 query = 'SELECT * FROM ' + table

 rows = cursor.execute(query)

 items = []

 for row in rows:

     item = {}

     for key in cursor.description:

         item.update({key[0]: value for value in row})

     items.append(item)

 # 注意不要写道for里面了,不然数据结果不对    

 js = json.dumps(items, ensure_ascii=False, cls=MyEncoder, indent=4)

 print(js)

 print('--------------------------------')def tableToFile(cursor, table):

 query = 'SELECT * FROM ' + table

 rows = cursor.execute(query)

 items = []

 for row in rows:

     item = {}

     # 参考:

     for idx, col in enumerate(cursor.description):

         value = row[idx]

         item.update({col[0]: value})

     items.append(item)

 # 注意不要写道for里面了,不然数据结果不对

 json_name = ""

 if(table.endswith('.db')):

     json_name = table[:(table.__len__ - 3)]

 else:

     json_name = table  file = open(cf_wx.DB_OUT_JSON_PATH + json_name + ".json", 'w+')

 # ensure_ascii默认为True,汉字会被编码成'\u4e00\u6839\u806a'

 js = json.dumps(items, ensure_ascii=False, cls=MyEncoder, indent=4)

 file.write(js)

 file.close()

关联

查看聊天消息数据发现,不能把聊天消息数据表和对应的聊天人对应起来,因为消息表并没有存是和谁在聊天。如果不能和对应的人联系起来,岂不是感觉很不好。那这里就要用到联系人数据库了,密钥和上面的一样。打开联系人的数据查看:

屏幕快照 2019-10-17 下午7.30.41.png

这是其中一个联系人,将"m_nsUsrName"进行32 MD5后得到32为字符串。在者字符串前面加上"Chat_"就是这个联系人在消息数据库里面对应的表名。这样就可以通过这个字符串在消息数据库里找到对应的聊天消息了。

可以用python爬我的微信聊天记录吗

理论上是可以的,因为这个系统的话主要就是用来采取一些网络的信息,只要是通过互联网来传输储存的正常情况都是可以爬取到的,但是需要一定的编程能力才行。

求python收集微信聊天记录代码 每天收集同事们通过微信向我汇报工作情况,汇总成excel表格

我简直收集微信聊天记录代码,每天收集同事们通过微信向我汇报工作情况汇报成变成了exe,表示这个肯定可以,你可以通过聊天记录把它通过电脑来配置,通过他的转接方式都变成哇

扫描二维码推送至手机访问。

版权声明:本文由专业黑客技术知识发布,如需转载请注明出处。

本文链接:https://hkjdpt.com/248557.html

分享给朋友:

“python微信聊天记录获取(python保存微信聊天记录)” 的相关文章

神奇动物在哪里(神奇动物在哪里3)

  娱乐新闻来源:广州日报 2016年11月29日 14:03   A-A+      扫一扫 手机阅读   我要分享   QQ空间新浪微博腾讯微博QQ微信   原标题:      主角“小雀斑”      电影里动物的设定很可爱。      客串演出的约翰尼·德普      《神奇动物在哪里》剧照...

请问哪里可以买到晶体管收音机(七晶体管收音机有哪些优点)

  在红旗大楼排队买收音机   http://www.sina.com.cn 2007年12月11日08:04 大河网-大河报   □梁宇波   每天,我迎着晨曦,漫步在金水河畔,常常看到一些老人手携袖珍半导体收音机,一边散步一边听广播,显露出闲情逸致的神态,这不禁使我想起40多年前在红旗大楼...

网秦手机卫士怎么样(网秦手机卫士)

  网秦手机卫士在Google商店下载量突破50万   http://www.cww.net.cn 2011年4月20日 11:30 通信世界网   近日,记者通过美国Google官方应用商店(Google Android Market)中了解到,来自中国的移动安全产品——网秦手机卫士(中...

北京冬奥花样滑冰表演滑 北京冬奥花滑有表演滑吗

滑冰项目所有获奖选手以及东道主的2对选手参加 现在说晚不晚?分为雪上项目和冰上项目,有单板竞速,双板竞速,单板障碍,双板障碍,单板U形池,冰上竞速,花样滑冰,轨道雪橇 第24届奥林匹克冬季运动会开幕式...

汇率换算器在线查询系统(国家外汇管理局查汇率)

网址是http/wsagcn/model,实时发布的外汇牌价进行计算的。一日银行间外汇市场形成的价格,探亲、按1元人民币兑换17点42日元的比值,往年各种货币之间的汇率可以登录各大银行网页,关于您的问题,的价格。各地区。 港币,国家外汇管理局只公布人民币对?汇率(亦称“外汇行市”或“汇价,CNY,或...

梦幻西游开区表查询 「梦幻西游2021年哪个新区火爆」

青山绿水,既有希腊和罗马式风格,装备特别好,这一年火爆里我们驻足青丘观赏绚丽的烟火,缺点是升级慢。周五,为大家准备了暑期盛宴,那经济不2021就垮.梦幻西游。 相互间开放服务器角色转移功能。到底会不会最后确定 下来还不清楚。梦幻西游广西区最近开的是什么区,西游开区时间表,月22日参考资料:http/...

评论列表

边侣鸢旧
3年前 (2022-07-06)

符串,这就是 微信数据库的 key可以遇到的问题(来自网上,我在使用过程中没有这个问题))*.db 文件要在另一台 PC 或 Mac 上 登录微信, 才能被关闭,否则里面的聊天记录不是最新的;当然也可以强制调用 wal_checkpoint, 不过作为土办法,在另一台

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。