2011-06-13 魔兽世界3.3.5 13930登录数据包分析
官方的Trinity认证服务器在对3.3.5 13930客户端登陆的时候有问题,下面这个是抓的一个能够正常登陆的私服认证服务器的数据包。 使用工具WPE抓的包,这个也是经常用来做游戏外挂的一个抓包工具。相关的项目是TrinityCore的authserver,之前的一篇Blog有关于如何下载代码的说明。
服务器端口配置情况说明如下 3306 MySQL 3724 认证服务器 10775 客户端与认证服务器通信的端口 10740 认证服务器与MySQL通信的端口
客户端登陆使用用户名passos,认证服务器、MySQL、客户端都在本地运行。数据包记录中加粗的是客户端与认证服务器的相关通信数据包。
1 127.0.0.1:10775 127.0.0.1:3724 40 Recv
0000 00 08 24 00 57 6F 57 00 03 03 05 6A 36 36 38 78 ..$.WoW....j668x
0010 00 6E 69 57 00 4E 43 68 7A E0 01 00 00 7F 00 00 .niW.NChz.......
0020 01 06 50 41 53 53 4F 53 ..PASSOS认证服务器接收到客户端发来的来源ip地址和用户名,以及客户端的一些信息 报文结构在AuthSocket.h的sAuthLogonChallenge_C,处理过程位于AuthSocket.cpp的AuthSocket::_HandleLogonChallenge()
2 127.0.0.1:10740 127.0.0.1:3306 51 Send
0000 2F 00 00 00 03 53 45 4C 45 43 54 20 2A 20 46 52 /....SELECT * FR
0010 4F 4D 20 69 70 5F 62 61 6E 6E 65 64 20 57 48 45 OM ip_banned WHE
0020 52 45 20 69 70 20 3D 20 27 31 32 37 2E 30 2E 30 RE ip = '127.0.0
0030 2E 31 27 .1'认证服务器从MySQL中查询客户端ip是否被封
3 127.0.0.1:3306 127.0.0.1:10740 343 Recv
0000 01 00 00 01 05 32 00 00 02 03 64 65 66 06 72 65 .....2....def.re
0010 61 6C 6D 64 09 69 70 5F 62 61 6E 6E 65 64 09 69 almd.ip_banned.i
0020 70 5F 62 61 6E 6E 65 64 02 69 70 02 69 70 0C 21 p_banned.ip.ip.!
0030 00 60 00 00 00 FD 03 40 00 00 00 3C 00 00 03 03 .`.....@...<....
0040 64 65 66 06 72 65 61 6C 6D 64 09 69 70 5F 62 61 def.realmd.ip_ba
0050 6E 6E 65 64 09 69 70 5F 62 61 6E 6E 65 64 07 62 nned.ip_banned.b
0060 61 6E 64 61 74 65 07 62 61 6E 64 61 74 65 0C 3F andate.bandate.?
0070 00 28 00 00 00 08 03 50 00 00 00 40 00 00 04 03 .(.....P...@....
0080 64 65 66 06 72 65 61 6C 6D 64 09 69 70 5F 62 61 def.realmd.ip_ba
0090 6E 6E 65 64 09 69 70 5F 62 61 6E 6E 65 64 09 75 nned.ip_banned.u
00A0 6E 62 61 6E 64 61 74 65 09 75 6E 62 61 6E 64 61 nbandate.unbanda
00B0 74 65 0C 3F 00 28 00 00 00 08 01 10 00 00 00 3E te.?.(.........>
00C0 00 00 05 03 64 65 66 06 72 65 61 6C 6D 64 09 69 ....def.realmd.i
00D0 70 5F 62 61 6E 6E 65 64 09 69 70 5F 62 61 6E 6E p_banned.ip_bann
00E0 65 64 08 62 61 6E 6E 65 64 62 79 08 62 61 6E 6E ed.bannedby.bann
00F0 65 64 62 79 0C 21 00 96 00 00 00 FD 01 00 00 00 edby.!..........
0100 00 40 00 00 06 03 64 65 66 06 72 65 61 6C 6D 64 [email protected]
0110 09 69 70 5F 62 61 6E 6E 65 64 09 69 70 5F 62 61 .ip_banned.ip_ba
0120 6E 6E 65 64 09 62 61 6E 72 65 61 73 6F 6E 09 62 nned.banreason.b
0130 61 6E 72 65 61 73 6F 6E 0C 21 00 FD 02 00 00 FD anreason.!......
0140 01 00 00 00 00 05 00 00 07 FE 00 00 02 00 05 00 ................
0150 00 08 FE 00 00 02 00 .......MySQL返回的数据
4 127.0.0.1:10740 127.0.0.1:3306 83 Send
如果ip封锁已过期,解除封锁。
5 127.0.0.1:3306 127.0.0.1:10740 11 Recv
MySQL返回的数据
6 127.0.0.1:10740 127.0.0.1:3306 159 Send
认证服务器从MySQL数据库中取帐号相关信息
7 127.0.0.1:3306 127.0.0.1:10740 577 Recv
MYSQL返回的数据
8 127.0.0.1:10740 127.0.0.1:3306 78 Send
认证服务器从MySQL查找帐号是否被封
9 127.0.0.1:3306 127.0.0.1:10740 175 Recv
MYSQL返回的数据
10 127.0.0.1:10740 127.0.0.1:3306 98 Send
如果封号过期,取消封号
11 127.0.0.1:3306 127.0.0.1:10740 52 Recv
MYSQL返回的数据
12 127.0.0.1:3724 127.0.0.1:10775 119 Send
返回给客户端的数据,第0个字节是包类型AUTH_LOGON_CHALLENGE, 第1个字节为00,第2个字节为认证结果WOW_SUCCESS为00,第3-6这四个字节是根据auth数据库account中v、s两个字段算出来的一个数值,之后是安全之类的信息。计算过程在AuthSocket.cpp的AuthSocket::_HandleLogonChallenge()中。
13 127.0.0.1:10775 127.0.0.1:3724 75 Recv
客户端发给认证服务器的AUTH_LOGON_PROOF数据,结构定义在AuthSocket.cpp的sAuthLogonProof_C中。有一堆安全方面的计算,不知道Trinity这帮人怎么琢磨出来的。
14 127.0.0.1:3724 127.0.0.1:10775 32 Send
认证服务器返回给客户端的sAuthLogonProof_S结构数据
15 127.0.0.1:10740 127.0.0.1:3306 221 Send
认证服务器向MySQL更新账户信息。
16 127.0.0.1:3306 127.0.0.1:10740 52 Recv
MySQL返回的数据
17 127.0.0.1:10775 127.0.0.1:3724 5 Recv
客户端向认证服务器要求Realm登陆服务器列表,10为REALM_LIST命令,AuthSocket::_HandleRealmList()
18 127.0.0.1:10740 127.0.0.1:3306 53 Send
认证服务器从MySQL中查账户id
19 127.0.0.1:3306 127.0.0.1:10740 80 Recv
MySQL返回的数据
20 127.0.0.1:10740 127.0.0.1:3306 149 Send
认证服务器根据账户id从数据库中查找对应地区的登陆服务器信息
21 127.0.0.1:3306 127.0.0.1:10740 765 Recv
MySQL返回的数据
22 127.0.0.1:10740 127.0.0.1:3306 77 Send
从数据库中取该登陆服务器上该账号realmid为1的角色数量
23 127.0.0.1:3306 127.0.0.1:10740 107 Recv
MySQL返回的数据
24 127.0.0.1:10740 127.0.0.1:3306 77 Send
从数据库中查询该账户realmid为2的角色数量
25 127.0.0.1:3306 127.0.0.1:10740 101 Recv
MySQL返回的数据
26 127.0.0.1:3724 127.0.0.1:10775 81 Send
认证服务器返回给客户端登陆服务器列表
最后更新于
这有帮助吗?