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 .@....def.realmd
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

0000 4F 00 00 00 03 44 45 4C 45 54 45 20 46 52 4F 4D O....DELETE FROM
0010 20 69 70 5F 62 61 6E 6E 65 64 20 57 48 45 52 45 ip_banned WHERE
0020 20 75 6E 62 61 6E 64 61 74 65 3C 3D 55 4E 49 58 unbandate<=UNIX
0030 5F 54 49 4D 45 53 54 41 4D 50 28 29 20 41 4E 44 _TIMESTAMP() AND
0040 20 75 6E 62 61 6E 64 61 74 65 3C 3E 62 61 6E 64 unbandate<>band
0050 61 74 65 ate

如果ip封锁已过期,解除封锁。

5 127.0.0.1:3306 127.0.0.1:10740 11 Recv

0000 07 00 00 01 00 00 00 22 00 00 00 ......."...

MySQL返回的数据

6 127.0.0.1:10740 127.0.0.1:3306 159 Send

0000 9B 00 00 00 03 53 45 4C 45 43 54 20 61 2E 73 68 .....SELECT a.sh
0010 61 5F 70 61 73 73 5F 68 61 73 68 2C 61 2E 69 64 a_pass_hash,a.id
0020 2C 61 2E 6C 6F 63 6B 65 64 2C 61 2E 6C 61 73 74 ,a.locked,a.last
0030 5F 69 70 2C 61 61 2E 67 6D 6C 65 76 65 6C 2C 61 _ip,aa.gmlevel,a
0040 2E 76 2C 61 2E 73 20 46 52 4F 4D 20 61 63 63 6F .v,a.s FROM acco
0050 75 6E 74 20 61 20 4C 45 46 54 20 4A 4F 49 4E 20 unt a LEFT JOIN
0060 61 63 63 6F 75 6E 74 5F 61 63 63 65 73 73 20 61 account_access a
0070 61 20 4F 4E 20 28 61 2E 69 64 20 3D 20 61 61 2E a ON (a.id = aa.
0080 69 64 29 20 57 48 45 52 45 20 61 2E 75 73 65 72 id) WHERE a.user
0090 6E 61 6D 65 20 3D 20 27 50 41 53 53 4F 53 27 name = 'PASSOS'

认证服务器从MySQL数据库中取帐号相关信息

7 127.0.0.1:3306 127.0.0.1:10740 577 Recv

0000 01 00 00 01 07 3E 00 00 02 03 64 65 66 06 72 65 .....>....def.re
0010 61 6C 6D 64 01 61 07 61 63 63 6F 75 6E 74 0D 73 almd.a.account.s
0020 68 61 5F 70 61 73 73 5F 68 61 73 68 0D 73 68 61 ha_pass_hash.sha
0030 5F 70 61 73 73 5F 68 61 73 68 0C 21 00 78 00 00 _pass_hash.!.x..
0040 00 FD 01 00 00 00 00 28 00 00 03 03 64 65 66 06 .......(....def.
0050 72 65 61 6C 6D 64 01 61 07 61 63 63 6F 75 6E 74 realmd.a.account
0060 02 69 64 02 69 64 0C 3F 00 0B 00 00 00 03 23 42 .id.id.?......#B
0070 00 00 00 30 00 00 04 03 64 65 66 06 72 65 61 6C ...0....def.real
0080 6D 64 01 61 07 61 63 63 6F 75 6E 74 06 6C 6F 63 md.a.account.loc
0090 6B 65 64 06 6C 6F 63 6B 65 64 0C 3F 00 03 00 00 ked.locked.?....
00A0 00 01 21 00 00 00 00 32 00 00 05 03 64 65 66 06 ..!....2....def.
00B0 72 65 61 6C 6D 64 01 61 07 61 63 63 6F 75 6E 74 realmd.a.account
00C0 07 6C 61 73 74 5F 69 70 07 6C 61 73 74 5F 69 70 .last_ip.last_ip
00D0 0C 21 00 5A 00 00 00 FD 01 00 00 00 00 3A 00 00 .!.Z.........:..
00E0 06 03 64 65 66 06 72 65 61 6C 6D 64 02 61 61 0E ..def.realmd.aa.
00F0 61 63 63 6F 75 6E 74 5F 61 63 63 65 73 73 07 67 account_access.g
0100 6D 6C 65 76 65 6C 07 67 6D 6C 65 76 65 6C 0C 3F mlevel.gmlevel.?
0110 00 03 00 00 00 01 21 10 00 00 00 26 00 00 07 03 ......!....&....
0120 64 65 66 06 72 65 61 6C 6D 64 01 61 07 61 63 63 def.realmd.a.acc
0130 6F 75 6E 74 01 76 01 76 0C 21 00 FD FF FF FF FC ount.v.v.!......
0140 10 00 00 00 00 26 00 00 08 03 64 65 66 06 72 65 .....&....def.re
0150 61 6C 6D 64 01 61 07 61 63 63 6F 75 6E 74 01 73 almd.a.account.s
0160 01 73 0C 21 00 FD FF FF FF FC 10 00 00 00 00 05 .s.!............
0170 00 00 09 FE 00 00 02 00 BC 00 00 0A 28 65 63 38 ............(ec8
0180 37 31 63 61 62 61 65 66 37 65 36 39 36 38 35 65 71cabaef7e69685e
0190 65 39 34 35 38 39 30 36 39 37 62 66 35 63 33 64 e945890697bf5c3d
01A0 39 30 34 39 34 02 31 31 01 30 09 31 32 37 2E 30 90494.11.0.127.0
01B0 2E 30 2E 31 01 33 40 36 31 34 38 45 31 46 42 35 .0.1.3@6148E1FB5
01C0 33 43 38 38 34 46 37 43 37 34 37 38 39 39 43 35 3C884F7C747899C5
01D0 31 46 43 38 30 36 46 43 43 46 41 30 46 36 43 33 1FC806FCCFA0F6C3
01E0 34 36 33 46 35 42 41 45 33 37 43 46 32 33 35 39 463F5BAE37CF2359
01F0 44 38 33 30 46 32 38 40 42 37 45 35 37 33 32 31 D830F28@B7E57321
0200 33 43 44 34 30 44 34 31 32 43 44 46 44 35 42 41 3CD40D412CDFD5BA
0210 39 37 41 43 30 42 45 31 37 39 38 34 32 45 37 42 97AC0BE179842E7B
0220 43 43 35 45 32 43 45 44 30 30 43 44 46 31 31 35 CC5E2CED00CDF115
0230 35 41 31 32 35 39 43 46 05 00 00 0B FE 00 00 02 5A1259CF........
0240 00 .

MYSQL返回的数据

8 127.0.0.1:10740 127.0.0.1:3306 78 Send

0000 4A 00 00 00 03 53 45 4C 45 43 54 20 62 61 6E 64 J....SELECT band
0010 61 74 65 2C 75 6E 62 61 6E 64 61 74 65 20 46 52 ate,unbandate FR
0020 4F 4D 20 61 63 63 6F 75 6E 74 5F 62 61 6E 6E 65 OM account_banne
0030 64 20 57 48 45 52 45 20 69 64 20 3D 20 31 31 20 d WHERE id = 11
0040 41 4E 44 20 61 63 74 69 76 65 20 3D 20 31 AND active = 1

认证服务器从MySQL查找帐号是否被封

9 127.0.0.1:3306 127.0.0.1:10740 175 Recv

0000 01 00 00 01 02 46 00 00 02 03 64 65 66 06 72 65 .....F....def.re
0010 61 6C 6D 64 0E 61 63 63 6F 75 6E 74 5F 62 61 6E almd.account_ban
0020 6E 65 64 0E 61 63 63 6F 75 6E 74 5F 62 61 6E 6E ned.account_bann
0030 65 64 07 62 61 6E 64 61 74 65 07 62 61 6E 64 61 ed.bandate.banda
0040 74 65 0C 3F 00 28 00 00 00 08 03 40 00 00 00 4A te.?.(.....@...J
0050 00 00 03 03 64 65 66 06 72 65 61 6C 6D 64 0E 61 ....def.realmd.a
0060 63 63 6F 75 6E 74 5F 62 61 6E 6E 65 64 0E 61 63 ccount_banned.ac
0070 63 6F 75 6E 74 5F 62 61 6E 6E 65 64 09 75 6E 62 count_banned.unb
0080 61 6E 64 61 74 65 09 75 6E 62 61 6E 64 61 74 65 andate.unbandate
0090 0C 3F 00 28 00 00 00 08 01 00 00 00 00 05 00 00 .?.(............
00A0 04 FE 00 00 02 00 05 00 00 05 FE 00 00 02 00 ...............

MYSQL返回的数据

10 127.0.0.1:10740 127.0.0.1:3306 98 Send

0000 5E 00 00 00 03 55 50 44 41 54 45 20 61 63 63 6F ^....UPDATE acco
0010 75 6E 74 5F 62 61 6E 6E 65 64 20 53 45 54 20 61 unt_banned SET a
0020 63 74 69 76 65 20 3D 20 30 20 57 48 45 52 45 20 ctive = 0 WHERE
0030 75 6E 62 61 6E 64 61 74 65 3C 3D 55 4E 49 58 5F unbandate<=UNIX_
0040 54 49 4D 45 53 54 41 4D 50 28 29 20 41 4E 44 20 TIMESTAMP() AND
0050 75 6E 62 61 6E 64 61 74 65 3C 3E 62 61 6E 64 61 unbandate<>banda
0060 74 65 te

如果封号过期,取消封号

11 127.0.0.1:3306 127.0.0.1:10740 52 Recv

0000 30 00 00 01 00 00 00 22 00 00 00 28 52 6F 77 73 0......"...(Rows
0010 20 6D 61 74 63 68 65 64 3A 20 30 20 20 43 68 61 matched: 0 Cha
0020 6E 67 65 64 3A 20 30 20 20 57 61 72 6E 69 6E 67 nged: 0 Warning
0030 73 3A 20 30 s: 0

MYSQL返回的数据

12 127.0.0.1:3724 127.0.0.1:10775 119 Send

0000 00 00 00 BB 24 92 69 D7 23 87 F0 28 B5 A3 26 14 ....$.i.#..(..&.
0010 F9 36 DA B9 DF 83 13 35 35 38 4F E3 78 DA 93 9C .6.....558O.x...
0020 59 A8 17 01 07 20 B7 9B 3E 2A 87 82 3C AB 8F 5E Y.... ..>*..<..^
0030 BF BF 8E B1 01 08 53 50 06 29 8B 5B AD BD 5B 53 ......SP.).[..[S
0040 E1 89 5E 64 4B 89 CF 59 12 5A 15 F1 CD 00 ED 2C ..^dK..Y.Z.....,
0050 5E CC 7B 2E 84 79 E1 0B AC 97 BA D5 DF 2C 41 0D ^.{..y.......,A.
0060 D4 3C 21 73 E5 B7 B9 8A B1 1A 97 B6 58 32 7F 7F .<!s........X2..
0070 4F 9D 23 9C 36 F8 00 O.#.6..

返回给客户端的数据,第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

0000 01 2A 62 13 B7 8F 50 A3 69 78 C1 B1 CA 3B CE D8 .*b...P.ix...;..
0010 95 14 13 BA 21 A9 06 E5 60 B3 EC 1B 8E 51 48 20 ....!...`....QH
0020 20 38 E0 9D 9B AC 08 19 CD 15 8B 54 87 ED 30 64 8.........T..0d
0030 11 59 3C 8D 8F 9D CB 6C 0D 8E 90 16 7C 6F BE 22 .Y<....l....|o."
0040 A8 4C 5F 02 0A BC 04 F0 5F 00 00 .L_....._..

客户端发给认证服务器的AUTH_LOGON_PROOF数据,结构定义在AuthSocket.cpp的sAuthLogonProof_C中。有一堆安全方面的计算,不知道Trinity这帮人怎么琢磨出来的。

14 127.0.0.1:3724 127.0.0.1:10775 32 Send

0000 01 00 1B F7 BE 50 54 84 8B B2 44 89 97 FD AA C3 .....PT...D.....
0010 44 AE 99 C9 4D A0 00 00 80 00 00 00 00 00 00 00 D...M...........

认证服务器返回给客户端的sAuthLogonProof_S结构数据

15 127.0.0.1:10740 127.0.0.1:3306 221 Send

0000 D9 00 00 00 03 55 50 44 41 54 45 20 61 63 63 6F .....UPDATE acco
0010 75 6E 74 20 53 45 54 20 73 65 73 73 69 6F 6E 6B unt SET sessionk
0020 65 79 20 3D 20 27 36 42 33 44 37 37 33 46 39 34 ey = '6B3D773F94
0030 39 30 43 42 41 42 38 36 31 30 41 34 45 37 34 37 90CBAB8610A4E747
0040 43 36 33 42 38 31 37 41 44 30 32 38 31 38 30 44 C63B817AD028180D
0050 32 37 46 41 42 42 41 41 46 43 35 32 42 30 37 37 27FABBAAFC52B077
0060 37 37 45 37 36 37 46 36 37 35 44 36 42 32 36 45 77E767F675D6B26E
0070 34 37 37 39 33 42 27 2C 20 6C 61 73 74 5F 69 70 47793B', last_ip
0080 20 3D 20 27 31 32 37 2E 30 2E 30 2E 31 27 2C 20 = '127.0.0.1',
0090 6C 61 73 74 5F 6C 6F 67 69 6E 20 3D 20 4E 4F 57 last_login = NOW
00A0 28 29 2C 20 6C 6F 63 61 6C 65 20 3D 20 27 34 27 (), locale = '4'
00B0 2C 20 66 61 69 6C 65 64 5F 6C 6F 67 69 6E 73 20 , failed_logins
00C0 3D 20 30 20 57 48 45 52 45 20 75 73 65 72 6E 61 = 0 WHERE userna
00D0 6D 65 20 3D 20 27 50 41 53 53 4F 53 27 me = 'PASSOS'

认证服务器向MySQL更新账户信息。

16 127.0.0.1:3306 127.0.0.1:10740 52 Recv

0000 30 00 00 01 00 01 00 02 00 00 00 28 52 6F 77 73 0..........(Rows
0010 20 6D 61 74 63 68 65 64 3A 20 31 20 20 43 68 61 matched: 1 Cha
0020 6E 67 65 64 3A 20 31 20 20 57 61 72 6E 69 6E 67 nged: 1 Warning
0030 73 3A 20 30 s: 0

MySQL返回的数据

17 127.0.0.1:10775 127.0.0.1:3724 5 Recv

0000 10 00 00 00 00 .....

客户端向认证服务器要求Realm登陆服务器列表,10为REALM_LIST命令,AuthSocket::_HandleRealmList()

18 127.0.0.1:10740 127.0.0.1:3306 53 Send

0000 31 00 00 00 03 53 45 4C 45 43 54 20 69 64 20 46 1....SELECT id F
0010 52 4F 4D 20 61 63 63 6F 75 6E 74 20 57 48 45 52 ROM account WHER
0020 45 20 75 73 65 72 6E 61 6D 65 20 3D 20 27 50 41 E username = 'PA
0030 53 53 4F 53 27 SSOS'

认证服务器从MySQL中查账户id

19 127.0.0.1:3306 127.0.0.1:10740 80 Recv

0000 01 00 00 01 01 2E 00 00 02 03 64 65 66 06 72 65 ..........def.re
0010 61 6C 6D 64 07 61 63 63 6F 75 6E 74 07 61 63 63 almd.account.acc
0020 6F 75 6E 74 02 69 64 02 69 64 0C 3F 00 0B 00 00 ount.id.id.?....
0030 00 03 23 42 00 00 00 05 00 00 03 FE 00 00 02 00 ..#B............
0040 03 00 00 04 02 31 31 05 00 00 05 FE 00 00 02 00 .....11.........

MySQL返回的数据

20 127.0.0.1:10740 127.0.0.1:3306 149 Send

0000 91 00 00 00 03 53 45 4C 45 43 54 20 69 64 2C 20 .....SELECT id,
0010 6E 61 6D 65 2C 20 61 64 64 72 65 73 73 2C 20 70 name, address, p
0020 6F 72 74 2C 20 69 63 6F 6E 2C 20 63 6F 6C 6F 72 ort, icon, color
0030 2C 20 74 69 6D 65 7A 6F 6E 65 2C 20 61 6C 6C 6F , timezone, allo
0040 77 65 64 53 65 63 75 72 69 74 79 4C 65 76 65 6C wedSecurityLevel
0050 2C 20 70 6F 70 75 6C 61 74 69 6F 6E 2C 20 67 61 , population, ga
0060 6D 65 62 75 69 6C 64 20 46 52 4F 4D 20 72 65 61 mebuild FROM rea
0070 6C 6D 6C 69 73 74 20 57 48 45 52 45 20 63 6F 6C lmlist WHERE col
0080 6F 72 20 3C 3E 20 33 20 4F 52 44 45 52 20 42 59 or <> 3 ORDER BY
0090 20 6E 61 6D 65 name

认证服务器根据账户id从数据库中查找对应地区的登陆服务器信息

21 127.0.0.1:3306 127.0.0.1:10740 765 Recv

0000 01 00 00 01 0A 32 00 00 02 03 64 65 66 06 72 65 .....2....def.re
0010 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 73 74 09 72 almd.realmlist.r
0020 65 61 6C 6D 6C 69 73 74 02 69 64 02 69 64 0C 3F ealmlist.id.id.?
0030 00 0B 00 00 00 03 23 42 00 00 00 36 00 00 03 03 ......#B...6....
0040 64 65 66 06 72 65 61 6C 6D 64 09 72 65 61 6C 6D def.realmd.realm
0050 6C 69 73 74 09 72 65 61 6C 6D 6C 69 73 74 04 6E list.realmlist.n
0060 61 6D 65 04 6E 61 6D 65 0C 21 00 60 00 00 00 FD ame.name.!.`....
0070 05 40 00 00 00 3C 00 00 04 03 64 65 66 06 72 65 .@...<....def.re
0080 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 73 74 09 72 almd.realmlist.r
0090 65 61 6C 6D 6C 69 73 74 07 61 64 64 72 65 73 73 ealmlist.address
00A0 07 61 64 64 72 65 73 73 0C 21 00 60 00 00 00 FD .address.!.`....
00B0 01 00 00 00 00 36 00 00 05 03 64 65 66 06 72 65 .....6....def.re
00C0 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 73 74 09 72 almd.realmlist.r
00D0 65 61 6C 6D 6C 69 73 74 04 70 6F 72 74 04 70 6F ealmlist.port.po
00E0 72 74 0C 3F 00 0B 00 00 00 03 01 00 00 00 00 36 rt.?...........6
00F0 00 00 06 03 64 65 66 06 72 65 61 6C 6D 64 09 72 ....def.realmd.r
0100 65 61 6C 6D 6C 69 73 74 09 72 65 61 6C 6D 6C 69 ealmlist.realmli
0110 73 74 04 69 63 6F 6E 04 69 63 6F 6E 0C 3F 00 03 st.icon.icon.?..
0120 00 00 00 01 21 00 00 00 00 38 00 00 07 03 64 65 ....!....8....de
0130 66 06 72 65 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 f.realmd.realmli
0140 73 74 09 72 65 61 6C 6D 6C 69 73 74 05 63 6F 6C st.realmlist.col
0150 6F 72 05 63 6F 6C 6F 72 0C 3F 00 03 00 00 00 01 or.color.?......
0160 21 00 00 00 00 3E 00 00 08 03 64 65 66 06 72 65 !....>....def.re
0170 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 73 74 09 72 almd.realmlist.r
0180 65 61 6C 6D 6C 69 73 74 08 74 69 6D 65 7A 6F 6E ealmlist.timezon
0190 65 08 74 69 6D 65 7A 6F 6E 65 0C 3F 00 03 00 00 e.timezone.?....
01A0 00 01 21 00 00 00 00 56 00 00 09 03 64 65 66 06 ..!....V....def.
01B0 72 65 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 73 74 realmd.realmlist
01C0 09 72 65 61 6C 6D 6C 69 73 74 14 61 6C 6C 6F 77 .realmlist.allow
01D0 65 64 53 65 63 75 72 69 74 79 4C 65 76 65 6C 14 edSecurityLevel.
01E0 61 6C 6C 6F 77 65 64 53 65 63 75 72 69 74 79 4C allowedSecurityL
01F0 65 76 65 6C 0C 3F 00 03 00 00 00 01 21 00 00 00 evel.?......!...
0200 00 42 00 00 0A 03 64 65 66 06 72 65 61 6C 6D 64 .B....def.realmd
0210 09 72 65 61 6C 6D 6C 69 73 74 09 72 65 61 6C 6D .realmlist.realm
0220 6C 69 73 74 0A 70 6F 70 75 6C 61 74 69 6F 6E 0A list.population.
0230 70 6F 70 75 6C 61 74 69 6F 6E 0C 3F 00 0C 00 00 population.?....
0240 00 04 21 00 1F 00 00 40 00 00 0B 03 64 65 66 06 ..!....@....def.
0250 72 65 61 6C 6D 64 09 72 65 61 6C 6D 6C 69 73 74 realmd.realmlist
0260 09 72 65 61 6C 6D 6C 69 73 74 09 67 61 6D 65 62 .realmlist.gameb
0270 75 69 6C 64 09 67 61 6D 65 62 75 69 6C 64 0C 3F uild.gamebuild.?
0280 00 0B 00 00 00 03 21 00 00 00 00 05 00 00 0C FE ......!.........
0290 00 00 22 00 2A 00 00 0D 01 31 07 54 72 69 6E 69 ..".*....1.Trini
02A0 74 79 09 31 32 37 2E 30 2E 30 2E 31 04 38 30 38 ty.127.0.0.1.808
02B0 39 01 31 01 30 02 31 36 01 30 01 30 05 31 33 39 9.1.0.16.0.0.139
02C0 33 30 2E 00 00 0E 01 32 0B 54 72 69 6E 69 74 79 30.....2.Trinity
02D0 63 6F 72 65 09 31 32 37 2E 30 2E 30 2E 31 04 38 core.127.0.0.1.8
02E0 30 38 39 01 31 01 30 02 31 36 01 30 01 30 05 31 089.1.0.16.0.0.1
02F0 33 39 33 30 05 00 00 0F FE 00 00 22 00 3930.......".

MySQL返回的数据

22 127.0.0.1:10740 127.0.0.1:3306 77 Send

0000 49 00 00 00 03 53 45 4C 45 43 54 20 6E 75 6D 63 I....SELECT numc
0010 68 61 72 73 20 46 52 4F 4D 20 72 65 61 6C 6D 63 hars FROM realmc
0020 68 61 72 61 63 74 65 72 73 20 57 48 45 52 45 20 haracters WHERE
0030 72 65 61 6C 6D 69 64 20 3D 20 27 31 27 20 41 4E realmid = '1' AN
0040 44 20 61 63 63 74 69 64 3D 27 31 31 27 D acctid='11'

从数据库中取该登陆服务器上该账号realmid为1的角色数量

23 127.0.0.1:3306 127.0.0.1:10740 107 Recv

0000 01 00 00 01 01 4A 00 00 02 03 64 65 66 06 72 65 .....J....def.re
0010 61 6C 6D 64 0F 72 65 61 6C 6D 63 68 61 72 61 63 almd.realmcharac
0020 74 65 72 73 0F 72 65 61 6C 6D 63 68 61 72 61 63 ters.realmcharac
0030 74 65 72 73 08 6E 75 6D 63 68 61 72 73 08 6E 75 ters.numchars.nu
0040 6D 63 68 61 72 73 0C 3F 00 03 00 00 00 01 21 00 mchars.?......!.
0050 00 00 00 05 00 00 03 FE 00 00 02 00 02 00 00 04 ................
0060 01 33 05 00 00 05 FE 00 00 02 00 .3.........

MySQL返回的数据

24 127.0.0.1:10740 127.0.0.1:3306 77 Send

0000 49 00 00 00 03 53 45 4C 45 43 54 20 6E 75 6D 63 I....SELECT numc
0010 68 61 72 73 20 46 52 4F 4D 20 72 65 61 6C 6D 63 hars FROM realmc
0020 68 61 72 61 63 74 65 72 73 20 57 48 45 52 45 20 haracters WHERE
0030 72 65 61 6C 6D 69 64 20 3D 20 27 32 27 20 41 4E realmid = '2' AN
0040 44 20 61 63 63 74 69 64 3D 27 31 31 27 D acctid='11'

从数据库中查询该账户realmid为2的角色数量

25 127.0.0.1:3306 127.0.0.1:10740 101 Recv

0000 01 00 00 01 01 4A 00 00 02 03 64 65 66 06 72 65 .....J....def.re
0010 61 6C 6D 64 0F 72 65 61 6C 6D 63 68 61 72 61 63 almd.realmcharac
0020 74 65 72 73 0F 72 65 61 6C 6D 63 68 61 72 61 63 ters.realmcharac
0030 74 65 72 73 08 6E 75 6D 63 68 61 72 73 08 6E 75 ters.numchars.nu
0040 6D 63 68 61 72 73 0C 3F 00 03 00 00 00 01 21 00 mchars.?......!.
0050 00 00 00 05 00 00 03 FE 00 00 02 00 05 00 00 04 ................
0060 FE 00 00 02 00 .....

MySQL返回的数据

26 127.0.0.1:3724 127.0.0.1:10775 81 Send

0000 10 4E 00 00 00 00 00 02 00 01 00 00 54 72 69 6E .N..........Trin
0010 69 74 79 00 31 32 37 2E 30 2E 30 2E 31 3A 38 30 ity.127.0.0.1:80
0020 38 39 00 00 00 00 00 03 10 2C 01 00 00 54 72 69 89.......,...Tri
0030 6E 69 74 79 63 6F 72 65 00 31 32 37 2E 30 2E 30 nitycore.127.0.0
0040 2E 31 3A 38 30 38 39 00 00 00 00 00 00 10 2C 10 .1:8089.......,.
0050 00 .

认证服务器返回给客户端登陆服务器列表