1. 程式人生 > >【matlab】記一次微信聊天文字記錄匯出到Excel工作

【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號

,選擇加密方式32位小,取MD5碼前七位即為密碼。

所以,我們只需要知道手機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 微信公眾號:萬能搜吧 (每天來點精簡的分享)

------------------------------------------------------------------------