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