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

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

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

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

    处理离线的存储文件(offline dump file)

        Winpcap提供了一些函数把网络通信保存到文件并且可以读取这些文件的内容。dump文件的格式跟libpcap是一样的。它以二进制形式保存了被捕获的数据包的数据并且其他网络工具(包括WinDump,Ethereal,Snort)也以此为标准。

    处理dump文件的程序结构跟前面的程序结构大致是一样的,只是这里出现了几个新的函数:(试验代码略)

    函数1:

    pcap_dumper_t* pcap_dump_open(pcap_t*    p,

                                                      const char* fname)

        打开一个保存数据包的文件。“-”的含义跟stdout是一样的。发生错误时返回NULL。p是一个由pcap_open_offline()或pcap_open_live()返回的pcap结构体;fname指定了文件的名字。你也可以调用pcap_dump_fopen()把数据包保存到一个已存在的流fp中,在Windows中,这个流必须以二进制方式打开。如果返回NULL,pcap_geterr()会显示错误信息。

    函数2:

    void pcap_dump(u_char*                          user,

    const struct pcap_pkthdr* h,

    const u_char*                   sp)

        把数据包保存到硬盘。pcap_dump()把数据包输出到pcap_dump_open()打开的文件中。注意,它的参数要跟pcap_dispatch()或pcap_loop()的回调函数的参数一致。如果直接被调用,则user这个参数的类型应该是pcap_dumper_t,也就是pcap_dump_open()的返回值类型。

    在读取dump文件的内容时,用pcap_open_offline()来打开dump文件,然后用pcap_loop()来顺序读取数据包。读数据包跟接收数据包的过程是一样的。

    函数3:

    int pcap_live_dump(pcap_t*     p,

                                char*         filename,

                                int             maxsize,

                                int             maxpacks)

        保存数据包到文件。pcap_live_dump()把网络通信从一个接口保存到一个文件中。这个函数将运行在核心态(kernel level),因此它的效率比pcap_dump()的更高。它的参数是一个用pcap_open_live()获得的接口描述符,一个dump文件名的字符串,文件的最大尺寸(maxsize,以字节为单位)和文件能容纳的数据包的最大个数(maxpcaks)。把maxsize或maxpacks设置为0意味着没有限制。当达到maxsize或maxpacks时,存储结束。注意,当两个限制(maxsize,maxpacks)中的一个到达时,存储将停止,但是文件仍然是被打开的。为了正确的保存数据并且使文件处于一致状态,必须用pcap_close()关闭适配器。

          pcap_live_dump()和pcap_ dump()的区别是设置限制和性能。pcap_live_dump()使用Winpcap NPF驱动在核心态进行转储,最大限度的降低了上下文的交换次数和内存副本数。pcap_live_dump()在其他操作系统上是不可用的,它是Winpcap特定的函数,只能在Win32上使用。

    函数4:

    pcap_t* pcap_open_offline(const char*           fname,

    char*               errbuf)

        为读数据包打开一个tcpdump/libpcap格式的文件。Fname指定了要打开的文件名,“-”的含义与stdin是一样的。你也可以调用pcap_fopen_offlline()从一个已经存在的流fp中读取数据。注意,在Windows中,这个流必须以二进制方式打开。errbuf保存pcap_open_offline()出错是返回的错误信息。


       收藏   分享  
    顶(0)
      




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

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

     *树形目录 (最近20个回帖) 顶端 
    主题:  [原创]Winpcap学习第五天(2723字) - binaryluo,2006年6月1日
        回复:  还不错!!!!!!!看你写的这些我也真是想学啊~~~~~~~(62字) - qqcszrzr,2006年8月15日
        回复:  顶一下(6字) - jiaozi1216,2006年8月10日

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