导航:首页 > 净水问答 > bpf过滤器关键字

bpf过滤器关键字

发布时间:2021-03-22 14:23:58

1. Wincap设置过滤器,该如何解决

我按照Wincap官方的例子,设置我的抓包程序的过滤器。 BOOL CapturePacket::SetFilter(char * packet_filter)//设置过滤器{if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask) <0 )//设置过滤器{AfxMessageBox(Unable to compil e the packet filter. Check the syntax.); TRACE(Error reading the packets: %s\n, pcap_geterr(adhandle));//语法错误,&fcode为0 /* 释放设备列表 */ pcap_freealldevs(alldevs);//return -1;}if (pcap_setfilter(adhandle, &fcode)<0)//设置过滤器{AfxMessageBox(Error setting the filter.); /* 释放设备列表 */ pcap_freealldevs(alldevs);return -1;}// pcap_loop(adhandle, 0, packet_handler, NULL);return 0;}pcap_compile函数执行返回小于0的数,就是没设置成功。于是我调试发现是&fcode为0。 就是开始定义struct bpf_program fcode; 然后pcap_compile,pcap_setfilter的参数调用啊!没其他地方调用,我问别人说,这个值要有值才行。 在pcap_compile(adhandle, &fcode, packet_filter, 1, netmask)中,fcode的使用方式 基本上就是 :struct bpf_program fcode;然后传给这个接口就好了,这个参数的值是由pcap_compile来写的 我觉得之所以返回值小于0,你可能需要检查: (1)adhandle,这个是一个网卡; (2)packet_filter是不是符合winpcap的语法规则 (3)netmask是否正确,拿不准的话可以用0xffffff 希望对你有用 ------解决方案-------------------------------------------------------- int pcap_setfilter ( pcap_t * p, struct bpf_program * fp)Associate a filter to a capture. pcap_setfilter() is used to specify a filter program. fp is a pointer to a bpf_program struct, usually the result of a call to pcap_compile(). -1 is returned on failure, in which case pcap_geterr() may be used to display the error text; 0 is returned on success. ------解决方案-------------------------------------------------------- 应该肯定不是fcode的问题你看看是不是掩码没有设置正确

2. linux bpf 当前是否有其他过滤器

我按照Wincap官方的例子,设置我的抓包程序的过滤器。BOOL CapturePacket::SetFilter(char * packet_filter)//设置过滤器{if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask)

3. 使用WinPcap BPF规则过滤某一范围的IP地址,该怎么写

#-expressiongoogle一下应该有你要的。

4. bpf和比特币的区别 bPf是比特币吗

BPF在通信中(band-pass filter),即带通滤波器。是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。BPF(Berkeley Packet Filter)伯克利数据包过滤器。是一个工作在操作系统内核的数据包捕获机制,他先将链路层的数据包捕获再过滤,最后提供给应用层特定的过滤后的数据包。

比特币是一个共识网络,促成了一个全新的支付系统和一种完全数字化的货币。它是第一个去中心化的对等支付网络,由其用户自己掌控而无须中央管理机构或中间人。从用户的角度来看,比特币很像互联网的现金。比特币也可以看作是目前最杰出的三式簿记系统。

5. 高频中BPF与LPF是什么器件的中文缩写

BPF是柏克莱封包过滤器的缩写,全称是Berkeley Packet Filter。是类Unix系统上数据链路层的一种原始接口,提供原始链路层封包的收发,除此之外,如果网卡驱动支持洪泛模式,那么它可以让网卡处于此种模式,这样可以收到网络上的所有包,不管他们的目的地是不是所在主机。

LPF,是“Low Pass Filter”的缩写,意为“低通滤波器”。就是让低频信号通过,阻止高频信号通过。低通滤波器一般用于去掉输入信号中不必要的高频成分,去除高频干扰。另外,在选频网络中也有应用。

(5)bpf过滤器关键字扩展阅读:

一、数据链路层

数据链路层(Data Link Layer)是OSI参考模型第二层,位于物理层与网络层之间。在广播式多路访问链路中(局域网),由于可能存在介质争用,它还可以细分成介质访问控制(MAC)子层和逻辑链路控制(LLC)子层,介质访问控制(MAC)子层专职处理介质访问的争用与冲突问题。

二、有源低通滤波器

滤波器是一种能使有用频率信号通过而同时抑制无用频率信号的电子装置,常用于信号处理、数据传输和干扰抑制等方面,有源低通滤波电路由集成运放和无源元件电阻和电容构成。

它的功能是允许从零到某个截止频率的信号无衰减地通过,而对其他频率的信号有抑制作用。有源低通滤波电路可以用来滤除高频干扰信号 。

6. winpcap抓包时,网络上只有几个包时被缓冲住了,不能立即捕获。怎么解决呀!!!

Winpcap是针对Win32平台上的抓包和网络分析的一个架构。它包括一个核心态的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。
抓包是NPF最重要的操作。在抓包的时候,驱动使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。

抓包过程依赖于两个主要组件:

一个数据包过滤器,它决定着是否接收进来的数据包并把数据包拷贝给监听程序。数据包过滤器是一个有布尔输出的函数。如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还得决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETF IOCTL写入核心态的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快。
一个循环缓冲区,用来保存数据包并且避免丢失。一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,但它不是协议头。此外,以队列插入的方式来保存数据包可以提高数据的存储效率。可以以组的方式将数据包从NPF缓冲区拷贝到应用程序。这样就提高了性能,因为它降低了读的次数。如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,因此就发生了丢包。

7. 简述基于winpcap体系结构的捕获网络数据包的过程

Winpcap是针对Win32平台上的抓包和网络分析的一个架构。它包括一个核心态的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。
抓包是NPF最重要的操作。在抓包的时候,驱动使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。
抓包过程依赖于两个主要组件:
一个数据包过滤器,它决定着是否接收进来的数据包并把数据包拷贝给监听程序。数据包过滤器是一个有布尔输出的函数。如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还得决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETF IOCTL写入核心态的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快。
一个循环缓冲区,用来保存数据包并且避免丢失。一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,但它不是协议头。此外,以队列插入的方式来保存数据包可以提高数据的存储效率。可以以组的方式将数据包从NPF缓冲区拷贝到应用程序。这样就提高了性能,因为它降低了读的次数。如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,因此就发生了丢包。

8. bpf 是什么

BPF在通信中(band-pass filter),即带通滤波器。

是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。


BPF(Berkeley Packet Filter)伯克利数据包过滤器。

是一个工作在操作系统内核的数据包捕获机制,他先将链路层的数据包捕获再过滤,最后提供给应用层特定的过滤后的数据包。

9. bpf过滤条件的命令长度有限制吗

凡是家用空调,内机都有空气过滤网,没有空气过滤器,医用的专用空调才有。这个型号没有。

10. snort 的具体使用

Snort不是很难使用,但是也存在着很多的命令行选项需要掌握,并且它们中许多很多时候并不能一起使用。这个文件的目的就是使新人能够更简单的使用snort。

在我们进行下一步之前,有一些关于snort的基本概念需要了解。snort能够配置成三种模式运行:嗅探器(sniffer),包记录器(packet logger)和网络入侵检测系统(NIDS)。嗅探模式(sniffer mode)简单的读取网络中的数据包,并以连续的数据流显示在控制台上。包记录模式(packet logger mode)把捕获的数据包记录在磁盘上。网络入侵检测模式(NIDS mode)是最复杂的、有机的配置,在这个模式下,snort分析网络中的数据,并通过使用用户自定义的规则集进行模式匹配,并根据匹配的结果执行多种操作。

2.0 嗅探模式(sniffer mode)

首先,让我们从基础开始。如果你只是想要在屏幕上打印出TCP/IP的包头信息(嗅探模式),使用下面的命令:
./snort –v
使用这个命令运行snort,将只显示IP和TCP/UDP/ICMP头信息,而不显示任何其它信息。如果你想要查看传输的有效负载信息,可以使用如下命令:
./snort –vd
这条命令在打印协议头信息的同时也打印相应的包数据。如果你想要一个更详细的现实,可以使用下面的命令来打印出数据链路层头信息:
./snort –vde

(注:这些选项参数能够分开或者拆散成任和结合的方式。比如上一个命令也可以写做这种方式:
./snort -d -v –e
来达到同样的效果)

3.0 包记录模式(PACKET LOGGER MODE)

好的,上面的命令运行的都相当的好。但是如果你想要记录包到磁盘上,你需要指定一个记录目录,然后snort将自动的进入包记录模式:
./snort -dev -l ./log
当然,这里假设你在当前目录下有一个叫做“log”的目录。如果没有这个目录,snort将退出并返回错误信息。当snort以这种模式运行,它收集所有捕获的数据包,并根据数据包中一个主机的IP地址放入对应的目录中。

如果你只是简单的指定“-l”选项,你可能会发现snort有时使用远程计算机的地址作为存放数据包的目录,有时使用本地主机的地址。为了比较本地的网络,你需要告诉snort本地网络的信息:
./snort -dev -l ./log -h 192.168.1.0/24
这条指令让snort能够记录数据链路信息和TCP/IP头和应用数据到目录./log,并且记录和192.168.1.0段C类网络相关的包信息。所有进来的包将记录到记录文件夹中对应的子文件夹中,子文件夹以远程主机(非192.168.1主机)的地址命名。注意,如果两个主机都是在本地网络内,然后他们将根据两个中高的端口号来记录,在端口号相等的情况下,将使用源地址来记录。

如果你在一个高速网络中,又或你想要使用一个更紧凑的格式来记录数据包为以后的分析所用,你可以考虑使用“二进制模式”来记录。二进制模式采用“tcpmp 格式”来记录数据包到指定目录下的单一二进制文件中。
./snort -l ./log –b
注意这里命令行的改变。我们不再需要指定一个本地网络,因为二进制模式记录所有的数据到一个单一的文件中,而不再需要定义输出的目录结构。另外,你不再需要使用详细(verbose)模式和指定-d/-e开关参数,因为在二进制模式下所有的包都会被记录而不是其中的某些部分。进入二进制包记录模式只需要做两点,一是在命令行中使用-l开关来指定一个日志目录,二是使用-b开关选择二进制模式代替ASCII文档模式记录包数据。

如果数据包以二进制文件的形式记录,你可以使用任何支持tcpmp二进制格式的嗅探器从文件中读取数据包信息,比如使用tcpmp或ethereal。snort也可以通过使用-r开关进入回放模式来读取记录的数据包信息。snort在任何运行模式下都能够接受tcpmp格式的文件并进行处理。比如,如果你想要以嗅探器模式来分析处理一个二进制文件并把数据包信息打印在屏幕,你可以使用类似下面的命令:
./snort -dv -r packet.log
你还可以以多种方式操作二进制文件中的数据,比如包记录模式和入侵检测模式,你也同样可以在命令行中使用BPF接口。比如,如果你只是想查看记录文件中的ICMP数据包信息,可以在命令行中简单的指定一个BPF过滤器:
./snort -dvr packet.log icmp
更多的BPF使用信息请参阅相应的man信息。

4.0 网络入侵检测模式(NETWORK INTRUSION DETECTION MODE)

可以使用如下命令来启用snort的网络入侵检测模式(这个模式下,你不用记录所有的数据包):
./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
在这里snort.conf是你的规则文件名。这将对每一个数据包使用snort.conf文件中定义的规则集进行检测,并根据文件中定义的行为进行处理。如果你没有为程序指定输出目录,将使用默认的目录“/var/log/snort”。

有一点需要注意的是,使用上一命令行形式进入NIDS模式运行速度稍慢,可以去掉“-v”开关来提高效率。往屏幕输出数据速度很慢,在数据显示的过程中可能会造成数据包的丢失。

同样,对于大多数的应用而言,都不比要记录数据链路层包头信息,因此“-e”开关也是可以去掉的。最后命令如下:
./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf
这个命令能够配置snort以最基础的NIDS模式运行。它将以ASCII格式记录规则指定的包信息到对应的目录结构中(和包记录模式中目录结构一致)。

4.1 NIDS MODE输出选项

在snort的NIDS模式中有几种输出方式可以配置。默认的记录和报警以ASCII形式记录,并使用“完全”报警。完全报警方式(full alert mechanism)输出所有的包头信息并在其后附上对应的报警信息。当然,在命令行中可以设置多种报警输出模式和两种日志记录格式。包信息可以以默认的ASCII格式记录,也可以通过使用命令行开关“-b”来用二进制文件记录。如果你想要完全禁用包记录信息,可以使用命令行开关“-N”。

报警模式相对要复杂一些。在命令行中可以设置多种报警模式:full、fast、socket、syslog、console、cmg、和none模式。这六种模式可以使用命令行开关“-A”来设置。详细如下:

u -A fast 快速报警模式,以一种简单的格式记录报警信息(时间、报警信息、源和目的主机的IP和端口)

u -A full 这是默认的报警模式,如果没有指定报警模式,将自动使用这种报警模式

u -A unsock 发送报警信息到一个其它程序监听UNIX套接口

u -A none 关闭报警

u -A console 打印快速报警信息到控制台(屏幕)

u -A cmg 触发“cmg样式”报警

还可以使用“-s”开关来设置syslog报警。默认的两种syslog报警级别是LOG_AUTHPRIV和LOG_ALERT。如果你想要配置其它syslog日志级别的话,可以在规则文件中使用输出插件来设置(详细信息参见snort.conf文件)。

下面是几个输出配置实例:

1、使用默认格式(ASCII)向syslog发送报警信息:
snort -c snort.conf -l ./log -s -h 192.168.1.0/24

2、使用默认格式和默认目录(/var/log/snort)来向syslog发送报警信息:
snort -c snort.conf -s -h 192.168.1.0/24

3、使用二进制文件格式、快速报警模式、目录/var/snort来记录信息:
snort -c snort.conf -b -A fast -l /var/snort

4.2 性能配置

如果你想要提高snort运行效率(比如保持100Mbps网络环境下快速运行),可以使用“-b”和“-A fast”或者“-s”(syslog)选项。它将以tcpmp格式来记录包,并产生较少的报警信息。比如:
./snort -b -A fast -c snort-lib
在这个配置下,snort能够在100Mbps局域网内在80Mbps正常流量下检测同时进行的多重扫描和工具在这个配置下,记录将以二进制格式写入tcpmp格式文件snort.log中。然后可以重新使用“-r”选项和其它常用的选项运行snort,来从数据文件中解析为正常的snort格式的数据信息。比如:
./snort -d -c snort-lib -l ./log -h 192.168.1.0/24 -r snort.log
一旦这条指令执行,所有的数据将以正常的格式记录在日志文件夹中。很酷,不是吗?

4.3 其它信息

有很多人不喜欢snort默认的对包应用规则方式。在snort默认应用方式中,先使用报警(alert)规则,然后使用通过(pass)规则,最后使用记录(log)规则。这个顺序是违反直觉的,但是相对于允许用户定义了很多报警规则却因为使用了一条错误的通过规则而全部被禁止要简单有效。对于一些用户的需要,这里提供了“-o”开关来改变默认的规则应用顺序为:先使用pass规则,然后是alert规则,最后是log规则。命令如下:
./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf -o

5.0 杂项信息

如果你想要以守护进程(daemon)模式运行snort,可以和其它选项一起加上“-D”开关设置。请注意,如果你想要向守护进程发送信号SIGHUP来重启snort的话,你需要在命令行中使用snort二进制文件的完全路径,比如你可以使用如下命令:
/usr/local/bin/snort -d -h 192.168.1.0/24 -l /var/log/snortlogs -c /usr/local/etc/snort-lib -s –D
由于安全关系,这里不提供对相对路径的支持。

如果你想要发送包记录信息到公共邮件列表,需要使用“-O”开关。这个开关将对包中输出的IP信息进行混淆处理。这使得你能够很容易的避免邮件列表中的用户获知相关的IP信息。你也可以把“-O”开关和“-h”开关联合使用,这样将只混淆本地网络中的主机地址。如果你不在意让人看见攻击主机的IP地址,这样设置是很有效的。命令如下:
./snort -d -v -r snort.log -O -h 192.168.1.0/24
这将从记录文件中读取数据包信息,并在屏幕上显示出来,在显示的过程中仅仅混淆了C类网络192.168.1.0/24中的地址信息。

如果你想要在不停止进程去查看snort包统计信息,可以向snort进程ID发送SIGUSR1信号,然后snort将在屏幕上显示统计信息,如果snort以守护进程模式运行,统计信息将发送到syslog中。你可以查看到snort检测的协议信息、报警数目、记录的包数、接收和丢弃的包数。这使得你能够很方便的提高snort的性能。

阅读全文

与bpf过滤器关键字相关的资料

热点内容
江铃域虎7空调滤芯是什么形状 浏览:664
餐厅污水处理设备百科 浏览:653
医院污水自己可以产生氯吗 浏览:33
反渗透膜压降什么意思 浏览:538
油墨过滤芯多少钱 浏览:999
常温树脂浇注料 浏览:164
山西污水处理碳源批发 浏览:122
络合铜废水加硫酸铁 浏览:695
海尔小型净水机排气阀在什么位置 浏览:512
湖北武汉哪里有合成树脂瓦 浏览:778
小区靠污水处理厂 浏览:418
污水泵站外观是什么样子的 浏览:482
蓝鸟空调滤芯怎么取不出来 浏览:624
污水井如何供氧 浏览:324
直饮水机怎么看余额 浏览:267
小米米家空气净化器2s怎么拆卸 浏览:311
江苏工业废水处理改造 浏览:712
扶沟县豫东医院乱排污水 浏览:734
市政污水改造项目监理细则 浏览:677
bealich热水器除垢 浏览:265