Android微信資料匯出

2021-09-06 22:22:26 字數 3280 閱讀 4473

在nexus 5(android 4.4)+wechat 5.4,和nexus 5(android 5.0)+wechat 6.0上測試可用。

若沒有root,則/data/data/com.tencent.mm下多數目錄都不可讀,可以使用下面的方法:

imei:在撥號盤輸入*#06#獲取imei,或者開啟「usb除錯」後使用adb shell dumpsys iphonesubinfo得到15個十進位制數字組成的imei。網上查到有些機型可能使用不同於imei的其他字段用於生成金鑰。

把上面兩步得到的imeiuin拼接起來計算md5。執行echo -n "$imei$uin" | md5sum | cut -c -7獲取sqlcipher使用的加密金鑰,下面用abcdefg指代。

執行sqlcipher enmicromsg.db,輸入:

1

2

3

4

5

pragma key='abcdefg';

pragma cipher_use_hmac = off;

attach database "decrypted_database.db" as decrypted_database key "";

select sqlcipher_export("decrypted_database");

detach database decrypted_database;

解密得到可用sqlite3開啟的decrypted_database.db

注意,sqlcipher不同版本使用的加密方式不同,我嘗試使用3.8.4.3版本開啟資料庫檔案,得到如下錯誤資訊:

1

2

3

sqlite> pragma

key='abcdefg';

sqlite> .schema

error: file is encrypted or is not a database

1

2

3

4

5

6

7

# /tmp/sqlcipher_2.1.1-2_amd64.deb

# /tmp/libsqlcipher0_2.1.1-2_amd64.deb

cd /tmp

# get /tmp/usr/bin/sqlcipher

ar x sqlcipher_2.

1.1-2_amd64.deb && tar xf data.tar.gz --no-overwrite-dir

# get /tmp/usr/lib/x86_64-linux-gnu/libsqlcipher.so.0.8.6

ar x libsqlcipher0_2.

1.1-2_amd64.deb && tar xf data.tar.gz --no-overwrite-dir

解壓後執行:

1

cd /tmp/usr && ld_library_path=lib/x86_64-linux-gnu bin/sqlcipher /tmp/enmicromsg.db

message表儲存訊息。目前了解到從fmessage_conversationrcontactchatroom表中可以得到一些聯絡人和聊天室的資訊。

暫時使用乙個比較粗糙的ruby指令碼匯出資訊,需要先gem install sqlite3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

require 'sqlite3'

begin

talker2name = {}

username2name = {}

db =

sqlite3::database.open '/tmp/decrypted_database.db'

db.results_as_hash =

true

db.execute(

'select talker,displayname from fmessage_conversation').each

db.execute(

'select username,nickname from rcontact').each

db.execute(

'select createtime,talker,content from message').each : " }

end#next if content =~ /^~semi_xml~|

next if content =~ /^~semi_xml~/

name = talker2name.fetch talker, talker

puts

"#\t#\t#"

}rescue sqlite3::exception => e

puts e

ensure

db.close

if db

end

android微信支付

1,開啟 3,示例 發布使用的簽名正確的話取消和成功都能正確通知.2,測試時使用weixindemo中的debug keystore 3,需要注意應用要通過審核,並且幾個key值正確 商家向財付通申請的商家id 第一步,獲取accesstoken,accesstoken值第二步要用 private ...

android微信支付

builder.settitle 提示 builder.show 現在說一下支付結果返回 1的問題,這個問題真是糾結了好久啊,如果你是按照上面的步驟來的話還出現 1的話,原因只有兩個 1.可能是後台返回給你的引數不正確導致支付失敗,後台調起預支付介面的時候要注意中文亂碼問題,二是注意總金額是int型...

android微信支付

post請求的使用場景 信開發平台建立時需要 簽名,包名,圖示 其中需要2個圖示 數字摘要 是指通過演算法將長資料變為短資料,通常用來標識資料的唯一性,是否被修改,常用的 md5由於具有不可逆性,也被用來作為密碼加密,並且通常情況下為了讓加密過程變的不可 我們會進行加鹽操作,如下 sha1也不可逆,...