打印数据包内容的HEX值

时间:2012-10-21 18:52:03

标签: c networking tcp network-programming libpcap

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

1 个答案:

答案 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偏移量;