c - 从 ARP 数据包打印源和目标 IP 地址
问题描述
我能够从 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 的代码