//网络数据包结构头 struct NetMessageHead { UINT uMessageSize; ///数据包大小 UINT uMainID; ///处理主类型 UINT uAssistantID; ///辅助处理类型 ID UINT uHandleCode; ///数据包处理代码 UINT uReserve; ///保留字段
NetMessageHead() { memset(this, 0, sizeof(NetMessageHead)); } };
// 回应注册 struct LogonResponseRegister { int userID; //用户ID char szToken[64]; //用户Token(sessioncode) char szAccountInfo[64]; //唯一标识 BYTE byFastRegister; //1-普通注册,2-微信注册,3-QQ注册
LogonResponseRegister() { memset(this, 0, sizeof(LogonResponseRegister)); } };
抓的这两个结构体拼接包,大小为153字节。
来尝试解析uMessageSize和uMainID两个字段
这两个都是四个字节(int)
十六进制标识方式:
uMessageSize=00000099
uMainID=00000064
换成十进制:
uMessageSize=00000099=153
uMainID=00000064=100
再来解析一个复杂的userID
跳到20个字节后面
十六进制形式:
userID=0001d02c
十进制
userID=0001d02c=118828
注意:比如四个字节的十六进制显示是从低位到高位,所以换算要从高位到低位
过滤一台计算机发出跟接收的数据