新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 讨论密码学、密码协议、入侵检测、访问控制等与安全理论研究有关的主题
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机理论与工程『 安全理论 』 → [原创]Winpcap学习第一天 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 26178 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: [原创]Winpcap学习第一天 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     binaryluo 帅哥哟,离线,有人找我吗?
      
      
      威望:6
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:679
      积分:5543
      门派:IEEE.ORG.CN
      注册:2005/2/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给binaryluo发送一个短消息 把binaryluo加入好友 查看binaryluo的个人资料 搜索binaryluo在『 安全理论 』的所有贴子 引用回复这个贴子 回复这个贴子 查看binaryluo的博客楼主
    发贴心情 [原创]Winpcap学习第一天

    说明:本系列文章是我阅读winpcap手册后整理的一个学习笔记。文章中出现的所有代码是我根据winpcap手册中的示例代码进行了学习,并调试通过,其中对部分代码作了修改,关于代码的版权我尊重winpcap手册中的版权说明,如果你使用了本系列文章中的代码而引起任何的版权或造成安全威胁等问题,我将不负任何责任。
     
           下载好了WpdPack_3_2_alpha1.zip(下载地址:http://www.winpcap.org/install/bin/WpdPack_3_2_alpha1.zip),解压后除了有文档,例子外还有Include和lib,于是想用TC2来做开发环境,但是编译的时候老是出问题,于是放弃。后来阅读了Winpcap手册后才知道因为是在windows上开发,所以它推荐用VC++6.0,于是改用VC。

        第一个试验是:

    #include <pcap.h>
    #include <remote-ext.h>

    int 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)
    {
      printf("Error in pcap_findalldevs_ex: %s\n", errbuf);
      exit(1);
    }

    /* Print the list */
    for (d = alldevs; d != NULL; d = d->next)
    {
      /* Print the device's name */
      printf("%d. %s", ++ i, d->name);

      /* Print the device's dscription */
      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 0;
    }

    /* We don't need any more the device list. Free it */
    pcap_freealldevs(alldevs);

    return 1;
    }

           编译的时候又遇到问题——“无法打开pcap.h”。又查看开发手册才找到解决方法:

    1.安装Winpcap驱动。下载地址:http://www.winpcap.org/install/bin/WinPcap_3_1.exe。

    2.将Winpcap的Include,Lib目录添加进VC6.0的环境变量中;

    3. 针对每一个项目,先用VC打开项目,然后在"Project->Settings",标签栏出选择"C/C++",在"Preprocessor definitions"的输入框里添加"WPCAP",再选择"Link",在"Object/library modules"的输入框里添加"wpcap.lib Packet.lib"。

           再编译时终于OK了。之后,阅读代码并查看开发手册学到了下面的东西:

    pcap_if是一个结构体,具体点它是一个链表的结点,他的定义如下:

    struct pcap_if {

    struct pcap_if *next;

    char *name;

    char *description;

    struct pcap_addr *addresses;

    u_int flags;

    }

        另外,在pcap.h中有一句“typedef struct pcap_if pcap_if_t;”,所以也可以用pcap_if_t代替pcap_if。

    int pcap_findalldevs_ex(char * source,

    struct pcap_rmtauth * auth,

    pcap_if_t ** alldevs,

    char * errbuf

    )

        这个函数是’pcap_findalldevs()’的一个超集。’pcap_findalldevs()’比较老,他只允许列出本地机器上的设备。然而,’pcap_findalldevs_ex()’除了可以列出本地及其上的设备,还可以列出远程机器上的设备。此外,它还能列出所有可用的pcap文件到指定的文件夹。’pcap_findalldevs_ex()’是平台无关的,然而它以来于标准的’pcap_findalldevs()’来获得本地机器的地址。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/1 9:32:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 安全理论 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/12/13 22:03:21

    本主题贴数7,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  [原创]Winpcap学习第一天(2824字) - binaryluo,2006年6月1日
        回复:  楼主,我编成没学好(18字) - feifei805,2006年9月13日
        回复:  This can only be used in VC++ ,and can not use Mi..(114字) - netsay,2006年7月27日
        回复:  现在知道了在tools->option->directories里面可以设置现在就从第一天学习..(140字) - hiyizhiyu,2006年7月6日
            回复:  [quote][b]以下是引用[i]hiyizhiyu在2006-7-6 18:17:00[/i]..(257字) - binaryluo,2006年7月7日
        回复:  谢谢搂主分享我是刚刚开始学习使用winpcap在网上down的源码在6.0总编译总是出错所以..(182字) - hiyizhiyu,2006年7月6日
        回复:  thanks for sharing(18字) - jjjjkk,2006年6月5日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    19,257.810ms