腾讯QQ(统一简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与移动通讯终端等多种通讯方式相连。1999年2月,腾讯正式推出第一个即时通信软件——“腾讯QQ”,QQ在线用户由1999年的2人(2人指马化腾和张志东)到现在已经发展到上亿用户,在线人数超过一亿,是中国目前使用最广泛的聊天软件之一。从我接触最早的QQ2002版本到现在,目睹了tx n次变革,其间协议也是变化较大,随着用户量的增加,qq协议越来越勾起开发者的兴趣,从今天开始,我将开始分析QQ2013版本协议,敬请感兴趣的同行关注,笔者所有分析均来自于黑盒分析,不涉及法律问题,另外技术仅作学习之用,请勿用做非法用途。
工欲善其事,必先利其器,开门见山,先上法宝!
分析QQ协议需要的工具并不多,只需要一个smartsniff、一个解密工具、和一个编辑器足以。
最好按以下图片配置,省却了你很多麻烦
QQcrypter 自己搜索吧,很多,主要是包含了一组解密工具,可以用来解密qq的很多加密数据。
编辑器就用word吧,简单、来的快。
另外,文章主要是以UDP协议来分析的,请在登陆窗口设置如下。
好吧为了方便某些懒人,我好人做到底,我把smartsniff的配置文件也贴出来,以便与你们复制粘贴,以下内容为smsniff.cfg
[General]
ShowGridLines=1
ShowInfoTip=1
SaveFilterIndex=4
SaveSteamsFilterIndex=2
ResolveIPAddr=1
AddExportHeaderLine=1
DecompressHTTP=1
UseDnsQueriesForHostNames=1
MarkOddEvenRows=0
TrayIcon=0
CaptureOnProgramStart=0
GetProcessInfo=1
StatOnly=0
SummaryMode=0
LiveMode=1
LiveModeDisplayContent=1
SplitLoc=16280
PromiscuousMode=0
CaptureMethod=1
PCapAdapterName=
NetMonAdapterName=
NetMon3AdapterName=
AdapterName={ADB5CAC4-3727-4139-B125-E51198B811AD}
DisplayHighChars=0
DisplayMode=3
HexDumpCharsPerLine=16
HexDumpCharsSpc=8
HexDumpDisplayChars=0
HexDumpDisplayCounter=0
HexDumpMaxSize=100
MaxDataSizeDisplay=1000
DisplayTCP=1
DisplayUDP=1
DisplayICMP=1
DisplayCaptureTime=1
ShowOutgoingIncoming=1
ForeColorLocal=16711680
ForeColorRemote=16711872
ForeColorTime=16760832
AutoModeCharsToCheck=64
NonDisplayChar=.
AutoLiveModeScroll=1
ShowOnlyActiveConnections=0
HideLowerPane=0
HttpExtractOptions.Folder=
CaptureFilter=69 6E 63 6C 75 64 65 3A 72 65 6D 6F 74 65 3A 75 64 70 3A 38 30 30 30 00
DisplayFilter=00
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 02 04 00 00 34 01 00 00 90 06 00 00 F5 02 00 00
Columns=24 00 00 00 4E 00 01 00 87 00 02 00 D7 00 03 00 3C 00 04 00 3C 00 05 00 3C 00 06 00 8F 00 07 00 3C 00 08 00 69 00 09 00 62 00 0A 00 30 00 0B 00 3C 00 0C 00 3C 00 0D 00 54 00 0E 00 3E 00 0F 00 31 00 10 00 48 00 11 00 3C 00 12 00 58 00 13 00 58 00 14 00 47 00 15 00 47 00 16 00
Sort=13
ShowGridLines=1
ShowInfoTip=1
SaveFilterIndex=4
SaveSteamsFilterIndex=2
ResolveIPAddr=1
AddExportHeaderLine=1
DecompressHTTP=1
UseDnsQueriesForHostNames=1
MarkOddEvenRows=0
TrayIcon=0
CaptureOnProgramStart=0
GetProcessInfo=1
StatOnly=0
SummaryMode=0
LiveMode=1
LiveModeDisplayContent=1
SplitLoc=16280
PromiscuousMode=0
CaptureMethod=1
PCapAdapterName=
NetMonAdapterName=
NetMon3AdapterName=
AdapterName={ADB5CAC4-3727-4139-B125-E51198B811AD}
DisplayHighChars=0
DisplayMode=3
HexDumpCharsPerLine=16
HexDumpCharsSpc=8
HexDumpDisplayChars=0
HexDumpDisplayCounter=0
HexDumpMaxSize=100
MaxDataSizeDisplay=1000
DisplayTCP=1
DisplayUDP=1
DisplayICMP=1
DisplayCaptureTime=1
ShowOutgoingIncoming=1
ForeColorLocal=16711680
ForeColorRemote=16711872
ForeColorTime=16760832
AutoModeCharsToCheck=64
NonDisplayChar=.
AutoLiveModeScroll=1
ShowOnlyActiveConnections=0
HideLowerPane=0
HttpExtractOptions.Folder=
CaptureFilter=69 6E 63 6C 75 64 65 3A 72 65 6D 6F 74 65 3A 75 64 70 3A 38 30 30 30 00
DisplayFilter=00
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 02 04 00 00 34 01 00 00 90 06 00 00 F5 02 00 00
Columns=24 00 00 00 4E 00 01 00 87 00 02 00 D7 00 03 00 3C 00 04 00 3C 00 05 00 3C 00 06 00 8F 00 07 00 3C 00 08 00 69 00 09 00 62 00 0A 00 30 00 0B 00 3C 00 0C 00 3C 00 0D 00 54 00 0E 00 3E 00 0F 00 31 00 10 00 48 00 11 00 3C 00 12 00 58 00 13 00 58 00 14 00 47 00 15 00 47 00 16 00
Sort=13