目錄
將IMEI(MEID)+uin進行MD5,取其前7位就是密碼(32位小寫),保存下來
對EnMicroMsg.db解密(使用sqlcipher這個工具數據庫查看)
導語
是否還在爲無法導出聊天級錄而苦惱?史上最強攻略來了,不用root手機,不用會代碼,不限制任何機型,只要你有一顆想動手的心!
工具
- 電腦(筆記本,臺式都行)
- md5轉換網址
原理
微信聊天數據是一個db文件,而我們知道db裏面是各種表,表裏就有我們想要的聊天信息,但是微信的數據庫不可能不加密,經過百度我們可以知道它的密碼是由微信的uin號加上手機的IMEI碼進行MD5加密取前7位構成的,但是數據庫文件肯定不讓我們獲得,除非獲得手機最高權限,也就是root,但是現在的手機基本不準root了,咋辦呢?其實這不是難題,有電腦啥都好說。因此我們就可以大展手腳了。
步驟
- 首先登錄電腦微信,備份聊天記錄到電腦上
- 電腦下載安卓模擬器(鄙人用的是夜神)
- 獲取手機IMEI碼
- 安卓模擬器下載並安裝微信
- 模擬器登錄微信
- 獲取微信的uin號
- 將IMEI(MEID)+uin進行MD5,取其前7位就是密碼(32位小寫),保存下來
- 電腦微信還原聊天記錄到安卓模擬器微信上
- 獲得數據庫文件複製到電腦上
- 對EnMicroMsg.db解密(使用sqlcipher這個工具數據庫查看)
- 導出數據庫表格爲csv文件
- 完成
步驟截圖
-
首先登錄電腦微信,備份聊天記錄到電腦上
- 這一步就不用截圖了,自己手機跟電腦連在同一個wifi下,然後電腦端選擇備份記錄到電腦,手機確認就可以了,備份完後自己手機登出微信帳號
-
電腦下載安卓模擬器(鄙人用的是夜神)
- 這一步也不用截圖了,自己下載模擬器去
-
安卓模擬器下載並安裝微信
-
模擬器登錄微信
-
獲取微信的uin號
- 模擬器微信登錄成功後打開模擬器文件管理器
- 打開微信存儲路徑,這裏模擬器會使用root模式,模擬器一般都是root的,微信存儲路徑一般爲data/data/com.tencent.mm/MicoMsg
- 進入MicoMsg後在當前文件夾下找到system_config_prefs.xml文件
- 將該文件複製出來,夜神有個模擬器跟電腦共享文件夾,在旁邊,叫文件助手,我們先選中該文件,然後打開安卓共享文件夾,進入粘貼選擇項就ok了
- 然後打開模擬器文件助手,打開電腦端文件夾就可以看到system_config_prefs.xml文件,我們用記事本打開就可以找到uin號,複製保存下來
-
獲取手機IMEI碼
- 打開自己模擬器的設置界面,這裏以夜神爲例,在手機與網絡就有生成的IMEI碼,使用默認的,不要隨機創建,複製保存下來
-
將IMEI(MEID)+uin進行MD5,取其前7位就是密碼(32位小寫),保存下來
- 到該網站進行轉換,選擇32位(小)md5轉換網址
-
uin: 688275*** imei: 865166010121179 md5: 6a8ecae00ba2f96e7e90c0268090c8db 前七位: 6a8ecae
-
電腦微信還原聊天記錄到安卓模擬器微信上
-
獲得數據庫文件複製到電腦上
- 到剛纔所說的微信路徑下找到EnMicroMsg.db並選擇複製到電腦共享文件夾下
-
對EnMicroMsg.db解密(使用sqlcipher這個工具數據庫查看)
- 複製出來後模擬器就沒啥用了,交給電腦了
- 我們打開sqlcipher這個工具數據庫打開EnMicroMsg.db輸入密碼就可以查看了
- 聊天記錄在message這個表格中,我們按圖中所示導出該表格爲csv文件
- 導出成功
-
導出數據庫表格爲csv文件打開
- 表格屬性中isSend值爲1就是我們本人發送,0則是對方發送,createTime 聊天時間戳 content 聊天內容
-
完成
附加做成詞雲代碼
import openpyxl
import threading
#多線程處理,本人聊天記錄爲73622行,四個線程處理,每個17000多行,我先將無關列刪去,留下四列,序號,isSend,createTime,還有content,所以我選擇判斷是誰發送的,再保存聊天記錄
def cxk1():
for i in range(2,17905):
try:
#判斷是誰發送
if str(sh.cell(row=i, column=1).value)=='0':
#保存第四列的聊天記錄
file.write('傻豬:'+sh.cell(row=i, column=4).value+'\n')
else:
file.write('\t\t\t\t\t\t\t'+sh.cell(row=i, column=4).value+':帥哥凱'+'\n')# A表示列,1表示行
except:
continue
print('1_ok')
def cxk2():
for i in range(17905,35810):
try:
if str(sh.cell(row=i, column=1).value)=='0':
file.write('傻豬:'+sh.cell(row=i, column=4).value+'\n')
else:
file.write('\t\t\t\t\t\t\t'+sh.cell(row=i, column=4).value+':帥哥凱'+'\n')# A表示列,1表示行
except:
continue
print('2_ok')
def cxk3():
for i in range(35810,53715):
try:
if str(sh.cell(row=i, column=1).value)=='0':
file.write('傻豬:'+sh.cell(row=i, column=4).value+'\n')
else:
file.write('\t\t\t\t\t\t\t'+sh.cell(row=i, column=4).value+':帥哥凱'+'\n')# A表示列,1表示行
except:
continue
print('3_ok')
def cxk4():
for i in range(53715,71622):
try:
if str(sh.cell(row=i, column=1).value)=='0':
file.write('傻豬:'+sh.cell(row=i, column=4).value+'\n')
else:
file.write('\t\t\t\t\t\t\t'+sh.cell(row=i, column=4).value+':帥哥凱'+'\n')# A表示列,1表示行
except:
continue
print('4_ok')
def fun1():
th=threading.Thread(target=cxk1)
th.setDaemon(True)#守護線程
th.start()
def fun2():
th=threading.Thread(target=cxk2)
th.setDaemon(True)#守護線程
th.start()
def fun3():
th=threading.Thread(target=cxk3)
th.setDaemon(True)#守護線程
th.start()
def fun4():
th=threading.Thread(target=cxk4)
th.setDaemon(True)#守護線程
th.start()
#將聊天記錄導出到txt文件
file = open('CxkAndLhm.txt','w')
#你導出的微信聊天記錄文件,先將csv轉爲xlsx文件
wb = openpyxl.load_workbook('weixin.xlsx')
sh = wb['weixin']
fun1()
fun2()
fun3()
fun4()
wb.close()
file.close()
# 詞雲庫
from wordcloud import WordCloud
import PIL .Image as image
import numpy as np
with open("CxkAndLhm.txt") as fp:
text=fp.read()
# print(text)
# 將文本放入WordCoud容器對象中並分析
# 詞雲圖片
mask = np.array(image.open("1.jpg"))
#字體:C:\Windows\Fonts\FZSTK.TTF C:\Windows\Fonts\FZLTCXHJW.TTF
font="C:\Windows\Fonts\FZLTCXHJW.TTF"
WordCloud =WordCloud(
# 設置字體,不指定就會出現亂碼
font_path=font, # 這個路徑是pc中的字體路徑
# 設置背景色
background_color='white',
# 詞雲形狀
mask=mask,
# 允許最大詞彙
max_words=100,
# 最大號字體
max_font_size=100,
# 設置有多少種隨機生成狀態,即有多少種配色方案
random_state=30,
# 清晰度
scale=3
).generate(text)
image_produce = WordCloud.to_image()
image_produce.show()
print('完成')
結語
到這我們就完成了微信聊天數據的導出,我們可以用導出的數據進行處理了,做成詞雲或者數據清洗都行。編寫不易,留贊可行?