魔兽争霸游戏开始前数据包分析
来源:互联网 发布:图文编辑软件 编辑:程序博客网 时间:2024/05/15 23:13
1.搜索局域网游戏:UDP,端口6112.
0x0000 FF FF FF FF FF FF 00 11-5B 82 2D EC 08 00 45 00 ..[??.E.
0x0010 00
0x0020 FF FF 17 E0 17 E0 00 18
0x0030 33 57 14 00 00 00 00 00-00 00
加粗黑色为数据:F7
魔兽在多种情况下都会发布此消息,例如刚进入局域网,从游戏中退出,从创建的游戏中退出等等。
2.选择地图创建游戏后广播,即告知局域网我这儿创建了一个局域网游戏:udp
0x0000 FF FF FF FF FF FF 00 11-5B 82 2D EC 08 00 45 00 ..[??.E.
0x0010 00
0x0020 FF FF 17 E0 17 E0 00 18-6E
0x0030 33 57 14 00 00 00 01 00-00 00
加粗黑色为数据:F7 31 10 00是格式头部,消息含义的标志。这个udp包通常是不变的。
3.选择地图创建游戏后第二个包:udp
0x0000 FF FF FF FF FF FF 00 11-5B 82 2D EC 08 00 45 00 ..[??.E.
0x0010 00
0x0020 FF FF 17 E0 17 E0 00 18-FE B
0x0030 00 00 01 00 00 00 04 00-00 00
最后一行的01表示当前局域网玩家人数加入一个人该数字加1,如果跟电脑玩这个数字不会变化;04表示总共有多少局域网玩家可以玩这个游戏+1,加入一个电脑,这个数据减1,加入局域网玩家这个数据不变,到最后这个数据表示玩这个游戏的局域网玩家数目。这个包除了以上两个数据,也通常不会变化。这类包在游戏开始以前每发生变化都要发送。
1、2、3数据包的发送在线程函数udp_send_thread_proc中完成。
4.局域网一个玩家收到主机广播后进行广播或者联系主机(UDP)
0x0000 FF FF FF FF FF FF 00 17-31 7D 9E 66 08 00 45 00 ..1}瀎..E.
0x0010 00
0x0020 FF FF 17 E0 17 E0 00 18-6E A
0x0000 00 11 5B 82 2D EC 00 17-31 7D 9E 66 08 00 45 00 ..[??.1}瀎..E.
0x0010 00
0x0020 01 72 17 E0 17 E0 00 18-AB
5.创建主机收到玩家信息后给玩家发送地图一起创建者信息(UDP):
0x0000 00 17 31 7D 9E 66 00 11-5B 82 2D EC 08 00 45 00 ..1}瀎..[??.E.
0x0010 00
0x0020 01 D6 17 E0 17 E0 00 84-80
0x0030 33 57 14 00 00 00 01 00-00 00 24 22 31 02 E5 BD 3W........$"1.褰
0x0040 93 E5
0x0050 E7
0x0060 03 49 07 01 01 53 01 B9-53 01
0x0070 61 71 73 5D 31 33 33 D5-5D 31 33 33
0x0080 79 01 47
0x0090 02 00 00 00 01 00 00 00-01 00 00 00 02 00 00 00 ................
0x
其中F7 30是数据包类型,
50 58 33 57 14 00 00 00 01 00-00 00是PX3W以及版本号、创建次数等信息。
24 22 31 02 这个数据不敢确定,老发生变化,?????
E5 BD 93 E5
01 03 49 07 01 01 53 01 B9-53 01
AB 61 71 73 5D 31 33 33 aps//123
D5-5D 31 33 33
39 79 01 47
1D-6D 61 79 65 73 01 01 layer/0/0
解密方法:每一行第一个字节为密钥,这是一个奇偶校验加密程序,如B9,其二进制为10111001,逆序01000110取反为01100010,进行如下操作:
B9-0 53-1 01-1
第二行 AB取反 0 1010100 逆序得:0 0101010 得61 70 73
第三行 D5取反 0 0101010 逆序得:0 1010100 得
第四行 39取反 1 1000110 逆序 0 1100011 得78 00 47
第五行 1D取反 1 1100010 逆序 0 1000111 得
合起来即为aps//123//123.w3x/0GoodPlayer/0/0 15 10
而且总结经验如下:当某字节的十进制数能够被2整除的时候需要补1,即偶数补1。
以下是裁判的:
0x0000 00 16 76 08 FE 30 00 16-76 08 FC D0 08 00 45 00 ..v.?..v...E.
0x0010 00 9E 63 CB 00 00 80 11-52
0x0020
0x0030 33 57 14 00 00 00 02 00-00 00 2E
0x0040 93 E5
0x0050 E7
0x0060 03 49 07 41 01 35
0x0070 61 71 73 5D 63
0x0080 73 65
0x0090 69 61
0x
01 03 49 07 41 01 35
OC是总数目,加入一个电脑该数目减一,
09是管观看者数目?暂且固定吧。
01是局域网玩家数目。
接下来的
该数据包5的发送在线程函数udp_recv_thread_proc中调用函数send_map_and_user_name完成。由于黄色部分数据未知太多,但是对每张图都是唯一的,所以采取了对每张图都截取该段数据,并做成一个查找表来完成。
6.主机给玩家发送地图UDP信息以后,玩家TCP连接主机(以下两个包连续发送):
0x0000 00 16 76 08 FC D0 00 16-76 08 FE 30 08 00 45 00 ..v...v.?..E.
0x0010 00
0x0020 01
0x0030 FF FF A2 14 00 00 00 00-00 00 00 00 或者 AA AA-AA AA AA AA
其实这些一串0或者A不是客户有意构造的包,而是TCP自己构造的发送回馈。
0x0000 00 16 76 08 FC D0 00 16-76 08 FE 30 08 00 45 00 ..v...v.?..E.
0x0010 00
0x0020 01
0x0030 FF FF
0x0040 17 02 00 E0 17 01 00 00-00 6E 69 75 00 01 00 02 ...?....niu....
0x0050 00 17 E
F7 1E是数据包格式,29 00是大小
08 00 00 00 是一个固定增长的数据,以后会用到,其实就是广播时的tag_count,每次连创建加1,这里我们都采取01,26 1B 17 02是服务器传过来的随机数(即以上实例中红色部分2E
……
本人已经数据包分析完毕,开发出了一个魔兽游戏引导程序,可以引导玩家加入游戏
如果感兴趣者留言联系。
- 魔兽争霸游戏开始前数据包分析
- 魔兽争霸游戏开始前数据包分析
- Java解析魔兽争霸3录像W3G文件(三):解析游戏开始前的信息
- 魔兽争霸III数据包规范
- 游戏开始前,设置的延迟
- 网页版魔兽争霸游戏策划
- 魔兽争霸RPG游戏-军团战争-游戏经验总结
- 分析数据包
- 数据包分析
- TCP前3数据包
- 由玩魔兽争霸DOTA游戏想到的
- 游戏数据包设计
- 游戏.数据包程序
- 游戏战斗数据包
- 魔兽争霸3技术分析资源汇总
- 经典游戏PK:魔兽争霸VS星际争霸VS红警
- 用面向对象的思想探讨游戏“魔兽争霸”(1)
- 经典游戏PK:魔兽争霸VS星际争霸VS红警
- Silverlight 2.0正式版下载地址,Silverlight 2.0 SDK和开发工具下载地址
- LR执行中出现的问题
- 自动词与他动词的简单区别
- 我用国外方式管教孩子的“痛苦”经历
- javascript 常用代码大全(五)
- 魔兽争霸游戏开始前数据包分析
- Output error file to the following location:[ A:/GHOST ERR.TXT] 错误处理
- javascript 常用代码大全(六)
- javascript 常用代码大全(七)
- 没有语言栏 meiyou yuyanlan buneng dahanzi
- 阿里巴巴笔试(公共题 2008-10-10)学习篇
- javascript 常用代码大全(八)
- Web service 描述
- char与byte区别