庖丁解牛--winpcap源码彻底解密
文章平均质量分 79
smilestone322
通过软考: 系统架构设计师和信息系统项目管理师考试
工业相机和DVR开发,熟悉windows驱动开发,camera sdk开发,3D摄像头sdk开发。
联系方式:smilestone322@sina.com
展开
-
庖丁解牛-----winpcap源码彻底解密(四)
<br /><br /><br />庖丁解牛-----winpcap源码彻底解密(四)<br /><br /><br />版权申明: 原创文章,转贴请注明出处!!!!!!!!<br /><br /><br />(1) 如何设置内核缓冲区的大小,前面已经谈过设置内核缓冲区的函数是pcap_setbuff,查看winpcap的开发文档,pcap_setbuff的定义如下:<br />int pcap_setbuff(pcap_t *p,int dim);<br />Set the size of t原创 2010-12-19 21:59:00 · 6379 阅读 · 11 评论 -
庖丁解牛-----winpcap源码彻底解密(一)
庖丁解牛-----winpcap源码彻底解密 原创:转载请注明出处; 最近忙一个项目,需要使用winpcap抓取网络数据包,调用winpcap提供的api进行抓包后,发现丢包情况比较严重,而且cpu占用率比较大。所以下定决心,对winpcap源码进行分析,因为对驱动和对Ndis网络驱动比较熟悉,所以分析源码还不是很费劲,其实winpcap底层的npf不过是一个Ndis协原创 2010-12-18 22:50:00 · 9195 阅读 · 22 评论 -
winpcap 在win7 64位上广播 以太网数据包,当存在虚拟机或无线网卡(wifi)时存在问题;
使用winpcap做局域网的设备查找功能,当原创 2014-07-11 14:39:43 · 2400 阅读 · 0 评论 -
庖丁解牛—winpcap源码彻底解密系列续集(11)
庖丁解牛—winpcap源码彻底解密系列续集(11)如何发送数据包:源码解析;int pcap_sendpacket(pcap_t * p, u_char * buf, int size原创 2011-10-28 15:45:32 · 2139 阅读 · 0 评论 -
庖丁解牛—winpcap源码彻底解密系列续集(9)
设置用户缓冲区:pcap_setuserbuffer源码如下: intpcap_setuserbuffer(pcap_t *p, int size) { unsigned char *new_buff; if (!p->adapter) { sprintf(p->errbuf,"Impossible to set user原创 2011-10-27 19:34:04 · 1936 阅读 · 0 评论 -
庖丁解牛-----winpcap源码彻底解密(三)
庖丁解牛-----winpcap源码彻底解密(三) 上一篇讲了怎么发送数据包,这次接着讲怎么接收数据包,数据包过滤后,就被复制到内核缓冲区(kernel buffer),接收数据包的方式有2种,使用回调函数接收数据包,比如pcap_loop,pcap_dispatch,二是非回调函数的方式来接收数据包,如pcap_ next, pcap_next_ex。这一篇讲讲怎么发送数据包。原创 2010-12-19 21:40:00 · 4417 阅读 · 3 评论 -
庖丁解牛---winpcap源码彻底解密系列续集(10)
设置读超时: PacketSetReadTimeout(p->adapter, p->md.timeout);BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout){ BOOLEAN Result; TRACE_ENTER("PacketSetReadTimeout原创 2011-10-27 19:48:44 · 2835 阅读 · 5 评论 -
庖丁解牛—winpcap源码彻底解密系列的续集(8)
设置超时,设置mintoCopy,设置内核缓冲,设置用户缓冲,设置MTU的大小,这些实现都和设置混合模式相似。讲解如下: 如设置内核缓冲区,代码段如下pcap_win32的pcap_activate_win32函数: if (p->opt.buffer_size == 0) p->opt.buffer_size = WIN32_DEFAU原创 2011-10-27 19:22:15 · 1895 阅读 · 0 评论 -
庖丁解牛---winpcap源码彻底解密系列的续集(7)
DeviceIoControl对应npf.sys中的NPF_IoControl函数; NTSTATUS NPF_IoControl(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp){ POPEN_INSTANCE Open; PIO_STACK_LOCATION IrpSp; PLIST_ENTRY原创 2011-10-27 16:51:53 · 1922 阅读 · 0 评论 -
庖丁解牛-----winpcap源码彻底解密(五)
庖丁解牛-----winpcap源码彻底解密(五)原创 2010-12-19 22:10:00 · 2821 阅读 · 4 评论 -
庖丁解牛—winpcap源码彻底解密系列续集(13)
如何从网卡读取数据包:Winpcap从网卡获取数据是从NPF_tap开始,NPF_tap是一个回调函数,当网卡有数据包到来时,NDis调用该函数接收数据包,该函数中首先进行了过滤,源码如下;NDIS_STATUS NPF_tap (IN NDIS_HANDLE ProtocolBindingContext,IN NDIS_HANDLE MacReceiveContext,IN PVOID原创 2011-10-31 15:11:21 · 1912 阅读 · 1 评论 -
庖丁解牛—winpcap源码彻底解密续 (12)
应用程序如何和内核驱动交互Event;/*! \brief Allocates the read event associated with the capture instance, passes it down to the kernel driver and stores it in an _ADAPTER structure. \param AdapterObjec原创 2011-10-29 16:35:41 · 1994 阅读 · 0 评论 -
庖丁解牛---winpcap源码彻底解密系列的续集(6)
如何设置混合模式,本文是庖丁解牛---winpcap源码彻底解密系列的续集: static intpcap_activate_win32(pcap_t *p){ NetType type; #ifdef HAVE_REMOTE char host[PCAP_BUF_SIZE + 1]; char port[PCAP_BUF_SIZE +原创 2011-10-27 16:47:54 · 2825 阅读 · 1 评论 -
庖丁解牛-----winpcap源码彻底解密(二)
<br />庖丁解牛-----winpcap源码彻底解密(二)<br />查找到网卡后,open网卡,设置过滤器,然后就该读写数据包了,下面就讲讲怎么发送和接收数据包了。<br />(4)pcap_sendpacket<br />pcap_sendpacket用来发送数据包,该函数只能发送单个的数据包,<br />intpcap_sendpacket(pcap_t *p, constu_char *buf, intsize)<br />{<br /> if (p->inject_op(p, buf,原创 2010-12-19 16:52:00 · 4248 阅读 · 1 评论