資源描述:
《pcap過濾規(guī)則格式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、函數(shù)名稱:intpcap_compile(pcap_t*p,structbpf_program*fp,char*str,intoptimize,bpf_u_int32netmask)函數(shù)功能:該函數(shù)用于將str指定的規(guī)則整合到fp過濾程序中去,并生成過濾程序入口地址,用于過濾選擇期望的數(shù)據(jù)報(bào)。參數(shù)說明:pcap_t*p:pcap_open_live返回的數(shù)據(jù)報(bào)捕獲的指針;structbpf_program*fp:指向一個(gè)子函數(shù)用于過濾,在pcap_compile()函數(shù)中被賦值;char*str:該字符串規(guī)定過濾規(guī)則;intoptimiz
2、e:規(guī)定了在結(jié)果代碼上的選擇是否被執(zhí)行;bpf_u_int32netmask:該網(wǎng)卡的子網(wǎng)掩碼,可以通過pcap_lookupnet()獲取;返回值:如果成功執(zhí)行,返回0,否則返回-1;過濾規(guī)則由一個(gè)或多個(gè)原語(yǔ)(primitive)組成,如果為””則表示不進(jìn)行任何過濾.原語(yǔ)通常由一個(gè)標(biāo)識(shí)(id,名稱或數(shù)字),和標(biāo)識(shí)前面的一個(gè)或多個(gè)修飾子(qualifier)組成.修飾子有三種不同的類型:type類型修飾子指出標(biāo)識(shí)名稱或標(biāo)識(shí)數(shù)字代表什么類型的東西.能夠使用的類型有host,net和port.例如,`hostfoo',`net128.3',`
3、port20'.假如不指定類型修飾子,就使用缺省的host.dir方向修飾子指出相對(duì)于標(biāo)識(shí)的傳輸方向(數(shù)據(jù)是傳入還是傳出標(biāo)識(shí)).能夠使用的方向有src,dst,srcordst和srcanddst.例如,`srcfoo',`dstnet128.3',`srcordstportftp-data'.假如不指定方向修飾子,就使用缺省的srcordst.對(duì)于`null'鏈路層(就是說象slip之類的點(diǎn)到點(diǎn)協(xié)議),用inbound和outbound修飾子指定所需的傳輸方向.proto協(xié)議修飾子需要匹配指定的協(xié)議.能夠使用的協(xié)議有:ether,fdd
4、i,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp和udp.例如,`ethersrcfoo',`arpnet128.3',`tcpport21'.假如不指定協(xié)議修飾子,就使用任何符合類型的協(xié)議.例如,`srcfoo'指`(ip或arp或rarp)srcfoo'(注意后者不符合語(yǔ)法),`netbar'指`(ip或arp或rarp)netbar',`port53'指`(tcp或udp)port53'.[`fddi'實(shí)際上是`ether'的別名;分析器把他們視為``用在指定網(wǎng)絡(luò)接口上的數(shù)據(jù)鏈路層.''FDD
5、I報(bào)頭包含類似于以太協(xié)議的源目地址,而且通常包含類似于以太協(xié)議的報(bào)文類型,因此您能夠過濾FDDI域,就象分析以太協(xié)議相同.FDDI報(bào)頭也包含其他域,但是您不能在過濾器表達(dá)式里顯式描述.]作為上述的補(bǔ)充,有一些特別的`原語(yǔ)'關(guān)鍵字,他們不同于上面的模式:gateway,broadcast,less,greater和數(shù)學(xué)表達(dá)式.這些在后面有敘述.更復(fù)雜的過濾器表達(dá)式能夠通過and,or和not連接原語(yǔ)來組建.例如,`hostfooandnotportftpandnotportftp-data'.為了少敲點(diǎn)鍵,能夠忽略相同的修飾子.例如,`tc
6、pdstportftporftp-dataordomain'實(shí)際上就是`tcpdstportftportcpdstportftp-dataortcpdstportdomain'.允許的原語(yǔ)有:dsthosthost假如報(bào)文中IP的目的地址域是host,則邏輯為真.host既能夠是地址,也能夠是主機(jī)名.srchosthost假如報(bào)文中IP的源地址域是host,則邏輯為真.hosthost假如報(bào)文中IP的源地址域或目的地址域是host,則邏輯為真.上面任何的host表達(dá)式都能夠加上ip,arp,或rarp關(guān)鍵字做前綴,就象:iphosthos
7、t他等價(jià)于:etherprotoipandhosthost假如host是擁有多個(gè)IP地址的主機(jī)名,他的每個(gè)地址都會(huì)被查驗(yàn).etherdstehost假如報(bào)文的以太目的地址是ehost,則邏輯為真.Ehost既能夠是名字(/etc/ethers里有),也能夠是數(shù)字(有關(guān)數(shù)字格式另見ethers(3N)).ethersrcehost假如報(bào)文的以太源地址是ehost,則邏輯為真.etherhostehost假如報(bào)文的以太源地址或以太目的地址是ehost,則邏輯為真.gatewayhost假如報(bào)文把host當(dāng)做網(wǎng)關(guān),則邏輯為真.也就是說,報(bào)文的
8、以太源或目的地址是host,但是IP的源目地址都不是host.host必須是個(gè)主機(jī)名,而且必須存在/etc/hosts和/etc/ethers中.(一個(gè)等價(jià)的表達(dá)式是etherhostehos