博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

Eric`s Technical Blog

看天上云卷云舒 我自怡然自得
sharewith.cublog.cn


局域网arp攻击分析防范------第一章
    最近在做一个局域网中的arp攻击分析和防护的项目,下面是一些点点滴滴,记录下来希望能够方便后人
    考虑到大多数局域网(含有几十到100多台的工作组)一般都是windows操作系统,所以就考虑了在windows环境下实现,以后有时间可以移植到linux环境下。
    文章转载请注明出处且应该包含以上说明文字,如有问题请mail作者lwhfboy@126.com谢谢。
                           第一章: 环境配置
环境的配置:
 要分析局域网中的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")皆可。
   第一章到此结束,在下一章中我们一起来讨论arp协议。
如果你有什么疑虑可以mail作者:lwhfboy@126.com顺祝编程愉快。。。

发表于: 2007-07-30 ,修改于: 2008-03-30 18:03,已浏览441次,有评论0条 推荐 投诉


网友评论

发表评论