最近在做一个局域网中的arp攻击分析和防护的项目,下面是一些点点滴滴,记录下来希望能够方便后人
考虑到大多数局域网(含有几十到100多台的工作组)一般都是windows操作系统,所以就考虑了在windows环境下实现,以后有时间可以移植到linux环境下。
环境的配置:
要分析局域网中的arp攻击,最基本的我们必须要有自己的嗅探程序,来监听局域网中的arp packet。
非常有名气的windump是windows环境下的一个不错的抓包分析工具(命令行工具)。windump就是利用WinPcap
(The Windows Packet Capture Library)库写成的。所以我们的嗅探程序也利用winPcap库来编写。WinPcap
包括一个驱动和一个动态链接库,这个驱动通过扩展操作系统提供给我们更底层的网络访问,而该链接库提
供给我们底层网络的访问接口。
更多关于WinPcap,可以上其官方主页
http://www.winpcap.org/来了解。
工欲善其事,必先利其器,下面就来介绍环境的配置。
1.首先安装Visual Studio 6.0,可以直接直接按照默认安装。
2.从这里
http://www.winpcap.org/install/bin/WinPcap_4_0_1.exe下载并安装WinPcap库(其实就是在本
机安装WinPcap库的driver和dll)。
3.从这里
http://www.winpcap.org/install/bin/WpdPack_4_0_1.zip下载WinPcap的开发包,并解压到随便
一个文件夹。譬如我解压到C:\WPDPACK目录。
4.建立一个VC工程。
5.包含相应的头文件和库文件(非常重要):
在VC菜单栏中点 Tool->Options->directories选项卡,
a.选择Include files,在下面Directories栏目中添加C:\WPDPACK\INCLUDE
b.选择Library files,在下面Direcroties栏目中田间C:\WPDPACK\LIB
在VC菜单栏中点 Project->Project Settings->Link选项卡,在Object/library modules栏目的末尾
加上wpcap.lib
6.测试环境
//test.c
//得到本机的网卡列表
#include "pcap.h"
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)//这样不同的库有的不支持
if (pcap_findalldevs(&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);
}
7.如果程序编译链接通过,那么执行后应该会看到如下输出:
1. \Device\NPF_GenericDialupAdapter (Adapter for generic dialup and VPN capture)
2. \Device\NPF_{A48D45CD-813B-47D9-8375-63EC717976EE} (VMware Virtual Ethernet Adapter)
3. \Device\NPF_{D95EBBC6-E11B-42B9-97EE-09E4C5BAB2D9} (Intel(R) PRO/1000 MT Network Connection (Microsoft's Packet Scheduler) )
4. \Device\NPF_{9649633A-DEE2-45CE-AAA5-6E08CBBFCE45} (VMware Virtual Ethernet Adapter)
那么恭喜你,WinPcap环境配置成功。
注意,因为第一次配置总会一不小心有点小错误,这是在所难免的,下面就一些常见的错误和解决办法
列出来,希望能对你有帮助:
a. 确保你是在windows环境下(^_^有点搞笑了),而且必须安装winpcap的驱动才行(参见步骤2)。
b. 如果程序在调试时出现类似如下问题:cann`t find wpcap.dll.....等找不到动态链接库的毛病时,请下载安装winpcap
(参见步骤2)
c. 如果编译的时候出现cann`t open include file:'pcap.h': No such file or directory等类似找不到头文件时,请查看
是否加入了winpcap开发包的include文件夹(参见步骤5)
d. 如果链接的时候出现fatal error LNK1104:cann`t open file "wpcap.lib"等问题时,请查看是否加入了winpcap开发包的
lib文件夹(参加步骤5)
e. 如果链接的时候出现error LNK2001: unresolved external symbol _pcap_findalldevs等问题时,请查link中是否加入了
wpcap.lib,方法参见步骤5或者可以在程序的开头加上 #pragma comment(lib, "wpcap.lib")皆可。