1

我正在使用 libpcap 进行数据包嗅探。我想像在 Wireshark 中一样打印出十六进制的数据包内容。我怎么做?假设我要打印 TCP 段的第 21 个字节的 HEX 值(选项的第一个字节,对于 MSS,通常为 0x02),我该怎么做?

4

1 回答 1

1

尝试这个:

char data[]; // byte array with packet content;
int start; // starting offset 
int end; // ending offset

int i;

for (i = start & ~15; i < end; i++)
{
    if  ((i & 15) == 0) 
       printf("%04x ",i);
    printf((i<start)?"   ":"%02x%c",(unsigned char)data[i],((i+1)&15)?' ':'\n');
}
if ((i & 15) != 0)
    printf("\n");

它将打印出提供的data缓冲区从start偏移量开始到偏移量的部分end

于 2012-10-21T19:06:17.107 回答