利用WinPcap编程,实现基于ARP欺骗的中间人攻击

*******此实验旨在交流学习,请勿用在非正常合法途径*******

利用WinPcap编程,实现基于ARP欺骗的中间人攻击

一、实验内容

  • 利用WinPcap,分别向被欺骗主机和网关发送APR请求包, 达到同时欺骗目标主机和网关的目的;
  • 所有目标主机和网关之间的数据都会被我们劫持,过滤 两者之间的所有http交互数据包,并保存为文件。 (http包的过滤可用80端口来标识)

二、设计思想

  • 理解ARP欺骗原理,将本机作为ARP欺骗的发起主机,即发起“中间人攻击”
  • 本机欺骗网关,网关向本局域网内其他主机发送的所有数据包时,本机将数据包的发送方MAC地址均改为本机的MAC地址。
  • 本机欺骗网内所有主机,其他主机向局域网网关发送的所有数据包时,本机将数据包的发送方MAC地址均改为本机的MAC地址。
  • 欺骗主机作为“中间人”,被欺骗主机的数据都经过它中转一次,这样欺骗主机可以窃取到被它欺骗的主机之间的通讯数据,并将其存储到相应文件之中,以便之后的详细分析。

三、实验要求

  提交源码(源码编写要规范)、可执行程序、实验报告(要有程序运行截图)。

四、实验分析

  1. 获取与网卡绑定的设备列表
  2. 要求用户选择用于捕获数据帧的设备
  3. 设置过滤规则
  4. 使用wpcap.dll实现ARP报文的发送功能
  5. 借助网络分析工具对ARP欺骗过程进行验证和分析
  6. 利用IP地址和IPV4的首部修改IP头,进行ARP欺骗

五、实验代码

  1. 一开始发现欺骗成功,但怎么写都没办法实现转发成功
    后来修改这相应参数值
if ((adhandle = pcap_open_live(d->name, // name of the device
        65536,         // portion of the packet to capture
        0,             // open flag
        1,          // read timeout
        errbuf         // error buffer
        )) == NULL)
    {
        fprintf(stderr, "\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
        pcap_freealldevs(alldevs);
        return -1;
    }

使得相应的能够转发成功
1. 又遇见新的问题,MAC值传递有问题

void transMac(char source[], u_char *dest)
{
    short i;
    int sourceLen = strlen(source);
    unsigned char highByte, lowByte;
    for (i = 0; i < sourceLen; i += 3)
    {
        highByte = toupper(source[i]);
        lowByte  = toupper(source[i + 1]);
        if(highByte > 0x39)
            highByte -= 0x37;
        else
            highByte -= 0x30;
        if(lowByte > 0x39)
            lowByte -= 0x37;
        else
            lowByte -= 0x30;
        dest[i/3] = (highByte << 4) | lowByte;
    }
}

char GateMac[100]=”“,FackMac[100]=”“;

通过固定MAC然后进入函数中去转化,用这个值传输,使得我最终能得到正确的MAC地址
1. 后来不知道为什么当我写入文件的时候打开网页弹窗直接崩掉,经查看分析,发现是由于我忘写文件打开与关闭,导致正常的文件写入出现问题

完整代码

// ARPSpoofing.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <pcap.h>
#include <packet32.h>
#include <WinSock2.h>
#include <ntddndis.h>
#include "ArpSpoofing.h"

using namespace std;

unsigned char *mac; //本机MAC地址
unsigned char *fakemac; //被欺骗主机MAC地址
unsigned char *gatewaymac ;//网关MAC地址
unsigned long FakeIp; //要伪装成的IP地址
unsigned char *packet; //ARP包
unsigned long netsize;
unsigned long net;
pcap_t *adhandle; //一个pcap实例

struct EthernetHeader
{
    u_char DestMAC[6];    //目的MAC地址 6字节
    u_char SourMAC[6];   //源MAC地址 6字节
    u_short EthType;         //上一层协议类型&#
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值