【matlab】記一次微信聊天文字記錄匯出到Excel工作
其實一直想把我和她的微信聊天記錄匯出到文字,整理出來拿出來翻翻,然後再查閱了大量網路資料後,我成功的將我和她的聊天記錄整理成excel的形式,如下所示:
那麼我們開始。
一、工具準備(蘋果手機也可,在文末)
1、root的安卓手機,裝有微信。
2、安裝RE瀏覽器或者ES瀏覽器。
3、加密資料庫DB檔案開啟工具:sqlcipher.exe(下載連結:微雲分享)
4、Excel
5、MATLAB(可選)
二、找到加密的微信聊天記錄檔案
依次選擇根目錄/data/data/com.tencent.mm/MicroMsg,如下圖
如上圖,一般加密的資料庫檔案在兩個長名字資料夾之一,自己尋找。
開啟資料夾後,會找到EnMicroMsg.db這個檔案,將這個檔案用re管理器拷貝到手機主目錄,然後拷貝到手機上即可。
三、開啟資料庫EnMicroMsg.db
下載加密資料庫DB檔案開啟工具:sqlcipher.exe(下載連結:微雲分享)。
直接執行,選擇開啟,如下圖,需要密碼:
那麼請看下一步,找到密碼。
四、尋找資料庫檔案密碼
目前各種資料得出的密碼獲取方式是 <手機IMEI號+微信UIN號> 的MD5碼前七位。
一般IMEI號位15位,比如000000000000000,微信UIN號為9位,比如123456789.
如下圖,輸入手機IMEI號+微信UIN號
所以,我們只需要知道手機IMEI號和微信UIN號即可獲得密碼,請看下步,怎麼獲得IMEI號和微信UIN號。
五、獲取手機IMEI號和微信UIN號
1、手機IMEI號
這個很簡單,撥號介面輸入*#06#即可,雙卡雙待手機兩個串號,這個自行嘗試。
2、微信UIN號獲取
還是在re管理器依次尋找
根目錄/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml
將system_config_prefs.xml這個檔案拷貝到手機主目錄,才能開啟,如下所示:
即可得到UIN號。
六、匯出聊天記錄到CSV
經過第四步和第五步,我們已經開啟加密的db檔案,如下所示:
我們直奔主題,如下圖,找到message匯出csv即可,修改檔案字尾csv:
七、處理聊天記錄csv檔案
匯出的csv檔案包含了所有的聊天記錄,我們通過探索,發現如下圖:
一般尋找圖上這幾項,分別是isSend(0則為對方發的訊息,1是我發的訊息),createTime(10位UNIX時間戳,可以演算法轉換為標準時間),talker(這個是關鍵,你與某個聯絡人的對話就為一個taker id,鎖定了它就鎖定了你與她的所有對話),content(聊天文字內容)。
那麼,我們思路清晰了,我們只需要找到talker即可,通過Excel的篩選即可完成,excel操作很簡單,但如此大的excel檔案,開啟編輯可是非常慢的,所以我用MATLAB實現處理,並將整理好的聊天記錄匯出到excel檔案中。
程式如下:
clc;
clear all;
[FileName,PathName] = uigetfile('*.csv','選擇匯出的資料庫csv檔案');
file = fullfile(PathName,FileName);
[num,txt,raw]=xlsread(file);
% clearvars -except num txt raw
talkerid=input('請輸入Talker的ID:','s');
talker=txt(:,8);%列出所有的talker ID
[ta , y] = find(strcmp(talker,talkerid));%尋找剛才輸入的talker ID
mcontent=cell(length(ta),1);
for i=1:length(ta)
who(i)=num(ta(i)-1, 5) ;%定義一個isSend cell陣列,來鑑別是誰發的訊息
mtime(i)=num(ta(i), 7) ;%定義一個createTime cell陣列,來儲存10位UNIX時間戳
mcontent{i}=txt(ta(i), 9) ;%定義一個content cell陣列,來儲存聊天內容
end
who=who';
%%%%%%%%%%%%%%%下面這段程式是將isSend cell陣列中的0替換為對方,1替換為我%%%%%%%%%%%%
myname=find(who==1);
hername=find(who==0);
% all=find(who==2);
ourname=cell(length(who),1);
for i=1:length(myname)
ourname{myname(i),1}='我';
end
for i=1:length(hername)
ourname{hername(i),1}='真好';
end
% for i=1:length(all)
% ourname{all(i),1}='未知';
% end
%%%%%%%%%%%%%%%%%%%%%%%%%下面這段程式是將createTime cell陣列中時間戳取前10位轉換位北京時間%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ourname=ourname';
mtime=mtime';
mtime=num2str(mtime);%轉換成字串,取前10位時間戳
mtime=mtime(:,1:10);
mtime=str2num(mtime);
mtime=dateconvert(mtime);
mtime=mtime';
%%%%%%%%%%%%%%%%%%%%%%%%%下面這段程式是將content cell陣列中漢字去掉引號,否則寫入excel報錯%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:length(mcontent)
mcontent1(i)=mcontent{i};
end
mcontent1=mcontent1';
%%%%%%%%%%%%%%%%%%%%%%%%%下面這段程式是將時間、發言人、聊天內容彙總,寫入excel中%%%%%
ultimate=[mtime,ourname,mcontent1];
xlswrite('lovemore1.xlsx',ultimate);
%UNIX時間戳轉換成標準時間,北京時間需要加8小時,也就是8*3600秒
function [ date ] = dateconvert(x)
for i=1:length(x)
date{i}=datestr(datetime(x(i)+8*3600, 'ConvertFrom', 'posixtime' ));
end
end
然後,就可以搞定啦,如果嫌最終的excel開啟還是慢,你可以用excel匯出到txt也行啊。
---------------------------------下面是蘋果的-----------------------------------------------------------------------
一、工具準備
1、iTunes
2、pp助手
3、加密資料庫DB檔案開啟工具:sqlcipher.exe(下載連結:微雲分享)
4、Excel
5、MATLAB(可選)
二、獲取資料庫db檔案
蘋果的db檔案沒有加密,所以只要找到db檔案即可用sqlcipher開啟。
我們開始!
1、iTunes備份手機
如下圖,手機連結電腦,備份即可。
2、PP助手匯出備份
電腦安裝pp助手,手機連結PP助手,點選備份還原,找到iTunes備份資料夾,如下圖:輸入AppDomain-com.tencent.xin:/,即可看到,將Documents資料夾拷貝到電腦即可。
然後,我們開啟Documents資料夾,找到如下圖所示的fts_message.db就是要的聊天記錄資料庫。
然後,我們直接用sqlcipher開啟,如下所示:
蘋果的和安卓不一樣,蘋果將你與某個人的對話放到各自的table裡,所以直接匯出csv即可。
但是隻有建立時間和聊天內容,誰傳送的訊息沒找到。。。
程式也簡單多了,如下:
clc;
clear all;
[FileName,PathName] = uigetfile('*.csv','選擇匯出的資料庫csv檔案');
file = fullfile(PathName,FileName);
[num,txt,raw]=xlsread(file);
% clearvars -except num txt raw
mtime=dateconvert(num(:,4))';
mcontent1=txt(2:end,5);
ultimate=[mtime,mcontent1];
xlswrite('ILoveYouForever.xlsx',ultimate);
%UNIX時間戳轉換成標準時間,北京時間需要加8小時,也就是8*3600秒
function [ date ] = dateconvert(x)
for i=1:length(x)
date{i}=datestr(datetime(x(i)+8*3600, 'ConvertFrom', 'posixtime' ));
end
end
匯出的excel如下:
------------------------------------------------------------------------
from 微信公眾號:萬能搜吧 (每天來點精簡的分享)
------------------------------------------------------------------------