我使用libpcap进行数据包嗅探。我想像在Wireshark中一样打印出HEX中的数据包内容。我怎么做?假设我要打印TCP段的第21个字节的HEX值(选项的第1个字节,MSS通常为0x02),我该怎么做?
答案 0 :(得分: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
偏移量;