【问题标题】:Decoding H.245 Requests.解码 H.245 请求。
【发布时间】: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)。 我真的不明白那里藏着一个七!

我用 Colaso​​ft 伪造了一些数据包并在 Wireshark 中打开,看起来数据类型应该存储在字节 5 的位 0 和字节 6 的位 7,6,5 中(有 12 个选项,所以它应该被编码为 4 位)。那么 7 将是 0111。这种模式不会出现在任何地方!

我发现字节 5 的位 6 表示端口号是否存在(根据 WS),好像我设置了那个位,字节 6 和 7 被解释为端口号,其余的似乎是移位但不是 8 的倍数,当然......

这种编码可能是在计算机出现之前编写的,这就是为什么它真的不适合计算……玩偏移真的很痛苦……

非常感谢您的帮助!

【问题讨论】:

    标签: asn.1 h.323


    【解决方案1】:

    我的第一个建议是不要尝试手动解码 ASN.1 PER。解码 PER 甚至比 BER 更难。您应该让计算机进行解码以保持理智。信任 Wireshark - 它在解码方面做得非常好。

    如果你真的想深入了解 ASN.1,有一个free ASN.1 reference book

    【讨论】:

      猜你喜欢
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 2010-11-29
      • 2018-09-10
      相关资源
      最近更新 更多