文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络技术网络应用利用WinPcap技术捕获数据包
精品推荐
特别推荐
·WLAN业务的若干定价和计费问题分析
·光纤CAN总线自愈环网的研究
·以太网技术及应用趋势
·IPv6 - 打造下一代IP网络
·数字签名技术简介
·代理服务器 路由器配置案例
·保障主机安全无忧 抗拒绝服务设备介绍
·突破单位网管封杀QQ、MSN端口的方法
·ADSL Modem 端口映射 全集
·如何隐藏你的IP
热点TOP10
·看在线电影断网
·查找对方IP地址的一些方法
·关于IP机顶盒的功能及其未来发展
·基于AD6620的正交解调器设计
·ADSL Modem 端口映射 全集
·如何隐藏你的IP
·网络嗅探Sniffer监控广播风暴
·Leopard中用户帐户和文件共享的新变化
·通过宽带ADSL路由多机共享上网
·批量命令处理 高效管理网络

利用WinPcap技术捕获数据包

日期:2008年6月3日 作者: 查看:[大字体 中字体 小字体]


2)获得系统中网络适配器的名字。
PacketGetAdapterNames(AdapterNamea,&AdapterLength);
  tempa=AdapterNamea;
  templa=Adapternamea;
  while ((*tempa!=’\0’)∣∣(*tempa-1!=’\0))
 {
    if (*tempa= =’\0’)
    {
      memcpy(AdapterList[i],temla,tempa-templa);    //内存数据拷贝
      templa=tempa+1;
      i++
      }
       tempa++
    }
3)从适配器列表中选择一个默认的 0 号适配器。
LPADAPTER lpAdapter
  lpAdapter = PacketOpenAdapter (AdapterList[0]);
  if (!lpAdapter∣∣(lpAdapter->hFile==INVALID__HANDLE__VALUE))
{
    dwErrorCode=GetLastError();
        return FALSE;
 }
4)将所选择的适配器 lpAdapter 设置为混杂模式。
PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS)
5)设置 BPF 内核中包过滤的过滤器的代参政。利用这个函数右以完成对于原始数据包的初始的过滤处理,如根据其中端口号、IP 地址等。
 PacketSetBpf(LpAdapter AdapterObject,structbpf_program*fp)
6)设置缓冲池为512K字节。
  PacketSetBuff(lpAdapter,512000);
7)分配一个数据包对象,并连接已分配的缓冲。
  PacketInitPacket(lpPacket,(char*)bufferReceive,512000);
8)捕获多个数据包。从网卡 lpAdapter 接收数据包,并将数据包放入 lpPacket所指向的数据包结构体中,若接收成功返回 TRUE,否则返回 FALSE。
  PacketReceivePacket(lpAdapter,lpPacket,TRUE);
9)通过触发回调函数,把捕获符合过滤器规则的数据包转发给网络协议分析模块进行分析处理。
10) 结束接收数据包,释放数据包对象。
 if(lpPacket!=NULL
  {
     PacketFreePacket(lpPacket);
     lpPacket=NULL;
  }
11)关闭网卡设备,将网卡恢复到正常接收状态。
  if(lpAdapter!=NULL
  {
     PacketCloseAdapter(lpAdapter);
     lpAdapter=NULL;
}

6、结束语
  数据包捕获技术是网络管理系统的关键技术,已经按照标题4中的流程进行了简单的实现。如果在一个繁忙的网络上进行截获,而不设置任何过滤,那得到的数据包是非常多的,可能在一秒钟内得到上千的数据包。如果应用程序不进行必要的性能优化,那么将会大量的丢失数据包。对捕包性能的优化必不可少,考虑采用多线程来处理数据包。若在程序中建立一个公共的数据包缓冲池,这个缓冲池是一个LILO的队列。于是在程序中使用三个线程进行操作:一个线程只进行捕获操作,它将从驱动程序获得的数据包添加到数据包队列的头部;另一个线程只进行过滤操作,它检查新到的队尾的数据包,检查其是否满足过滤条件,如果不满足则将其删除出队列;最后一个线程进行数据包处理操作,象根据接收的数据包发送新数据包这样的工作都由它来进行。考虑尽可能少丢失数据包的条件,应该是进行捕获操作的线程的优先级最高,这样就可以得到更高的捕包性能。

(出处:清风网络学院


上一页 [1] [2] [3] 




上一篇:VoIP网络设备和结构的演进及组网要素

下一篇:NGN网络技术发展趋势分析

相关文章:
·只需十三招 轻松学会利用博客赚钱
·黑客技术之知道对方IP入侵别人的电脑
·做QQ高手,你应该了解的17种QQ技术
·基础知识 初级黑客安全技术命令详解
·免费攻略:利用QQ网吧免费开蓝钻
·计算机等级考试三级网络技术复习提纲(下)
·建立自由的会计日期的报表--1.4.让报表处理期初和期末之间的数据
·利用word将PDF转换DOC文件的方法
·跳出迷“局”—破解无线局域网的技术密码
·EasyRecovery 604硬盘数据恢复软件技巧
相关软件:
·电脑安装与维修实用技术1
·精通.Net核心技术原理与构架
·3D 动画与建模:人体的综合与分析技术
·UML面向对象建模技术 csf 视频教程
·SQL/MYSQL/数据库教程专栏
·逐步精通数据库 sql server 视频教程
·asp编程技术与综合实例演练(PDG)
·专业音响技术
·2005年造价工程师土建的技术与计量笔记
·东南大学SQL数据库基础视频教学全42讲 CSF 详见查看

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot