NPF058淘宝规则是什么么意思?

法克到底是什么意思?_百度作业帮
法克到底是什么意思?
法克到底是什么意思?
法克是英文FUCK 的音译.就是草泥马奉茶是什么意思?奉茶先奉给谁_百度作业帮
奉茶是什么意思?奉茶先奉给谁
奉茶是什么意思?奉茶先奉给谁
你好!很高兴为你服务!‘奉茶’意思为献上茶,因为‘奉’一般指你把东西献给有生分地位的人,即把东西献给自己的长辈,或是自己的领导!现在表示一种尊敬人的做法!“Mto”家族为你服务!谢谢!
给长辈端茶,叫奉茶
奉茶就是敬茶的意识,一般都先奉给主宾。。。O(∩_∩)O~Are+you+geographically+mobile是什么意思_百度作业帮
Are+you+geographically+mobile是什么意思
Are+you+geographically+mobile是什么意思
Are you geographically mobile你是地理上的移动么?winpcap_百度百科
winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。
Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,也很方便程序员进行开发。
什么样的程序需要使用Winpcap
很多不同的工具软件使用Winpcap于,故障排除,网络安全监控等方面。Winpcap特别适用于下面这几个经典领域:
1、网络及协议分析
2、网络监控
3、通信日志记录
4、traffic generators
5、用户级别的桥路和路由
6、网络入侵检测系统(NIDS)
7、网络扫描
8、安全工具
Winpcap有些方面不能做。它不依靠主机的诸如TCP/IP协议去收发数据包。这意味着它不能阻塞,不能处理同一台主机中各程序之间的通信数据。它只能“嗅探”到物理线路上的数据包。因此它不适用于traffic shapers,QoS调度,以及。
Winpcap内部结构
Winpcap是一个Win32平台下用于和分析的系统。包括一个内核级别的packet filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll)[1]
捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;
在数据包发往应用程序之前,按照自定义的规则将某些特殊的掉;
在网络上发送原始的数据包;
收集过程中的统计信息。
winpcap结构
winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于调度程序或。winpcap开发的主要对象是/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用/98/Me,并且MS也已经放弃了对的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持,而NT系统则提倡使用编码。有个软件叫pro.可以作用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以,可对过滤器进行设置,以便只抓取想要的包,比如包,包,包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码。它还可以在使用的网络上监听,不过要在交换机上装它的一个软件。还有一个简单的监听软件叫Password,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在HUB网络上。著名软件及snort都是基于编写的,此外扫描器也是基于libpcap来捕获目标主机返回的数据包的。
winpcap提供给用户两个不同级别的:一个基于libpcap的wpcap.dll,另一个是较底层的packet.dll。对于一般的要与unix平台上libpcap兼容的开发来说,使用wpcap.dll是当然的选择。
Winpcap的各个组成部分
Winpcap是针对Win32平台上的和的一个架构。它包括一个的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。
为什么使用“architecture”而不是“library”呢?因为抓包是一个要求与(网卡)和操作系统交互的底层机制,而且与网络的实施也有密切关系,所以仅用“library”不能充分表达Winpcap的作用。
下图表明了Winpcap的各个组成部分:
首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包(raw packet),这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。这个部分是系统依赖(system dependent)的,在Winpcap的解决方案里它被认为是一个,称作NPF(Netgroup Packet Filter)。Winpcap开发小组针对Windows95,Windows98,WindowsME,Windows NT 4,Windows2000和WindowsXP提供了不同版本的驱动。这些驱动不仅提供了基本的特性(例如和injection),还有更高级的特性(例如可编程的过滤器系统和监视引擎)。前者可以被用来约束一个抓包会话只针对网络通信中的一个子集(例如,仅仅捕获特殊主机产生的通信的数据包),后者提供了一个强大而简单的统计网络通信量的机制(例如,获得网络负载或两个主机间的数据交换量)。
其次,抓包系统必须有用户级的,通过这些接口,可以利用驱动提供的高级特性。Winpcap提供了两个不同的库:packet.dll和wpcap.dll。前者提供了一个底层API,伴随着一个独立于Microsoft操作系统的,这些API可以直接用来访问驱动的函数;后者导出了一组更强大的与一致的高层函数库(capture primitives)。这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。
网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap的核心部分,它是Winpcap完成困难工作的组件。它处理网络上传输的数据包,并且对用户级提供可捕获(capture)、发送(injection)和分析性能(analysis capabilities)。
(Network Driver Interface Specification)是一个定义(或者说成是管理网络适配器的驱动程序)与协议驱动(例如TCP/IP的实现)之间通信的规范。NDIS最主要的目的是作为一个允许协议驱动发送和接收网络(或WAN)上的数据包而不必关心特定的适配器或特定的操作系统的封装。
NDIS支持三种类型的网络驱动:
(1)或驱动(Network interface card or NIC drivers)。NIC驱动直接管理着(NIC)。NIC驱动接下边与硬件连接,从上边表现为一个接口,该接口允许高层发送数据包到网络上,处理中断,重置NIC,停止NIC,查询和设置驱动的运行特征。NIC驱动可以是小端口(miniport)或完全的NIC驱动(full NIC driver)。
Miniport驱动仅仅实现了管理NIC的必要操作,包括在NIC上发送和接收数据。对于所有最底层的NIC驱动的操作由NDIS提供,例如(synchronization)。小端口(miniport)不直接调用操作系统函数,它们对于操作系统的接口是NDIS。
小端口仅仅是向上传递数据包给NDIS并且NDIS确保这些数据包被传递给正确的协议。
完全驱动(Full NIC driver)完成硬件细节的操作和所有由完成的同步和查询操作。例如,完全NIC驱动维持接收到的数据的绑定信息。
(2) 中间层驱动(Intermediate drivers)中间层驱动位于高层驱动(例如协议驱动)和小端口之间。对于高层驱动,中间层驱动看起来像是小端口;对于小端口,中间层驱动看起来像协议驱动。一个中间层协议驱动可以位于另一个中间层驱动之上,尽管这种分层可能对系统性能带来负面影响。开发中间层驱动的一个关键原因是在现存的遗留协议驱动(legacy protocol driver)和小端口之间形成媒体的转化。例如,中间层驱动可以将LAN协议转换成ATM协议。中间层驱动不能与用户模式的应用程序通信,但可以与其他的NDIS驱动通信。
(3) 传输驱动或协议驱动(Transport drivers or protocol drivers)协议驱动实现了网络协议栈,例如或TCP/IP,在一个或多个上提供它的服务。在协议驱动的上面,它为客户程序服务;在它的下面,它与一个或多个NIC驱动或中间层NDIS驱动连接。
NPF在NDIS栈中的位置
NPF是一个协议驱动。从性能方面来看,这不是最好的选择,但是它合理地独立于MAC层并且有权使用原始通信(raw traffic)。
下图表现了NPF在NDIS栈中的位置:
NPF结构基础
下图表现了伴随着NPF驱动细节的Winpcap的结构。
伴随着NPF驱动细节的Winpcap的结构
是NPF最重要的操作。在抓包的时候,驱动使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。
抓包过程依赖于两个主要组件:
一个数据包过滤器,它决定着是否接收进来的数据包并把数据包给监听程序。数据包过滤器是一个有布尔输出的函数。如果是true,拷贝数据包给应用程序;如果是false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还得决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETF IOCTL写入的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器,这使得处理过程相当快。
一个循环缓冲区,用来保存数据包并且避免丢失。一个保存在中的数据包有一个头,它包含了一些主要的信息,例如和的大小,但它不是协议头。此外,以队列插入的方式来保存数据包可以提高数据的存储效率。可以以组的方式将数据包从NPF缓冲区拷贝到应用程序。这样就提高了性能,因为它降低了读的次数。如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,因此就发生了。
获得网卡接口。在普通的编程中,对编程是不行的。当为双网卡时,本程序可分别获得两张网卡各自的描述结构及地址,然后可以对它们分别进行操作。返回的alldevs队列首部为逻辑网卡,一般不对它进行什么操作。[2]
获得网卡接口
#include&&pcap.h&
void&main()
&&&&pcap_if_t&*
&&&&/*struct&pcap_if_t{
&&&&pcap_if_t&*
&&&&char&*
&&&&char&*
&&&&pcap_addr&*
&&&&U_int&
&&&&pcap_if_t&*d;
&&&&int&i=0;
&&&&char&errbuf[PCAP_ERRBUF_SIZE];
&&&&/*&Retrieve&the&device&list&*/
&&&&if&(pcap_findalldevs(&alldevs,&errbuf)&==&-1)//返回网卡列表,alldevs指向表头
&&&&&&&&fprintf(stderr,&Error&in&pcap_findalldevs:&%s\n&,&errbuf);
&&&&&&&&exit(1);
&&&&/*&Print&the&list&*/
&&&&for(d=d;d=d-&next)
&&&&&&&&printf(&%d.&%s&,&++i,&d-&name);
&&&&&&&&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&);
&&&&/*&We&don't&need&any&more&the&device&list.&Free&it&*/
&&&&pcap_freealldevs(alldevs);
--------------------------------------------------------------------------------
本程序俘获内报文。
#include&&pcap.h&
/*&4&bytes&IP&address&*/
typedef&struct&ip_address{
u_char&byte1;
u_char&byte2;
u_char&byte3;
u_char&byte4;
/*&IPv4&header&*/
typedef&struct&ip_header{
u_char&ver_&//&Version&(4&bits)&+&Internet&header&length&(4&bits)
u_char&&//&Type&of&service
u_short&&//&Total&length
u_short&&//&Identification
u_short&flags_&//&Flags&(3&bits)&+&Fragment&offset&(13&bits)
u_char&&//&Time&to&live
u_char&&//&Protocol
u_short&&//&Header&checksum
ip_address&&//&Source&address
ip_address&&//&Destination&address
u_int&op_&//&Option&+&Padding
/*&UDP&header*/
typedef&struct&udp_header{
u_short&&//&Source&port
u_short&&//&Destination&port
u_short&&//&Datagram&length
u_short&&//&Checksum
/*&prototype&of&the&packet&handler&*/
void&packet_handler(u_char&*param,&const&struct&pcap_pkthdr&*header,&const&u_char&*pkt_data);
pcap_if_t&*
pcap_if_t&*d;
char&errbuf[PCAP_ERRBUF_SIZE];
char&packet_filter[]&=&&ip&and&udp&;
struct&bpf_program&
/*&Retrieve&the&device&list&*/
if&(pcap_findalldevs(&alldevs,&errbuf)&==&-1)
fprintf(stderr,&Error&in&pcap_findalldevs:&%s\n&,&errbuf);
/*&Print&the&list&*/
for(d=&d;&d=d-&next)
printf(&%d.&%s&,&++i,&d-&name);
if&(d-&description)
printf(&&(%s)\n&,&d-&description);
printf(&&(No&description&available)\n&);
printf(&\nNo&interfaces&found!&Make&sure&WinPcap&is&installed.\n&);
return&-1;
printf(&Enter&the&interface&number&(1-%d):&,i);
scanf(&%d&,&&inum);
if(inum&&&1&||&inum&&&i)
printf(&\nInterface&number&out&of&range.\n&);
/*&Free&the&device&list&*/
pcap_freealldevs(alldevs);
return&-1;
/*&Jump&to&the&selected&adapter&*/
for(d=alldevs,&i=0;&i&&inum-1&;d=d-&next,&i++);
/*&Open&the&adapter&*/
if&(&(adhandle=&pcap_open_live(d-&name,&//&name&of&the&device
65536,&//&portion&of&the&packet&to&capture.
//&65536&grants&that&the&whole&packet&will&be&captured&on&all&the&MACs.
1,&//&promiscuous&mode
1000,&//&read&timeout
errbuf&//&error&buffer
)&)&==&NULL)
fprintf(stderr,&\nUnable&to&open&the&adapter.&%s&is&not&supported&by&WinPcap\n&);
/*&Free&the&device&list&*/
pcap_freealldevs(alldevs);
return&-1;
/*&Check&the&link&layer.&We&support&only&Ethernet&for&simplicity.&*/
if(pcap_datalink(adhandle)&!=&DLT_EN10MB)
fprintf(stderr,&\nThis&program&works&only&on&Ethernet&networks.\n&);
/*&Free&the&device&list&*/
pcap_freealldevs(alldevs);
return&-1;
if(d-&addresses&!=&NULL)
/*&Retrieve&the&mask&of&the&first&address&of&the&interface&*/
netmask=((struct&sockaddr_in&*)(d-&addresses-&netmask))-&sin_addr.S_un.S_
/*&If&the&interface&is&without&addresses&we&suppose&to&be&in&a&C&class&network&*/
//compile&the&filter
if(pcap_compile(adhandle,&&fcode,&packet_filter,&1,&netmask)&&0&){
fprintf(stderr,&\nUnable&to&compile&the&packet&filter.&Check&the&syntax.\n&);
/*&Free&the&device&list&*/
pcap_freealldevs(alldevs);
return&-1;
//set&the&filter
if(pcap_setfilter(adhandle,&&fcode)&0){
fprintf(stderr,&\nError&setting&the&filter.\n&);
/*&Free&the&device&list&*/
pcap_freealldevs(alldevs);
return&-1;
printf(&\nlistening&on&%s...\n&,&d-&description);
/*&At&this&point,&we&don't&need&any&more&the&device&list.&Free&it&*/
pcap_freealldevs(alldevs);
/*&start&the&capture&*/
pcap_loop(adhandle,&0,&packet_handler,&NULL);
/*&Callback&function&invoked&bylibpcapfor&every&incoming&packet&*/
void&packet_handler(u_char&*param,&const&struct&pcap_pkthdr&*header,&const&u_char&*pkt_data)
struct&tm&*
char&timestr[16];
ip_header&*
udp_header&*
/*&convert&the&timestamp&to&readable&format&*/
ltime=localtime(&header-&v_sec);
strftime(&timestr,&sizeof&timestr,&&%H:%M:%S&,&ltime);
/*&print&timestamp&and&length&of&the&packet&*/
/*&retireve&the&position&of&the&ip&header&*/
ih&=&(ip_header&*)&(pkt_data&+
;&//length&of&ethernet&header
/*&retireve&the&position&of&the&udp&header&*/
ip_len&=&(ih-&ver_ihl&&&0xf)&*&4;
uh&=&(udp_header&*)&((u_char*)ih&+&ip_len);
/*&convert&from&network&byte&order&to&host&byte&order&*/
printf(&%s.%.6d&len:%d&&,&timestr,&header-&_usec,&header-&len);
/*&print&ip&addresses&*/
printf(&%d.%d.%d.%d&-&&%d.%d.%d.%d\n&,
ih-&saddr.byte1,
ih-&saddr.byte2,
ih-&saddr.byte3,
ih-&saddr.byte4,
ih-&daddr.byte1,
ih-&daddr.byte2,
ih-&daddr.byte3,
ih-&daddr.byte4
--------------------------------------------------------------------------------
要在命令行下运行,给与参数:网卡描述符。或者添加代码findalldevs(),那样应很方便。
#include&&stdlib.h&
#include&&stdio.h&
#include&&pcap.h&
void&usage();
void&main(int&argc,&char&**argv)&{
char&error[PCAP_ERRBUF_SIZE];
u_char&packet[100];
/*&Check&the&validity&of&the&command&line&*/
if&(argc&!=&2)
printf(&usage:&%s&inerface&,&argv[0]);
/*&Open&the&output&adapter&*/
if((fp&=pcap_open_live(argv[1],&100,&1,&1000,&error)&)&==&NULL)
fprintf(stderr,&\nError&opening&adapter:&%s\n&,&error);
/*&Supposing&to&be&on&ethernet,&set&mac&destination&to&1:1:1:1:1:1&*/
packet[0]=1;
packet[1]=1;
packet[2]=1;
packet[3]=1;
packet[4]=1;
packet[5]=1;
/*&set&mac&source&to&2:2:2:2:2:2&*/
packet[6]=2;
packet[7]=2;
packet[8]=2;
packet[9]=2;
packet[10]=2;
packet[11]=2;
/*&Fill&the&rest&of&the&packet&*/
for(i=12;i&100;i++){
packet=i%256;
/*&Send&down&the&packet&*/
pcap_sendpacket(fp,
winpcap卸载不干净的解决方法
winpcap不干净的的时候,在windows下删除一些文件即可,删除下面的文件即可:[3-4]
c:\windows\system32\Packet.dll
c:\windows\system32\drivers/
c:\windows\system32\
c:\windows\system32\wpcap.dll
c:\windows\system32\pthreadVC.dll
.开源社区网[引用日期]
.cnblog[引用日期]npf是什么文件格式
npf是什么文件格式
09-04-05 &匿名提问
nrg文件是刻录软件nero制作的虚拟光盘文件。一般制作的用虚拟光驱和winrar都可以打开,用winrar还可以解压缩。如果是复制自加密光盘的nrg文件,则只有用虚拟光驱才可以无错运行,推荐DAEMON Tools。编辑修改nrg则可以用nero软件。 票数: 0
请登录后再发表评论!

我要回帖

更多关于 淘宝规则是什么 的文章

 

随机推荐