虽然我对发明这个系统的人有很多话要说 *@%...我会保持简短。我正在调试一个简单的 ALG,它试图在 H323/H245 流中需要时打开端口并替换 IP。
我试图理解 H.245 PDU 的含义,但老实说,与 ITU-T 相比,RFC 非常容易理解......
所以我有以下H.245请求:038000012040212000400960864801650304010250c0116000060007b83 ...
在二进制中,它变为:
字节 1
0... 扩展 = 否
.00。要求
...0 扩展 = 不???
.... 0011 类型 3
字节 2
.... .... 1000 0000 扩展=是???
字节 3&4
.... .... .... .... 0000 0000 0000 0001 通道 ID = 2 (1+1)
字节 5&6
.... .... .... .... .... .... .... .... 0010 0000 0100 0000 ???
首先:我不明白为什么不使用字节 2,或者如果是,我不知道它是什么意思。另外,PER说如果大于2个字节,数字的编码必须是字节对齐的,所以通道ID不需要字节对齐......
其次,Wireshark 解码这个有一个 H235Media (DataType 7)。我真的不明白那里藏着一个七!
我用Colasoft伪造了一些数据包,在Wireshark中打开,看起来数据类型应该存储在字节5的位0和字节6的位7、6、5(有12个选项,所以应该是编码为 4 位)。7 将是 0111。这种模式无处出现!
我发现字节 5 的位 6 表示端口号是否存在(根据 WS),好像我设置了那个位,字节 6 和 7 被解释为端口号,其余部分似乎被移动但没有当然是 8 的倍数……
这种编码可能是在计算机存在之前制作的,这就是为什么它真的不适合计算......玩偏移真的很痛苦......
非常感谢你的帮助!