我开始了解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-asn1-tcap中。
提前致谢。
答案 0 :(得分:0)
整夜尝试各种方法后,我可以找出问题所在。问题是libosmo-asn1-tcap中的tcap.asn损坏了。我修复了破坏的引用并重新编译并且工作正常。为了找出问题,我在libasn1c中启用了调试,并显示了它将停止解码的位置。快乐的黑客攻击。