- 博客(48)
- 收藏
- 关注
原创 11122
<br />libpcap使用举例(1)<br /><br />作者:小四 < mailto: scz@nsfocus.com ><br />主页:http://www.nsfocus.com<br />日期:2001-01-10<br /><br /><br /><br />我们曾经提供过<<libnet使用举例(1-12)>>,比较详细地介绍了报文发送编程。始终<br />没有介绍libpcap报文捕捉编程的原因很多,tcpdump、snort等著名软件包都是基于<br />libpcap,加上W.Ri
2010-07-08 08:07:00
1075
原创 sfdsf
<br />网友回复:char packet_filter[] = "dst net(x.x.x.x)&& port 80"; <br />你的那个tcp或者udp在后面直接加上就可以了。dst net(x.x.x.x)&& port 80 && tcp <br />这样就ok了。 <br />分数拿来吧!<br />网友回复:免得你耍赖,给你一个不要分的提示: <br />dst net(x.x.x.x ¦ ¦y.y.y.y)要多个地址过滤, <br />des net(x.x.x.x) ¦ ¦src n
2010-07-08 07:58:00
525
原创 wincapp
winpcap 驱动各项功能】 1> 捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据winpcap结构包; 2> 在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉; 3> 在网络上发送原始的数据包; 4> 收集网络通信过程中的统计信息。 winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于
2010-07-08 07:42:00
446
原创 tcp
<br />传统的应用程序都是单线程的,即在程序运行期间,由单个线程独占CPU的控制权,负责执行所有任务。在这种情况下,程序在执行一些比较费时的任务时,就无法及时响应用户的操作,影响了应用程序的实时性能。在监控系统,特别是远程监控系统中,应用程序往往不但要及时把监控对象的最新信息反馈给监视客户(通过图形显示),还要处理本地机与远程机之间的通信以及对控制对象的实时控制等任务,这时 ,仅仅由单个线程来完成所有任务,显然无法满足监控系统的实时性要求。在DOS系统下,这些工作可以由中断来完成。而在Windows N
2010-06-27 17:53:00
424
原创 winsend9
1.7.3.2 高分辨率计时器(High-Resolution Timer)计数器是一个通用的术语,在编程用来指一个递增的变量。一些系统包含一个高分辨率的执行计数器,提供高分辨率的逝去时间。如果系统上存在一个高分辨率的执行计数器,就可以使用QueryPerformanceFrequency函数来表示频率,采用每秒多少个的形式表示。该计数器的值依赖于处理器。例如,在一些处理器上,计数可能就是处理器时钟的周期。函数QueryPerformanceCounter获得高分辨率执行计数器的当前值。通过在代码的起
2010-06-27 17:36:00
606
原创 winsend8
1.7.3 发送队列方式的接口实现1.7.3.1 PacketSendPackets函数函数发送数据包队列到网络,函数原型如下:INT PacketSendPackets(LPADAPTER AdapterObject, PVOID PacketBuff, ULONG Size, BOOLEAN Sync)参数AdapterObject指向一个_ADAPTER结构体,该结构体表示将发送数据包的网络适配器。参数PacketBuff指向待发送数据包的缓冲区。参数Size为参数Pac
2010-06-27 17:35:00
848
原创 winsen7
1.7.2 单个数据包发送多次的接口实现为发送数据包,一个用户层应用程序在NPF设备上执行一个WriteFile系统调用。这样发送每一个数据包都需要一次系统调用,网络数据包的发送效率并不是非常高。因为该原因,WinPcap添加了使用一次写系统调用就能把单个数据包发送多次的功能。用户层应用程序能够设置单个数据包发送的次数,例如设为1000,那么应用程序所写的每个原始数据包在驱动设备文件上都将会发送1000次。应用程序能够用该特性为测试目的生成高速的网络流量:上下文切换的负载不再出现,因此性能显著性的变好
2010-06-27 17:34:00
439
原创 winsen6
1.7 packet.dll对应得函数接口 packet.dll主要依赖于操作系统的系统调用WriteFile、DeviceIoControl实现单个数据包发送与发送队列方式的发送。下面分析packet.dll中相应函数的内部实现。1.7.1 发送单个数据包的接口实现首先了解_PACKET结构体的定义,它提供了单个数据包发送的基本数据结构。结构体_PACKET 在Common/ Packet32.h文件中定义的。该结构体的主要用途是为了数据包接收使用,不过packet.dll中也用来实现数据
2010-06-27 17:33:00
508
原创 winsend5
1.6.2 发送队列方式的接口实现在下列两种发送方式都不适用的情况下:Ø应用软件每次发送一个数据包一次;Ø应用软件每次发送一个数据包大于一次,次数预先设定;为了能够发送大量的数据包,WinPcap提供了基于发送队列发送的方式。通过发送队列提供了一种高级的,强大的,结构更优的方式来发送一组数据包。库wpcap.dll中与发送队列相关的函数所使用的pcap_send_queue结构体,是存储原始数据包(将被pcap_sendqueue_transmit函数发送到网络上的数据包)的数据结构,具体定义如下:str
2010-06-27 17:32:00
3067
原创 wincap数据包发送1
NPF允许把原始数据包发送到网络上,而且针对不同的应用提供了下列四种发送方式:n 应用软件每次发送一个数据包一次;n 应用软件每次发送一个数据包大于一次,次数预先设定;n 应用软件每次发送一个数据包队列,并根据时间戳发送各数据包;n 应用软件每次发送一个数据包队列,不根据时间戳,而是尽所能得快速发送各数据包;数据包被发送到网络时,NPF并不对数据包作任何协议封装,因此应用程序必须构建每个数据包的不同协议头。一般情况下应用程序不需要生成FCS,它
2010-06-27 17:29:00
782
原创 window11
1.2 关键数据结构pcap结构体结构体pcap是一个已打开捕捉实例的描述符。该结构体对用户来说是不透明的,它通过wpcap.dll提供的函数,维护它的内容。此处只说明WIN32平台下使用的成员。typedefstruct pcap pcap_t;struct pcap { ADAPTER *adapter; LPPACKET Packet; int nonblock; int snapshot; int linktype; /*网络链路的类型 */
2010-06-27 17:27:00
581
原创 win10打开与关闭适配器
1.1 wpcap.dll导出的相应函数接口库wpcap.dll为打开与关闭适配器,提供了下列函数:pcap_t* pcap_open(const char *source,int snaplen,int flags,int read_timeout,struct pcap_rmtauth *auth,char *errbuf); pcap_t* pcap_open_dead(int linktype,int snaplen); pcap_t* pcap_open_live(const cha
2010-06-27 17:26:00
1641
原创 win9
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://eslxf.blog.51cto.com/918801/1985951.4.3.1PacketUpdateAdInfo函数 函数PacketUpdateAdInfo()在一个全局链表g_AdaptersInfoList中更新一个适配器的信息。其原型如下:BOOLEAN PacketUpdateAdInfo(PCHAR AdapterName);参数AdapterName是所需更新
2010-06-27 17:24:00
427
原创 win8
1.4.3 PacketGetNetInfoEx函数函数PacketGetNetInfoEx获得一个适配器的所有地址信息,函数使用结构体npf_if_addr返回与一个适配器相关联的地址信息。函数原型如下:BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries)参数AdapterName字符串是适配器的名称;参数buffer是一个用户分配的npf_if_addr结构体类型的数组,该函数将填充此数组;
2010-06-27 17:23:00
573
原创 win7
1.4.2.3 PacketAddAdapterNPF函数函数PacketAddAdapterNPF()向适配器链表g_AdaptersInfoList中添加一个节点。参数AdName是要添加的链表节点的适配器名称。如果函数成功则返回非0值。其主要代码如下所示:static BOOLEAN PacketAddAdapterNPF(PCHAR AdName, UINT flags){ LONG Status; LPADAPTER adapter = NULL; PP
2010-06-27 17:22:00
509
原创 win6
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://eslxf.blog.51cto.com/918801/198589st1/:*{behavior:url(#ieooui) } 1.4.2.1 PacketPopulateAdaptersInfoList函数函数PacketPopulateAdaptersInfoList()创建适配器的链表g_AdaptersInfoList。该函数先释放掉g_AdaptersIn
2010-06-27 17:19:00
654
原创 win5
st1/:*{behavior:url(#ieooui) } 1.4.2 PacketGetAdapterNames函数函数PacketGetAdapterNames获取可用网络适配器的一个列表与它们的描述。参数pStr是用户分配的字符串,用来存储适配器的名称。参数BufferSize是pStr所指缓冲区的长度。如果函数失败,该变量返回存储适配器列表所需的字节数。如果函数成功,返回非0值。如果返回值为0,BufferSize返回存储适配器列表所需的字节数。通常,这是第一个与驱动程序通信的函数。它
2010-06-27 17:18:00
340
原创 win4
<br />1.4 packet.dll对应的函数接口 1.4.1 关键结构体_ADAPTER_INFO结构体_ADAPTER_INFO包含了系统上所安装适配器的可理解信息,包含用户所需的所有附加信息。该结构体的定义如下:typedef struct _ADAPTER_INFO { struct _ADAPTER_INFO *Next; //指向链表中的下一个节点 CHAR Name[ADAPTER_NAME_LENGTH + 1]; //描述该适配器的名字 CHAR Description[ADAPTER
2010-06-27 17:15:00
426
原创 win5
<br />st1/:*{behavior:url(#ieooui) } 1.4.2 PacketGetAdapterNames函数函数PacketGetAdapterNames获取可用网络适配器的一个列表与它们的描述。参数pStr是用户分配的字符串,用来存储适配器的名称。参数BufferSize是pStr所指缓冲区的长度。如果函数失败,该变量返回存储适配器列表所需的字节数。如果函数成功,返回非0值。如果返回值为0,BufferSize返回存储适配器列表所需的字节数。通常,这是第一个与驱动程序通
2010-06-27 17:15:00
478
原创 win3
1.3.3 pcap_freealldevs函数函数pcap_freealldevs()释放由函数pcap_findalldevs_ex()或pcap_findalldevs()返回的网络接口链表,函数参数alldevs为所需释放链表。函数的主要代码如下:void pcap_freealldevs(pcap_if_t *alldevs){ pcap_if_t *curdev, *nextdev; pcap_addr_t *curaddr, *nextaddr; /*遍历链表
2010-06-27 17:14:00
241
原创 win2
则将追究法律责任。http://eslxf.blog.51cto.com/918801/198579st1/:*{behavior:url(#ieooui) } 1.3 wpcap.dll中相应函数接口的实现1.3.1 pcap_findalldevs函数 wpcap/libpcap/fad-win32.c(219): 218-327参数alldevsp返回所找到的适配器列表,参数errbuf返回错误信息。 int pcap_findalldevs(pcap_if_t **allde
2010-06-27 17:13:00
365
原创 win1
通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器设备列表。同时在程序结束时确保释放获取的设备列表。图6-1函数调用关系图1.1 wpcap.dll导出的相应函数接口wpcap.dll为了获得与释放已连接的网络适配器设备列表,提供了下列函数:文件/wpcap/libpcap/pcap/pcap.h中 struct pcap_if; struct pcap_addr; int pcap_findalldevs(pcap_if_t **alldevsp,
2010-06-27 17:11:00
721
原创 sfdwincap
简介:这是Winpcap示例,Libpcap示例的详细页面,介绍了和c/c++,有关的知识,谢谢大家的观看!要查看更多有关信息,请点击此处 换下头文件就可以在winpcap和libpcap之间通用了,且有详细注释#include #include #include #include struct ether_header{ u_int8_t ether_dhost[6]; u_int8_t ether_shost[6];
2010-06-27 17:04:00
215
原创 memorr
<br />C/C++的内存分配(通过malloc或new)可能需要花费很多时。<br />更糟糕的是,随着时间的流逝,内存(memory)将形成碎片,所以一个应用程序的运行会越来越慢。当它运行了很长时间和/或执行了很多的内存分配(释放)操作的时候。特别是,你经常申请很小的一块内存,堆(heap)会变成碎片的。<br />解决方案:你自己的内存池一个(可能的)解决方法是内存池(Memory Pool)。<br />在启动的时候,一个“内存池”(Memory Pool)分配一块很大的内存,并将会将这个大块(b
2010-06-24 02:26:00
339
原创 memory
C/C++的内存分配(通过malloc或new)可能需要花费很多时。更糟糕的是,随着时间的流逝,内存(memory)将形成碎片,所以一个应用程序的运行会越来越慢。当它运行了很长时间和/或执行了很多的内存分配(释放)操作的时候。特别是,你经常申请很小的一块内存,堆(heap)会变成碎片的。解决方案:你自己的内存池一个(可能的)解决方法是内存池(Memory Pool)。在启动的时候,一个“内存池”(Memory Pool)分配一块很大的内存,并将会将这个大块(block)分成较小的块(
2010-06-24 02:24:00
254
原创 nei cun
<br />这是我翻译的文章,来自 Code Project, <br />原文作者: DanDanger2000. <br />原文链接: http://www.codeproject.com/cpp/MemoryPool.asp<br />C++ 内存池<br />l 下载示例工程 – 105Kb<br />l 下载源代码 – 17.3Kb<br /> <br />目录<br />l 引言<br />l 它怎样工作<br />l 示例<br />l 使用这些代码<br />l 好处<br />l 关
2010-06-24 02:07:00
406
原创 utility.cpp&&blocksock.h&&ex34a.h&&ex34aDoc.h&&ex34aView.h&&MainFrm.h&&SheetConfig.h&&utility.h
<br />// utility.cpp -- contains stuff used by more than one thread<br />#include <stdafx.h><br />#include "blocksock.h"<br />#include "utility.h"<br />volatile int g_nConnection = 0; // connection number<br />CString g_strServerName = "localhost"; // used
2010-06-15 17:14:00
464
原创 MainFrm.cpp&&ServerThread.cpp&&SheetConfig.cpp
<br />// MainFrm.cpp : implementation of the CMainFrame class<br />//<br />#include "stdafx.h"<br />#include "ex34a.h"<br />#include "MainFrm.h"<br />#include "Utility.h"<br />#ifdef _DEBUG<br />#define new DEBUG_NEW<br />#undef THIS_FILE<br />static char
2010-06-15 17:05:00
337
原创 ex34a.cpp&&ex34aDoc.cpp&&ex34aView.cpp
<br />// ex34a.cpp : Defines the class behaviors for the application.<br />//<br />#include "stdafx.h"<br />#include "ex34a.h"<br />#include "MainFrm.h"<br />#include "ex34aDoc.h"<br />#include "ex34aView.h"<br />#include "utility.h"<br />#include "blockso
2010-06-15 16:58:00
369
原创 ClientSockThread.cpp&&ClientUrlThread.cpp
<br />// clientsockthread.cpp (uses Winsock calls only)<br />#include <stdafx.h><br />#include "blocksock.h"<br />#include "utility.h"<br />#define MAXBUF 50000<br />CString g_strIPClient;<br />CString g_strProxy = "ITGPROXY";<br />BOOL g_bUseProxy = FALSE
2010-06-15 16:54:00
361
原创 blockSock.cpp&ClientInerThread
<br />// blocksock.cpp (CBlockingSocketException, CBlockingSocket, CHttpBlockingSocket)<br />#include <stdafx.h><br />#include "blocksock.h"<br />// Class CBlockingSocketException<br />IMPLEMENT_DYNAMIC(CBlockingSocketException, CException)<br />CBlockingS
2010-06-15 16:49:00
494
原创 bcg
<br />BCGControlBar 的使用方法<br />安装 BCGControlBar 库到你的计算机:<br />解压缩 BCGControlBar.zip (比如,到 c:/bcg 目录中) <br />把 c:/bcg/bin 增加到你的 path 环境变量中, <br />运行 Visual C 并且打开 Tools | Options 对话框,切换到Directories 页并且把 c:/bcg/bcgcontrolbar 加入到 include 目录 中,把 c:/bcg/bin 加入
2010-06-08 23:14:00
313
原创 trrrr
首 页界面/窗口网络/通讯数据库组件开发图像/多媒体NET/Web其它技术源码下载资料下载软件共享软件外包曲艺杂谈 <br /><br />VC中TreeView全面解析<br /><br />原作者:不详 源出处:优快云 发布者:施昌权 发布类型:转载 发布日期:2008-10-13<br /><br /> <br />(一)树控制的主要功能<br />树控制和视(Tree Control&View)主要用来显示具有一定层次结构的数据项,如资
2010-06-07 23:07:00
1570
原创 ttt
<br />首先,我们要创建一个基本对话框的MFC工程MFC_TreeCRTL(名字随便给一个)。然后在资源视图中插入两个Dialog,ID分别为IDD_DIALOG11和IDD_DIALOG211,都更改Style属性为Child,Border属性为None,为它们建立两个类,分别命名为Cdialog11和Cdialog211,并在MFC_TreeCRTLDlg.CPP文件中包含dialog11.h和dialog211.h两个头文件。再导入几个资源图标作为树形控件节点的图标及装饰面板。最后在主面板上添加一
2010-06-07 23:00:00
788
原创 trc
<br />在CMainFrame中定义变量: <br /><br />CSplitterWnd m_wndSplitter; <br /><br />BOOL CMainFrame::ReplaceView(int row, int col, CRuntimeClass *pViewClass, SIZE <br />size) <br />{ <br />CCreateContext context; <br />BOOL bSetActive; <br /><br />if ((this->m_wnd
2010-06-07 22:43:00
422
原创 vtreev
dwStyle中可以使用以下一些树形控件的专用风格: <br /><br />TVS_HASLINES 在父/子结点之间绘制连线 <br /><br />TVS_LINESATROOT 在根/子结点之间绘制连线 <br /><br />TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开 <br /><br />TVS_EDITLABELS 结点的显示字符可以被编辑 <br /><br />TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点 <br /><
2010-06-07 22:35:00
268
原创 m2
<br />/// <summary>设置停止音频</summary><br />/// <param name="StationNo">站点号</param><br />/// <param name="LineNo">线路号</param><br />/// <returns>无</returns><br />void __fastcall TfmMain::StopVoice(AnsiString StationNo, AnsiString LineNo,int Port)<br />{<br />
2010-06-04 00:46:00
470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人