libosmo-as​​n1-tcap已编译,但ber_decoder无法正常工作

时间:2014-09-07 08:00:46

标签: asn.1

我开始了解http://cgit.osmocom.org/libosmo-asn1-tcap/并且可以编译库。

我正在用asn.1进行简单的实验。我有以下TCAP数据(开始): (数据的hexdump如下):

0x000000: 62 6b 48 04 40 f0 fa 2f bkH.@../
0x000008: 6b 43 28 41 06 07 00 11 kC(A....
0x000010: 86 05 01 01 01 a0 36 60 ......6`
0x000018: 34 80 02 07 80 a1 09 06 4.......
0x000020: 07 04 00 00 01 00 13 02 ........
0x000028: be 23 28 21 06 07 04 00 .#(!....
0x000030: 00 01 01 01 01 a0 16 a0 ........
0x000038: 14 80 09 96 74 00 34 00 ....t.4.
0x000040: 46 20 56 f4 81 07 91 88 F V.....
0x000048: 10 05 51 89 00 6c 1e a1 ..Q..l..
0x000050: 1c 02 01 80 02 01 3b 30 ......;0
0x000058: 14 04 01 0f 04 05 aa 5a .......Z
0x000060: ac 36 02 80 08 91 88 10 .6......
0x000068: 35 64 91 59 f5          5d.Y.   

0x62是tcap'开始'。数据长度在下一个字节中。 现在我有以下代码来解码数据。但不工作:

#include <TCMessage.h>
void tcap_decode(const void *buf, size_t len)
{
  asn_dec_rval_t rval;
  TCMessage_t *pdu = 0;

  rval = asn_DEF_TCMessage.ber_decoder(0,
      &asn_DEF_TCMessage,
      (void **) &pdu,
      buf, len, 0);

  if (rval.code == RC_OK) {
    fprintf(stderr, "Decoded successfully\n");
  } else {
    /* Free partially decoded data */
    fprintf(stderr, "Decode failed, Freeing partially parased data structure\n");
  }
  asn_DEF_TCMessage.free_struct(&asn_DEF_TCMessage, pdu, 0);
}

请建议我可以做些什么来使解码器正常工作。我尝试了很多方法,例如,跳过两个字节(类型+长度)但没有运气。我不确定问题是否在libosmo-as​​n1-tcap中。

提前致谢。

1 个答案:

答案 0 :(得分:0)

整夜尝试各种方法后,我可以找出问题所在。问题是libosmo-as​​n1-tcap中的tcap.asn损坏了。我修复了破坏的引用并重新编译并且工作正常。为了找出问题,我在libasn1c中启用了调试,并显示了它将停止解码的位置。快乐的黑客攻击。