Coding的痕迹

一位互联网奔跑者的网上日记

0%

(原)极域电子教室V6 2007通信协议解析(一)

1
2
3
4
/*
菜鸟,若有疏漏、不足或者错误,肯定指教。直接回复或联系邮箱([sunnysab@yeah.net](mailto:sunnysab@yeah.net))。
文章供学习和交流使用,转载可不注明原地址。
*/

​ 首先,配置环境。软件 极域电子教室V6 2007 不用说的(下载地址 已失效),拦包工具我用的是 科来网络分析系统 2010 技术交流版 (可以免费申请到序列号的,序列号1年过期)。建议安装一个虚拟机,以便进行试验。个人用的是 Virtual Box 。另外,在安装时把虚拟网卡也弄上,关于这个实验都在该虚拟网卡上进行,可以排除干扰。还要注意把极域电子教室的ip都设置在虚拟网卡的ip上。并且定下哪个ip装教师端,哪个ip是学生端,不要今天在虚拟机里用教师端,明天在虚拟机内运行学生端。另外还要注意的是,有时候可以只开教师端不开学生端。

​ 拦包,发现:极域电子教室教师端向 224.40.40.40:4804(组播地址) 发送一些数据包,内容如下:

十六进制:4E 43 4E 41 00 00 0E 00 C0 A8 02 01 01 00 00 00 54 65 61 63 68 65 72 00
明 文:N C N A . .  . 括    . . . T e a c h e r .

​ 数据包每次内容不同,而且极域电子教室还向另外一个地址(这个地址每次都不同,但是 225.2.x.x )发送一些包,经过研究,学生端不对 224.40.40.40 发送消息,且这个地址每次都是固定的,所以这个地址可能是极域电子教室说明自己身份的地址。而 225.2.x.x 是上课时的控制地址)。对这个数据包进行分析:

把域电子教室关闭再开,几次数据包都不同,225.2.x.x 也不同。在教师端登录时,试着切换几次参数(教师名、班级)。得出了极域电子教室教师端向 224.40.40.40:4804 发送的数据包的含义(不应该用结构表示,毕竟结构的大小是固定的,而数据包大小不固定(依教师名而定),理解即可~):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   struct packet_1

{

char Flag[4]; //"NCNA"

char The_Second_Multicast_IP[4]; //225.2.x.x的地址

char Teacher_IP[4]; //教师端ip

​ WORD Class; //班级

​ WORD NULLs[3]; //3个空字节

char TeacherName[ ]; //教师端登录时的教师名

char TheEnd; //'\0',也可当做TeacherName后面系统附加的'\0'

}

有一点必须说明,就是 The_Second_Multicast_IP[4]; ,这四个字节折磨了我一段时间,后来是多次拦包得出:

实际第二个组播的ip: 225.2.76.1 在数据包中十六进制的表示:4B 00 0E 00

实际第二个组播的ip: 225.2.55.1 在数据包中十六进制的表示:36 00 0E 00

观察这两组包,重复的: 225.2.x.x0E 00 不看。得出:

76.1 -> 4b 00

55.1 -> 36 00

我是无意发现的,76 - 1 = 4b(16进制) = 75,55 - 1 = 36(16进制) = 54 。

可以这样理解这4个字节(分别表示为 W X Y Z):

真实的第二个组播的地址 = (Y+1)^2 . Z+2 . W+1 . X+1

解析的过程不是很详细,但是毕竟包含着一些经验,不过毕竟有些是无法表达出来的,只能靠着自己摸索、实践。三天五天分析不出来这个协议是很正常的。不要灰心!