pcap_next()返回不存在的字节?

时间:2014-02-02 19:38:52

标签: c pcap libpcap

我对pcap_next()返回的输出感到非常困惑。它在某些条件下始终返回神秘的“C5”字节。当我将该函数的输出与输出形式Wireshark进行比较时,“C5”不存在。

while( 1 ) {
    packet = pcap_next(handle, &header);
    if( packet == 0 ) {
        continue;
    }

    printf( "Captured: %d %d\n\n", header.caplen, header.len );
    _rtmp_print_buff( packet, header.caplen );
    printf( "\n\n-------------------\n\n");

//(....)

void _rtmp_print_buff( const u_char *buff, int size ) {
    int i;
    for( i = 0 ; i < size ; i++ ) {
        if( i % 16 == 0 ) printf(  "\n" );
        printf( "%02X ", (u_char) *(buff+i));
    }

    printf( "\n" );
}

Wireshark的部分数据包如下所示:

2000   56 b3 7a d7 81 4c c3 **24 ee** 63 57 32 77 24 bd 55
2010   48 c1 94 4c ad e9 a2 8c 90 59 25 ad 94 69 f2 69

_rtmp_print_buff()

返回的相同数据
3C D7 55 27 D7 1C 64 2F CE F0 AC 0C 8C 56 B3 7A
D7 81 4C C3 24 **C5** EE 63 57 32 77 24 BD 55 48 C1
94 4C AD E9 A2 8C 90 59 25 AD 94 69 F2 69 8E 4D

在经过一定量的正确捕捉后,它总是出现在同一个地方。如果是libpcap,我的版本可能有问题吗?

$ otool -L /usr/lib/libpcap.dylib
/usr/lib/libpcap.dylib:
    /usr/lib/libpcap.A.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

0 个答案:

没有答案