【发布时间】:2016-05-23 21:51:15
【问题描述】:
虽然我对发明这个系统的人有很多话要说 *@%...我会保持简短。 我正在调试一个简单的 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 的倍数,当然......
这种编码可能是在计算机出现之前编写的,这就是为什么它真的不适合计算……玩偏移真的很痛苦……
非常感谢您的帮助!
【问题讨论】: