我能够从ARP数据包中打印目标地址和源地址。但是我想从ARP请求中打印源IP和目标IP地址。我在中进行了搜索,发现了这种结构。
`struct ether_arp {
struct arphdr ea_hdr;
u_char arp_sha[6];
u_char arp_spa[4];
u_char arp_tha[6];
u_char arp_tpa[4];
};`
但是,当我尝试打印arp_spa
时,会出现类似0:1:8:0
的情况。
显然这不是源IP地址。
arp_ptr = (struct ether_arp *) packet;
我认为这是错误的,因为某些字节需要跳过。但是我对此不确定
任何人都可以发表评论。
编辑:
arp_ptr = (struct ether_arp *) packet;
ptr = arp_ptr->arp_sha;
i = ETHER_ADDR_LEN;
printf(" source is: ");
do{
printf("%s%x",(i == ETHER_ADDR_LEN) ? " " : ":",*ptr++);
}while(--i>0);
上面是我用来从ARP请求打印源IP或源MAC的代码