欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]android qq明文解析

[原创]android qq明文解析

之前是hook的java层的encoderequest函数,但是这里面入参太多,不知道最终组包是如何进行的也,这篇先看一下腾讯的tea算法加解密前后数据是什么样子的。

通过peid的插件krypto analyzer分析qq的so文件,找到libcoderwrapperV2。里面使用了tea算法,


 ???

故我们只要hook这个函数里面的函数就好,放到IDA中,连函数名都没有隐藏:


? ???

猜测这里的TeaEncryptECB就是加密,另一个就是解密了,参数感觉第一个和第二个一个是明文,一个是密钥,第三个应该就是最终输出的密文了。后面就开始写frida代码了:

frida直接用pip install frida==12.0.3即可安装,这里注意frida是针对特定python版本的,如果你的版本号和frida对应不上的话,会报错:

 import _frida

ImportError: DLL load failed: 找不到指定的模块。

我这里是python3.6.5的

还下载了:frida-tools==1.0.0

然后上https://github.com/frida/frida/releases下载对应的android版本的frida-server类似IDA,我这里使用的nexus 6p,下载的就是


然后push到安卓测试机里,修改权限后跑起来。

chmod 777 frida-server-12.2.30-android-arm64

./frida-server-12.2.30-android-arm64


我们先看一下连上了没:

C:\Users\liuti>frida-ps -U

  PID  Name

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

 3896  ATFWD-daemon

 5934  adbd

 3907  android.hardware.biometrics.fingerprint@2.1-service

  411  android.hardware.configstore@1.0-service

  412  android.hardware.graphics.allocator@2.0-service

  413  android.hardware.usb@1.0-service

  414  android.hardware.wifi@1.0-service

  410  android.hidl.allocator@1.0-service

10561  android.process.acore

 6127  android.process.media

 3814  audioserver

 3815  cameraserver

 3888  cnd

 6018  com.android.nfc

 5703  com.android.phone

 5552  com.android.systemui

 7852  com.android.vending

10616  com.google.android.apps.gcs

 8209  com.google.android.apps.messaging:rcs

 8250  com.google.android.apps.photos

 8284  com.google.android.apps.turbo:aab

10744  com.google.android.apps.walletnfcrel

11150  com.google.android.contacts

 6527  com.google.android.gms

 5952  com.google.android.gms.persistent

11190  com.google.android.gms.ui

 8724  com.google.android.gms.unstable

 6104  com.google.android.googlequicksearchbox

 5989  com.google.android.googlequicksearchbox:interactor

 6216  com.google.android.googlequicksearchbox:search

 8681  com.google.android.ims

11067  com.google.android.videos

10876  com.google.android.youtube

 6066  com.google.process.gapps

10540  com.google.process.gapps

 9343  com.huawei.sarcontrolservice

 9379  com.qualcomm.qcrilmsgtunnel

 9363  com.qualcomm.telephony

 6005  com.quicinc.cne.CNEService

 6243  com.sohu.inputmethod.sogou

 9755  com.tencent.mm

 6570  com.tencent.mm:push

 9834  com.tencent.mobileqq

 6628  com.tencent.mobileqq:MSF

 6841  com.wandoujia.phoenix2

 6917  com.wandoujia.phoenix2:aid

 7247  com.wandoujia.phoenix2:channel

 9980  com.whatsapp

 8226  daemonsu:0

 8232  daemonsu:0:8223

 9314  daemonsu:0:8668

左边是进程号,右边是进程名,-U是usb的意思。因为这里我是用的调试真机。然后这里qq的聊天消息时6628进程,com.tencent.mobileqq:MSF。后面我们hook这个进程即可。

这里虽然TeaEncryptECB是导出函数应该,但是不知道腾讯用了什么方式,hook不到,我用IDA跟进去,这段代码也没有被认为是函数,只能通过基址加偏移的方式来Hook了,先进去看看so库的基址:

angler:/ # cat proc/6628/maps |grep libcodec

cd646000-cd68d000 r-xp 00000000 fd:00 1721364                            /data/app/com.tencent.mobileqq-1f7mpIqT9_JQi9fNMEP5fQ==/lib/arm/libcodecwrapperV2.so

cd68d000-cd68e000 r--p 00046000 fd:00 1721364                            /data/app/com.tencent.mobileqq-1f7mpIqT9_JQi9fNMEP5fQ==/lib/arm/libcodecwrapperV2.so

cd68e000-cd690000 rw-p 00047000 fd:00 1721364                            /data/app/com.tencent.mobileqq-1f7mpIqT9_JQi9fNMEP5fQ==/lib/arm/libcodecwrapperV2.so

angler:/ #

这里cd646000就是so的基址,然后再找偏移:


 ?  ???

偏移为0x00038E30

参数如下:

 ??? 

?

所以最终我们要hook的地址就是:0xcd646000 + 0x00038E30 = CD67EE30。看四哥的博客说这里最后因为thumb和arm指令的区别,最后还得加1,变为CD67EE31。

这里地址也可以直接通过代码获取:

var codecwraperAddr = Process.findModuleByName("libcodecwrapperV2.so").base.add(0x38e31);

而后编写js的hook代码:

var codecwraperAddr = Process.findModuleByName("libcodecwrapperV2.so").base.add(0x38e31);

var nativePointer = new NativePointer(codecwraperAddr);

send("net native pointers:" + nativePointer);

var result_pointer;

Interceptor.attach(nativePointer,{

	onEnter:function(args){

		result_pointer = args[2].toInt32();

		send("Teacrypt so args: " + Memory.readByteArray(args[0]) + " arg2 = " + Memory.readByteArray(args[1]);

	},

	onLeave:function(retval){

		var resultPointer = new NativePointer(result_pointer);

		var arybuffer = Memory.readByteArray(resultPointer);

		var intary = new Uint32Array(arybuffer);

		var resultstr = "";

		for(var i = 0;i<intary.length;i++){

			send("hex: " + intary[i].toString());

			resultstr = resultstr + revertHex(intary[i].toString());

		}

		send("Teacrypt so result: " + resultPointer + ", result: " + resultstr);

	}

}

一顿操作写完,程序跑起来,qq崩了。。崩了。。。

应该是使用了反hook吧,不知如何解决,到知识星球提问,有前辈给了建议:


 ???

?

那就都研究一下吧。不过领导要求年前要有明文数据,来不及看这个了。。留个白

。。。。。。。

直接IDA分析入手:


 ???

?


这里IDA分析不出这个TEA算法的加密函数,需要通过上述手动计算函数地址:


 ???

?

libcodecwrapper基址加上0x38E30的偏移获得,这里我没有+1反正。然后跳转到函数开头,发现并没有被认为是函数:


 ???

?

按 C将当前段理解为代码段。然后在函数开始下断点:


 ???

?

发送消息,此时断下来后,看到r1寄存器指向了一个16字节的可见字符串,猜测这里就是密钥了。


 ???

?

而后通过网上很多的qq解密工具,输入抓到的密文,IDA跟到的字符串进行解密,即可得到加密前的明文数据:

比如这里:(和上次不是同一次调试了,上述的那次没有抓包。。每次连接上之后密钥是不会变得)

我们得到的报文是:


 ???

?

这里开头部分是报文长度,报文组包格式,qq号,然后才是加密内容,即从85 fc开始,才是加密后的数据,从这里开始解密。

从IDA中得到的密钥是:


 ???

?

这里可以解密,得到明文数据是:


 ???

?

这里有一个知识点就是,明文和密文的长度关系,开始以为是明文直接补齐到8的长度,比如2个字节,直接补6个字节变成8个字节,后来发现怎么都对不上号,后来发现TEA算法的这个补齐还是比较奇异的,参考了https://blog.csdn.net/mingzznet/article/details/46906933,也看了qq的代码:

 ??? 

?

了解到他是先加10位在补到8的倍数的,而且补齐的时候用到了一个随机数,这就导致了同样的明文和密钥,可以加密成不一样的密文。还有长度也是比如2个字节,

(2 + 10 + 4 )%8 = 0;所以最终会加密成16个字节的长度。

具体的填充方法:第一个字节为:(random()&0xf8)|n,随后填充(n+2)个字节random()&0xff ,后面接原始数据,最后填充7 个字节0x00 。n就是上面那个4,待填充长度。

比如待加密数据是:0x22,0x33,随机数就取0xad吧:

第一位:(0xad&0xf8)|0x04 = 0xac

随后填充4 + 2 个随机数:0xad

加上原来的明文:0x22,0x33

最后补7个0x00

最终得到明文:ac ad ad ad ad ad ad 22 33 00 00 00 00 00 00 00

解密的时候,得到最终的明文,通过运算可以得到哪些位是填充的,直接过滤掉即可得到真正的原始数据。

这个填充方式解除了我对分析明文和密文长度的困惑。之前理解的直接补齐到8的倍数是有问题的,直接补齐的话,解密的时候怎么知道到底是多少位源数据呢,所以腾讯采用了上述补齐的方式。

后面这个jcestruct的序列化内容就得年后再来看了,

也留个白,会解出来的,猜测java的话就是调用的下图中的序列化类吧,基类就是jcestruct,然后继承之后通过子类实现各自的功能。



后面几天先看看之前的hook怎么让他跑起来吧

同理可得整个链路中所有消息的明文,这里留一下大概看的几个报文吧:

秘钥:

[stack:12207]:CC173F91 DCB 0x70 ; p

[stack:12207]:CC173F91 DCB 0x4D ; M

[stack:12207]:CC173F92 DCB 0x28 ; (

[stack:12207]:CC173F93 DCB 0x7D ; }

[stack:12207]:CC173F94 DCB 0x36 ; 6

[stack:12207]:CC173F95 DCB 0x47 ; G

[stack:12207]:CC173F96 DCB 0x2D ; -

[stack:12207]:CC173F97 DCB 0x7E ; ~

[stack:12207]:CC173F98 DCB 0x3D ; =

[stack:12207]:CC173F99 DCB 0x60 ; `

[stack:12207]:CC173F9A DCB 0x68 ; h

[stack:12207]:CC173F9B DCB 0x2E ; .

[stack:12207]:CC173F9C DCB 0x64 ; d

[stack:12207]:CC173F9D DCB 0x59 ; Y

[stack:12207]:CC173F9E DCB 0x64 ; d

[stack:12207]:CC173F9F DCB 0x51 ; Q

发送密文:

85 fc 34 cc 5f da 38 f4 65 0b 92 a6 5c 48 90 07 

30 cf 00 87 5f c5 35 e4 89 86 ec 92 2f b5 72 a0 

5e 0d 56 5e 7c dd 9f 41 b5 b8 33 5c 2e b8 48 9d 

db 55 cd 6b 05 ee d1 14 8d d0 9f 95 c1 e7 d2 f3 

1f b8 e1 39 d1 90 6d 55 f2 b0 10 68 17 01 51 91 

ee 90 b2 d5 93 1d 21 4c c1 c0 ea 1d a2 aa 84 e3 

7a fe 21 ef 5e f0 29 7d 4d 0f 34 f1 2c d9 72 c8 

18 0a a0 3f aa 81 49 38 72 3f 2b bf aa 04 b9 3d 

90 71 fa ed ee c0 79 98 8d 09 4f 46 ff bf 69 72 

27 5c ee e7 a8 c2 c7 7b ca f5 aa fc c6 02 a9 b9

明文:

00 00 00 28 00 00 00 18 4D 65 73 73 61 67 65 53 

76 63 2E 50 62 53 65 6E 64 4D 73 67 00 00 00 08 

47 AA 6A 0A 00 00 00 04 00 00 00 6A 0A 08 0A 06 

08 8C C4 CD F5 01 12 06 08 01 10 00 18 00 1A 1E 

0A 1C 12 07 0A 05 0A 03 31 31 31 12 11 AA 02 0E 

88 01 00 9A 01 08 78 00 F8 01 00 C8 02 00 20 B1 

FF 03 28 A0 EB E0 F4 04 32 26 08 CB EA BE E2 05 

10 CB EA BE E2 05 28 89 AA E5 FC 03 48 82 94 9A 

AA 08 58 A3 B8 84 E2 08 68 CB EA BE E2 05 70 00 

40 01

00 00 00 28   //包头长度

00 00 00 18   //serviceCmd 长度 +4 包含自身 

4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 // MessageSvc.PbSendMsg

00 00 00 08     //msgcookies长度 + 4

47 AA 6A 0A     //msgcookies

00 00 00 04     //包体长度的长度

00 00 00 6A     //包体长度

一下需要反序列化处理了

0A 08 0A 06 08 8C C4 CD F5 01 12 06 08 01 10 00 

18 00 1A 1E 0A 1C 12 07 0A 05 0A 

03 //发送消息长度

31 31 31 //消息明文内容

12 11 AA 02 0E 88 01 00 9A 01 08 78 00 F8 01 00 C8 

02 00 20 B1 FF 03 28 A0 EB E0 F4 04 32 26 08 CB 

EA BE E2 05 10 CB EA BE E2 05 28 89 AA E5 FC 03 

48 82 94 9A AA 08 58 A3 B8 84 E2 08 68 CB EA BE 

E2 05 70 00 40 01

发送密文2:

AF 8C 23 31 A1 89 A4 D0 D6 B6 BD CC 83 7C D3 62 

B4 C0 8E 22 A8 6D 67 52 10 FF 40 ED BB E2 BC 94 

CD 39 45 49 95 B4 BA 35 15 3C 21 F0 4F 36 B9 B1 

B7 BB 20 F5 22 24 4A 78 B5 7F 69 73 E2 98 A3 FB 

8E 4D 02 D1 FC CA FC C4 56 43 04 5F 81 48 D6 2D 

A6 9C C3 A3 EE 95 18 39 F5 B3 3D 6A C7 E3 12 74 

F4 28 73 7D 75 C0 B2 3E CA 29 62 1D 89 F3 E5 F8 

A5 13 6C DA 09 53 E9 9C B2 A3 2F 85 7E A1 C7 60 

04 FD 47 1D F2 E6 E5 BB F6 F7 38 3A 44 26 52 81 

A9 0D A6 E4 DC 46 E1 E2 42 A2 A0 B3 3F 9B DE 18 

af8c2331a189a4d0d6b6bdcc837cd362b4c08e22a86d675210ff40edbbe2bc94cd39454995b4ba35153c21f04f36b9b1b7bb20f522244a78b57f6973e298a3fb8e4d02d1fccafcc45643045f8148d62da69cc3a3ee951839f5b33d6ac7e31274f428737d75c0b23eca29621d89f3e5f8a5136cda0953e99cb2a32f857ea1c76004fd471df2e6e5bbf6f7383a44265281a90da6e4dc46e1e242a2a0b33f9bde18

发送明文2:

00 00 00 28   //包头长度

00 00 00 18   //serviceCmd 长度 +4 包含自身 

4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 // MessageSvc.PbSendMsg

00 00 00 08     //msgcookies长度 + 4

47 AA 6A 0A     //msgcookies

00 00 00 04     //包体长度的长度

00 00 00 6E     //包体长度

0A 08 0A 06 08 8C C4 CD F5 01 12 06 08 01 10 00 

18 00 1A 22 0A 20 12 0B 0A 09 0A 

07 //消息长度

32 33 32 32 32 32 32 //消息内容

12 11 AA 02 0E 88 01 00 9A 01 08 78 00 

F8 01 00 C8 02 00 20 BE FF 03 28 D3 8E BD D4 05 

32 26 08 CB EA BE E2 05 10 CB EA BE E2 05 28 89 

AA E5 FC 03 48 82 94 9A AA 08 58 A3 B8 84 E2 08 

68 CB EA BE E2 05 70 00 40 01

响应明文:

00 00 00 34 

00 01 40 5B 

00 00 00 00 00 00 00 04 

00 00 00 18 

4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 

00 00 00 08 

47 AA 6A 0A 

00 00 00 00 00 00 00 0C 08 00 18 82 EB BE E2 05

响应密文:

1

ea d6 81 10 6c 7c 6a 6e 3c 3a 04 12 a2 e8 90 88 

f0 20 b9 67 54 9b b2 4e d4 d6 e5 ee 0e b4 a3 5a 

0f e6 9e b8 46 ba 1b 0c c2 d3 ee b3 38 3b 1e 50 

17 94 9f 91 a6 4f 23 c1 df 7d 0e 4b ca fe b6 b0 

63 13 91 39 88 37 cc 25 c7 7b e5 35 80 a6 ab 75

2

F2 66 CE 56 A5 B2 FA D0 20 5B DC C5 75 A8 47 F6 

A4 00 59 91 13 25 DA 0A 81 F4 D4 D6 6F 8A 50 2A 

25 21 95 C4 A8 94 F5 7F EF 4B 34 B2 CB 84 6F 13 

F7 55 56 3B 7E 37 C2 D6 EB C1 5E DD 64 6D 74 7E 

47 1D A7 9E 41 04 F7 3C 54 0F B0 E9 E1 B2 EE BB

53 1B 38 99 2D 7E 72 5E 40 3E E5 E5 A0 8E AF 23 

BF A9 E8 98 24 97 AC C8 CA 2C 7F CF 2F 38 2E 35 

82 37 8D 27 E4 91 1E EF 42 06 A1 FF 64 1F FA 85 

9D 2A F8 0B A7 A2 5B D1 93 C4 60 89 39 A7 45 45 

58 AF 26 79 EF F0 A6 D4 55 9F 3B B6 FF 75 FD D5 

59 EF FB 08 57 A1 95 4C

响应明文:

1

00 00 00 34 00 01 40 26 00 00 00 00 00 00 00 04 

00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 

62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 

00 00 00 00 00 00 00 0C 08 00 18 F2 EA BE E2 05

D3 82 35 CE 27 8E E1 8D 4C 80 78 73 5E DA C0 F9 

E5 49 51 21 97 0A A5 22 B1 12 08 26 B8 3E 38 64 

2E E2 DC A1 12 46 95 F5 34 01 05 A6 6A BF AE 31 

37 8F BB E6 01 83 46 D0 78 2F 3B B4 4B 61 7B B9 

14 39 4E 16 16 1A 35 B6

00 00 00 34   //包头长度

00 01 40 26   //序列号,每次加4

00 00 00 00 00 00 00 04 //下面一个长度的长度

00 00 00 18    //接下来字符串长度,包含自己本身

4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 //MessageSvc.PbSendMsg

00 00 00 08 47 AA 6A 0A //00000008表示长度,47 AA 6A 0A 表示msgcookies,和发送的对应。

00 00 00 00 00 00 00 0C 08 00 18 F2 EA BE E2 05

2~4,连续的3个响应报文

00 00 00 34 00 01 40 5B 00 00 00 00 00 00 00 04 

00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 

62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 

00 00 00 00 00 00 00 0C 08 00 18 82 EB BE E2 05

00 00 00 34 00 01 40 60 00 00 00 00 00 00 00 04 

00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 

62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 

00 00 00 00 00 00 00 0C 08 00 18 84 EB BE E2 05

00 00 00 34 00 01 40 64 00 00 00 00 00 00 00 04 

00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 

62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 

00 00 00 00 00 00 00 0C 08 00 18 86 EB BE E2 05

接收密文:

B1 9D 4E 67 82 29 7D D0 E2 17 BA 7D 26 40 2E 2F 

57 FB CA DF CA 98 3E 34 D7 6C 2E 56 B6 4D 72 8C 

59 88 75 28 16 60 C0 D3 6B 58 B2 BB 62 13 79 47 

E9 8B C1 BD FE AB A0 F7 E3 39 69 9A 16 02 A9 68 

4C 60 AC 3A F0 EB 00 F7 52 73 D8 78 00 46 41 E2 

DD 9F B5 12 36 3A BC E9 F6 69 C7 FC 72 07 95 73 

A4 A7 26 CA 43 DA 80 47 EF 83 72 BB A6 65 35 C2 

2B 8A E1 8D BD F1 38 49 1F D7 73 01 36 CB 2B 5A 

FF AF 0E 2E D6 AA 48 40 E8 B7 D6 14 73 FC 3A 68 

8A B7 33 B9 BC 70 D9 B3 11 65 0D 1B 6A 3C A1 25 

C1 65 6B 88 D3 1D 98 80 72 51 15 05 D8 FF CB 7A 

25 4D 99 7C 52 87 82 40 05 37 DC 9D 58 D0 7A 01 

76 CA 27 AD 58 B4 E7 D9 5C 07 4F 87 EE 39 94 87 

DF B3 6C 12 3F 31 9B 96 A1 C8 D1 E3 18 21 1A 84 

8C E6 BA E7 52 DC AA 37 6F F5 71 FA 75 AE 3E 9A 

88 61 F4 9B EE 0E 26 67 01 64 3B B2 3F 69 78 2B 

B0 DD B9 8D 06 23 1D 6D E4 B5 B9 C8 23 23 5D 22 

33 10 7E 06 61 CA 17 53 

接收明文:

00 00 00 40 D0 2F A9 2A 00 00 00 00 00 00 00 04 

00 00 00 19 4D 65 73 73 61 67 65 53 76 63 2E 50 

75 73 68 4E 6F 74 69 66 79 00 00 00 08 47 AA 6A 

0A 00 00 00 00 00 00 00 0B 30 BE BE CE BC 89 2D 

00 00 00 CC 00 00 00 C8 10 02 2C 3C 4C 56 0A 4D 

65 73 73 61 67 65 53 76 63 66 0A 50 75 73 68 4E 

6F 74 69 66 79 7D 00 01 00 9D 08 00 01 06 0E 72 

65 71 5F 50 75 73 68 4E 6F 74 69 66 79 18 00 01 

06 20 50 75 73 68 4E 6F 74 69 66 79 50 61 63 6B 

2E 52 65 71 75 65 73 74 50 75 73 68 4E 6F 74 69 

66 79 1D 00 00 61 0A 02 7D 30 72 6E 10 01 26 0A 

4D 65 73 73 61 67 65 53 76 63 36 0A 50 75 73 68 

4E 6F 74 69 66 79 4D 00 0C 51 00 A6 6C 7C 8C 9A 

0C 1C 2C 3C 46 00 5C 6D 00 0C 7C 8D 00 0C 9D 00 

0C AC B0 01 C9 0C DA 06 00 16 00 26 00 36 00 0B 

EC FD 0F 00 0C F6 10 00 F6 11 00 F9 12 0C 0B A6 

00 BD 00 0C CC DC 0B 8C 98 0C A8 0C

接收响应密文:

b0 b7 47 ca 18 ce de 22 40 e6 ac 2e a1 7c 12 00 

1d ea 11 51 a9 e2 d5 51 42 56 19 4a be e1 cd 15 

d1 64 e2 4a fc 19 3d 7b c2 0b e3 2c 2f 42 59 4d 

86 98 19 e5 8d 8f ea 21 90 d5 27 d6 be 9f f9 cf 

f4 5d dc fc 3e c0 6e b4 36 1a e3 ae 20 5b cf 54 

38 f1 90 18 3b ff 12 dc 3a 7c 2a 03 ee 2c 5f 3a 

fd 3e da da a4 45 eb 7c fb ae f9 86 a0 84 25 93 

eb f5 3c 0e fc 8e 59 3f 54 62 cf 3e d5 13 4f 0f 

30 7d 24 31 e5 dd 30 8b 97 be 7b d3 99 5c 9e e1 

6f 30 e2 1a 30 46 b1 18 e9 ed 6c ca 33 90 a7 09 

99 09 5a 0e 52 08 22 3d 7f 7e ef de 6e a5 75 02 

0d 9e c8 83 ed f8 3f 0d 7e 5b 2d a4 59 df 39 12 

76 12 1e 1c 8e dd 67 21 74 f0 dd f9 d6 fe ae 56

00 00 00 83 

00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 

00 00 00 08 47 AA 6A 0A 

00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 

3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 

76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 

61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 

36 32 33 2E 30 31 31 18 A3 9D CE BC 89 2D 20 A7 

9D CE BC 89 2D 28 A1 9D CE BC 89 2D 30 BE BE CE 

BC 89 2D 00 00 00 3C 08 00 12 26 08 CB EA BE E2 

05 10 CB EA BE E2 05 28 89 AA E5 FC 03 48 82 94 

9A AA 08 58 A3 B8 84 E2 08 68 CB EA BE E2 05 70 

00 18 00 20 14 28 03 30 01 38 01 48 00 62 00

接收响应明文:

00 00 00 83 

00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 //MessageSvc.PbGetMsg

00 00 00 08 47 AA 6A 0A 

00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 

3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 

76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 

61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 

36 32 33 2E 30 31 31 18 A3 9D CE BC 89 2D 20 A7 

9D CE BC 89 2D 28 A1 9D CE BC 89 2D 30 BE BE CE 

BC 89 2D 00 00 00 3C 08 00 12 26 08 CB EA BE E2 

05 10 CB EA BE E2 05 28 89 AA E5 FC 03 48 82 94 

9A AA 08 58 A3 B8 84 E2 08 68 CB EA BE E2 05 70 

00 18 00 20 14 28 03 30 01 38 01 48 00 62 00

00 00 00 83 

00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 

00 00 00 08 47 AA 6A 0A 

00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 

3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 

76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 

61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 

36 32 33 2E 30 31 31 18 AF B5 CE BC 89 2D 20 B4 

B5 CE BC 89 2D 28 AA B5 CE BC 89 2D 30 DB D6 CE 

BC 89 2D 00 00 00 3B 08 00 12 25 08 FF 86 BF E2 

05 10 FF 86 BF E2 05 28 8A D4 97 94 0E 48 A7 A1 

C5 37 58 FB D7 DB BE 26 68 FF 86 BF E2 05 70 00 

18 00 20 14 28 03 30 01 38 01 48 00 62 00

00 00 00 83 00 00 00 17 

4D 65 73 73 61 67 65 53 

76 63 2E 50 62 47 65 74 

4D 73 67 00 00 00 08 47 

AA 6A 0A 00 00 00 60 08 

00 12 3C 6D 6F 64 65 6C 

3A 4E 65 78 75 73 20 36 

50 3B 6F 73 3A 32 36 3B 

76 65 72 73 69 6F 6E 3A 

76 32 6D 61 6E 3A 48 75 

61 77 65 69 73 79 73 3A 

4F 50 52 35 2E 31 37 30 

36 32 33 2E 30 31 31 18 

AF B5 CE BC 89 2D 20 B4 

B5 CE BC 89 2D 28 AA B5 

CE BC 89 2D 30 DB D6 CE 

BC 89 2D 00 00 00 3B 08 

00 12 25 08 FF 86 BF E2 

05 10 FF 86 BF E2 05 28 

8A D4 97 94 0E 48 A7 A1 

C5 37 58 FB D7 DB BE 26 

68 FF 86 BF E2 05 70 00 

18 00 20 14 28 03 30 01 

38 01 48 00 62 00

接收响应密文:

00 00 00 83 00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 00 00 00 08 47 AA 6A 0A 00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 36 32 33 2E 30 31 31 18 AF B5 CE BC 89 2D 20 B4 B5 CE BC 89 2D 28 AA B5 CE BC 89 2D 30 DB D6 CE BC 89 2D 00 00 00 3B 08 00 12 25 08 FF 86 BF E2 05 10 FF 86 BF E2 05 28 8A D4 97 94 0E 48 A7 A1 C5 37 58 FB D7 DB BE 26 68 FF 86 BF E2 05 70 00 18 00 20 14 28 03 30 01 38 01 48 00 62 00

用上面这个很快就能看出来了。

再贴个解密qq用到的工具吧:

https://pan.baidu.com/s/1HruT2x3YMnc3SEy_clONkA 

提取码:f88u 

csdn地址:

https://blog.csdn.net/liutianheng654/article/details/86641410



这次图片应该传上来了吧。。
附件是抓到的报文和解密工具

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功