Я могу напечатать адрес назначения и адрес источника из пакета ARP.Но я хочу напечатать исходный IP-адрес и целевой IP-адрес из запроса ARP.Я искал в и нашел эту структуру.
`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);
Выше приведен код, который я использую для печати исходного IP-адреса или исходного MAC-адреса из запроса ARP