好。之前说了那么多。最终到了,我们能够操刀的时候了。

在对ARP协议编程前。我们必需要能控制网络适配器(网卡)。这个部分就是驱动!
“我们要编写网卡驱动?”,对,可是,至少我们现阶段不须要。

网络上有写好的驱动和开发包。我们拿来就能够用。

我这里使用的是winpcap的驱动以及开发包,因此我们首先要安装和搭建我们的编程环境:


1、下载winpcap驱动。

假设是安装了wireshark的话,它就自己主动帮我们装了winpcap驱动。(wireshark是基于winpcap开发的)
http://www.winpcap.org/install/default.htm 这个是winpcap官网下载页面。我下载的是4.1.3版本号的。

下载到本地后。直接双击安装就能够了。

2、下载winpcap开发包
http://www.winpcap.org/devel.htm 这个是winpcap官网的开发包下载。主要它的版本号要和驱动版本号一致。

下载到本地后,解压缩就能够了。里面有winpcap的库、头文件,以及样例和使用文档

http://www.ferrisxu.com/WinPcap/ 这个是winpcap相关函数的使用说明(中文)

3、环境配置。
vs环境设置
3.1  向vs2012导入头文件
     有两种方式,这两种方式都能够。但我更倾向于第2中,由于第1中存在污染源库的风险
     (1) 直接把 ...\WpdPack\Include\(这个文件夹是第2步中开发包解压后的文件夹) 下的全部文件都拷贝到 vs2012 的include 文件夹下
     (2) 在vs2012中配置:
     项目属性 -->配置属性 -->c/c++ --> 常规; 右側【附加包括文件夹】 在这一选项中把路径加进去,如图:

  3.2 向vs中导入库
     有两种方式,这两种方式都能够。但我更倾向于第2中,由于第1中存在污染源库的风险
    (1) 直接把
...\WpdPack\lib\(这个文件夹是第2步中开发包解压后的文件夹) 下的全部文件都拷贝到 vs2012 的lib 文件夹下
    (2)  在vs2012中配置:
      (i)
项目属性 -->配置属性 --> 链接器 --> 右側的 附加库文件夹。在这一选项中把路径加进去,如图:
    (ii) 项目属性 -->配置属性 --> 链接器 --> 输入 右側的 附加依赖项 把库加进去,如图 :

  3.3 添加编译选项WIN32
   假设按以上步骤操作后。编译的话,回报: pcap/pcap.h 找不到<system/time.h>
   我们打开pcap/pcap.h这个文件。能够看到:
应该是没有 WIN32 的定义,于是仅仅要加一个这种定义就可以,如图:


4、測试:
我们的环境基本上已经配置好了,如今我们来測试下,能否够正常执行。

下面这段代码来自:http://www.winpcap.org/docs/docs_412/html/group__wpcap__tut1.html,主要功能是获取机器上的全部网络适配器(网卡)。

在实现的时候。得加上 #define HAVE_REMOTE 这个宏。由于pcap_findalldevs_ex()这个函数是定义在remote-ext.h中。而要正确使用这个函数的话,须要有这个宏的定义。(读者能够进入pcap.h查找remote-ext.h这个文件的包括)
#define HAVE_REMOTE
#include "pcap.h" void main()
{
pcap_if_t *alldevs;// 适配器列表。它是一个链表的数据结构
pcap_if_t *d; // 保存某个适配器
int i=0;
char errbuf[PCAP_ERRBUF_SIZE]; //获取本地设备列表
/* Retrieve the device list from the local machine */
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);
exit(1);
} /* Print the list */
for(d= alldevs; d != NULL; d= d->next)
{
printf("%d. %s", ++i, d->name);
if (d->description)
printf(" (%s)\n", d->description);
else
printf(" (No description available)\n");
} if (i == 0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return;
} /* We don't need any more the device list. Free it */
pcap_freealldevs(alldevs);
}

这里对一些关键代码作下简单说明,关于其它的具体说明及使用,大家能够參考winpcap的技术文档。

pcap_if_t *alldevs;// 适配器列表,它是一个链表的数据结构
//查找网络适配器。并把结果保存在 alldevs 里
pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf)
// 用完之后要释放
pcap_freealldevs(alldevs);


ARP协议(3)ARP编程--winpcap&amp;vs2012配置的更多相关文章

  1. arp协议分析&python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  2. ARP协议(4)ARP编程

    之前的几篇文章,分别介绍了 ARP 协议格式,在vs2012里配置winpcap环境,我们该做的准备都已经做完了.如今我们真正来实现了. 一.定义数据结构 依据ARP的协议格式,设计一个ARP协议格式 ...

  3. 浅析ARP协议及ARP攻击

    一. ARP数据包结构 (1)硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1:(2)协议类型:指明发送方提供的高层协议类型:它的值为 0x0800 即表示 IP地址.(3)硬件地址长度和协议 ...

  4. ARP协议与ARP攻击入门

    一 ARP协议 ARP协议是一个年代相当"久远"的网络协议.ARP协议制定于1982年11月,英文全称:Address Resolution Protocol,即"地址解 ...

  5. 从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包

    wireshark:是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前 ...

  6. ARP协议格式、ARP运行机制入门学习

    相关学习资料 http://baike.baidu.com/view/149421.htm?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212& ...

  7. Networking - ARP 协议

    ARP 协议概述 ARP(Address Resolution Protocol),即地址解析协议,用于把 IP 地址映射到物理地址.网段上的每台主机都维护着一个被称为 ARP Table 或 ARP ...

  8. ARP协议分析

    一.ARP概述 网络中所有的协议(HTTP.URL.FTP.TELNET.TCP.UDP.ARP ······)都包含在TCP/IP协议栈中,从使用上来看:其中大部分协议都是大家平常上网所接触到的,不 ...

  9. ARP协议分析(Wireshark)

    一.说明 1.1 背景说明 以前学网络用的谢希仁的<计算机网络原理>,一是网开始学不太懂网络二是ARP协议是没有数据包格式的(如果没记错应该是没有).学完只记得老师说:ARP很简单的,就是 ...

随机推荐

  1. LDA解决的问题

    人类是怎么生成文档的呢?LDA的这三位作者在原始论文中给了一个简单的例子.比如假设事先给定了这几个主题:Arts.Budgets.Children.Education,然后通过学习训练,获取每个主题T ...

  2. Mysql慢查询和慢查询日志分析利器&ndash;mysqlsla

    1.安装mysqlsla Source code     wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz tar zvxf mysqlsl ...

  3. selenium 最大化浏览器是解决浏览器和驱动不匹配的方法如下

    那么要想selenium成功的操作chrome浏览器需要经历如下步骤: 1.下载ChromeDriver驱动包(下载地址: http://chromedriver.storage.googleapis ...

  4. guice整合struts2与jpa,guice的使用(九)

    传统我们开发一般使用ssh,但是有些微服务应用的项目我们不需要这么臃肿的框架做开发,于是采用了guice+struts2+guice作为框架组合进行了开发. 先看我们项目引用的jar包: 使用的时候一 ...

  5. Centos7下Docker的使用

    一.安装Docker 1.1.查看原有系统是否已经安装docker yum list installed | grep docker 1.2.如果有则不需要继续安装,想重新安装,先卸载 yum -y ...

  6. 织梦dedecms红黑配图片模板源码v2.0

    dedecms红黑配风格美女图片站是采用dedecms程序搭建的图片网站源码,网站感觉很大气,简约但是不简单,适合做图片网站.网站模板是收集其他网站的模板,感谢原网站提供者.在安装过程中出现问题,现已 ...

  7. mybatis学习笔记之基础复习(3)

    mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...

  8. vue-阻止事件冒泡-开启右键-键盘类事件

    一: 阻止事件冒泡 布局: 当点击按钮时,会触发button的click 也会触发父级的方法 <div id="box"> <div @click="p ...

  9. boost的单例模式

    template <typename T> struct singleton_default {   private:     struct object_creator     {    ...

  10. 优动漫PAINT是什么?有哪些功能和特色

    优动漫PAINT软件介绍: 优动漫PAINT是一款功能强大的漫画制作软件,该软件可以帮助漫画创作人员制作出完美,惟妙惟肖的漫画作品,它搭载了绘制漫画和插画所需的所有功能--丰富的笔工具.超强的笔压感应 ...