从ARP数据包打印源IP地址和目标IP地址

时间:2018-12-16 13:15:47

标签: c ip-address libpcap arp

我能够从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的代码

0 个答案:

没有答案