热血传奇的私服版本中,采用了原始的通信过程进行客户端与服务端的信息交互,其中主要用到了3个端口分别针对帐号、角色和游戏过程进行交互。
而在交互过程中,所有数据均为明文编码传输,并没有经过加密处理。这里值得一提的是编码与加密不属于一个概念,编码是为了在老网关上进行传输编码不产生错误与溢出而进行的操作,加密是为了防止第三方监听所进行的操作。
传奇私服版本使用的只是编码操作,将所有信息都encode成ascii代码,而encode和decode过程完全公开、可逆,所以这款网游的数据包可以被称作是透明的,管理员、监听者、协议爱好者、外挂开发人员,都可对其封包协议与编解码进行学习、或利用。
编码过程:
1、将字符串以每3个字节为一组进行分割;
2、3个字节由24位构成,对24位以每6位为一组分割;
3、6位bit前补两个0,构成新的8位bit;
4、新生成的4个字节各自自加0x3c;
5、最终由3个字节变为4个字节;
举例:若一个字符串原来是9个字节,编码(encode)之后,将变为12个字节的字符串。解码过程与上述encode过程相反即可。
本来想将相关的代码一同放上来,却发现没有代码着色器,放上来肯定很难阅读,待日后有机会再放吧。
而在交互过程中,所有数据均为明文编码传输,并没有经过加密处理。这里值得一提的是编码与加密不属于一个概念,编码是为了在老网关上进行传输编码不产生错误与溢出而进行的操作,加密是为了防止第三方监听所进行的操作。
传奇私服版本使用的只是编码操作,将所有信息都encode成ascii代码,而encode和decode过程完全公开、可逆,所以这款网游的数据包可以被称作是透明的,管理员、监听者、协议爱好者、外挂开发人员,都可对其封包协议与编解码进行学习、或利用。
编码过程:
1、将字符串以每3个字节为一组进行分割;
2、3个字节由24位构成,对24位以每6位为一组分割;
3、6位bit前补两个0,构成新的8位bit;
4、新生成的4个字节各自自加0x3c;
5、最终由3个字节变为4个字节;
举例:若一个字符串原来是9个字节,编码(encode)之后,将变为12个字节的字符串。解码过程与上述encode过程相反即可。
本来想将相关的代码一同放上来,却发现没有代码着色器,放上来肯定很难阅读,待日后有机会再放吧。
Leave a comment