首页 > 解决方案 > 从 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 的代码

标签: cip-addresslibpcaparp

解决方案


推荐阅读