haitao:
【技术贴】看看这个数据包协议是否有什么漏洞、弊端?
[阅读: 467] 2005-12-23 05:35:34
xxxx方案数据包协议定义:(将用于串口和TCP通讯)
数据包的内容为:
版本号:"AA00";
后续字节长度:FFFF(4个ASCII字符('0'-'9','A'-'F')表达的2个字节(0-64K));
如”012A”==0x01*256+0x2a
后续字节:由字节数由上面的后续字节长度指定。
后续字节的内容为:
信息头字节数:FF(2个ASCII字符('0'-'9','A'-'F')表达的1个字节(0-255));
信息头前导字符:'[';
信息头;
信息头结束字符:']';
信息体前导字符:'{';
信息体;
信息体结束字符:'}';
附加的校验码:FFFF(4个ASCII字符('0'-'9','A'-'F')表达的2个字节),对前面的所有数据(含版本号)作校验(如果信息体是加密的,校验码则是基于加密后的信息体所作的)。
(信息体可以是加密的,其它部分必须则为明文;信息体长度无须指定,信息体前导字符之后直到整个包包最后的5个字节之前,都是信息体)
信息头定义:
;encodemode=xx;keymode=xx;traceno=xxx;from=xxx;to=xxx;...;
(采用类INI格式的多域描述,每个域的格式为:;name=value;
域间的多个’;’等效于为1个’;’
域value里不得出现’;’,如果不得不出现,应该以转义符表达:’\e’==’;’ ‘\\’==’\’
主要用于标识信息体的加密算法和密钥的模式;顺便核对包的编号、发送方、接收方等信息;
都是以';'开头和结尾;具体域定义可以灵活扩展,不同的包里面的域的数量有可能不同,但是总长度限制为255字节
信息头不会加密,所有,尽量不要存放敏感数据)
信息体(可能是经过加密的,如果是加密的,则下面说的是加密前的内容)定义:
;cmd=xxxx;aaaid=xxxxxxxxxx;bbbid=xxxxxxxx;cccid=xxxxxxxxx;nnnn=xxxxxxxxxxxx;mmmm=xxxxxxxxx;