虽然我有很多话要说谁发明了这个系统* @%......我会保持简短。 我正在调试一个简单的ALG,它试图打开端口并在H323 / H245流程中需要时替换IP。
我试图理解H.245 PDU的含义,但老实说,与ITU-T相比,RFC很容易理解...
所以我有以下H.245请求: 038000012040212000400960864801650304010250c0116000060007b83 ...
在二进制文件中,它变为:
字节1
0 ... extended = no
0.00。请求
... 0 extended = no ???
.... 0011 Type 3
字节2
.... .... 1000 0000 extended = yes ???
字节3& 4
.... .... .... 0000 0000 0000 0001频道ID = 2(1 + 1)
字节5& 6
.... .... .... .... .... .... .... 0010 0000 0100 0000 ???
首先:我不明白为什么不使用字节2,或者如果不使用字节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的倍数,当然......
这个编码可能是在计算机存在之前进行的,这就是为什么它真的不是计算友好的......玩偏移真是一种痛苦......
非常感谢你的帮助!
答案 0 :(得分:1)
My first bit of advice would be not to try to decode ASN.1 PER by hand. Decoding PER is even harder than BER. You should let a computer do the decoding to remain sane. Trust Wireshark - it does a very good job with the decoding.
If you really want to dig into the ASN.1, there is a free ASN.1 reference book.