Wireshark网卡抓包工具简明教程
1.?捕捉過濾器
捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發(fā)的軟件一樣,比如著名的TCPdump。捕捉過濾器必須在開始捕捉前設(shè)置完畢,這一點跟顯示過濾器是不同的。
| 語法: | ? | Protocol | ? | Direction | ? | Host(s) | ? | Value | ? | Logical?Operations | ? | Other?expression |
| 例子: | ? | tcp | ? | dst | ? | 10.1.1.1 | ? | 80 | ? | and | ? | tcp?dst?10.2.2.2?3128 |
Protocol(協(xié)議):
可能的值:?ether,?fddi,?ip,?arp,?rarp,?decnet,?lat,?sca,?moprc,?mopdl,?tcp?and?udp.
如果沒有特別指明是什么協(xié)議,則默認使用所有支持的協(xié)議。
Direction(方向):
可能的值:?src,?dst,?src?and?dst,?src?or?dst
如果沒有特別指明來源或目的地,則默認使用?"src?or?dst"?作為關(guān)鍵字。
例如,"host?10.2.2.2"與"src?or?dst?host?10.2.2.2"是一樣的。
Host(s):
可能的值:?net,?port,?host,?portrange.
如果沒有指定此值,則默認使用"host"關(guān)鍵字。
例如,"src?10.1.1.1"與"src?host?10.1.1.1"相同。
Logical?Operations(邏輯運算):
可能的值:not,?and,?or.
否("not")具有最高的優(yōu)先級。或("or")和與("and")具有相同的優(yōu)先級,運算時從左至右進行。
例如,
"not?tcp?port?3128?and?tcp?port?23"與"(not?tcp?port?3128)?and?tcp?port?23"相同。
"not?tcp?port?3128?and?tcp?port?23"與"not?(tcp?port?3128?and?tcp?port?23)"不同。
例子:
| tcp?dst?port?3128 |
顯示目的TCP端口為3128的封包。
| ip?src?host?10.1.1.1 |
顯示來源IP地址為10.1.1.1的封包。
| host?10.1.2.3 |
顯示目的或來源IP地址為10.1.2.3的封包。
| src?portrange?2000-2500 |
顯示來源為UDP或TCP,并且端口號在2000至2500范圍內(nèi)的封包。
| not?imcp |
顯示除了icmp以外的所有封包。(icmp通常被ping工具使用)
| src?host?10.7.2.12?and?not?dst?net?10.200.0.0/16 |
顯示來源IP地址為10.7.2.12,但目的地不是10.200.0.0/16的封包。
| (src?host?10.4.1.12?or?src?net?10.6.0.0/16)?and?tcp?dst?portrange?200-10000?and?dst?net?10.0.0.0/8 |
顯示來源IP為10.4.1.12或者來源網(wǎng)絡(luò)為10.6.0.0/16,目的地TCP端口號在200至10000之間,并且目的位于網(wǎng)絡(luò)10.0.0.0/8內(nèi)的所有封包。
注意事項:
當使用關(guān)鍵字作為值時,需使用反斜杠“\”。
"ether?proto?\ip"?(與關(guān)鍵字"ip"相同).
這樣寫將會以IP協(xié)議作為目標。
"ip?proto?\icmp"?(與關(guān)鍵字"icmp"相同).
這樣寫將會以ping工具常用的icmp作為目標。
可以在"ip"或"ether"后面使用"multicast"及"broadcast"關(guān)鍵字。
當您想排除廣播請求時,"no?broadcast"就會非常有用。
2.?顯示過濾器:
通常經(jīng)過捕捉過濾器過濾后的數(shù)據(jù)還是很復雜。此時您可以使用顯示過濾器進行更加細致的查找。
它的功能比捕捉過濾器更為強大,而且在您想修改過濾器條件時,并不需要重新捕捉一次。
| 語法: | ? | Protocol | . | String?1 | . | String?2 | ? | Comparison | ? | Value | ? | Logical | ? | Other |
| 例子: | ? | ftp | ? | passive | ? | ip | ? | == | ? | 10.2.3.4 | ? | xor | ? | icmp.type |
Protocol(協(xié)議):
您可以使用大量位于OSI模型第2至7層的協(xié)議。點擊"Expression..."按鈕后,您可以看到它們。
比如:IP,TCP,DNS,SSH
Wireshark的網(wǎng)站提供了對各種?協(xié)議以及它們子類的說明。
String1,?String2?(可選項):
協(xié)議的子類。
點擊相關(guān)父類旁的"+"號,然后選擇其子類。
Comparison?operators?(比較運算符):
可以使用6種比較運算符:
| 英文寫法:? | C語言寫法:? | 含義: |
| eq? | ==? | 等于 |
| ne | != | 不等于 |
| gt | > | 大于 |
| lt | < | 小于 |
| ge | >= | 大于等于 |
| le | <= | 小于等于 |
Logical?expressions(邏輯運算符):
| 英文寫法:? | C語言寫法:? | 含義: |
| and | && | 邏輯與 |
| or | || | 邏輯或 |
| xor | ^^ | 邏輯異或 |
| not | ! | 邏輯非 |
被程序員們熟知的邏輯異或是一種排除性的或。當其被用在過濾器的兩個條件之間時,只有當且僅當其中的一個條件滿足時,這樣的結(jié)果才會被顯示在屏幕上。
讓我們舉個例子:
"tcp.dstport?80?xor?tcp.dstport?1025"
只有當目的TCP端口為80或者來源于端口1025(但又不能同時滿足這兩點)時,這樣的封包才會被顯示。
?
例子:
| snmp?||?dns?||?icmp | 顯示SNMP或DNS或ICMP封包。 |
?
| ip.addr?==?10.1.1.1 |
顯示來源或目的IP地址為10.1.1.1的封包。
| ip.src?!=?10.1.2.3?or?ip.dst?!=?10.4.5.6 |
顯示來源不為10.1.2.3或者目的不為10.4.5.6的封包。
換句話說,顯示的封包將會為:
來源IP:除了10.1.2.3以外任意;目的IP:任意
以及
來源IP:任意;目的IP:除了10.4.5.6以外任意
| ip.src?!=?10.1.2.3?and?ip.dst?!=?10.4.5.6 |
顯示來源不為10.1.2.3并且目的IP不為10.4.5.6的封包。
換句話說,顯示的封包將會為:
來源IP:除了10.1.2.3以外任意;同時須滿足,目的IP:除了10.4.5.6以外任意
| tcp.port?==?25 | 顯示來源或目的TCP端口號為25的封包。 |
?
| tcp.dstport?==?25 | 顯示目的TCP端口號為25的封包。 |
?
| tcp.flags | 顯示包含TCP標志的封包。 |
?
| tcp.flags.syn?==?0x02 | 顯示包含TCP?SYN標志的封包。 |
如果過濾器的語法是正確的,表達式的背景呈綠色。如果呈紅色,說明表達式有誤。
| 表達式正確 | |
| 表達式錯誤 |
?
總結(jié)
以上是生活随笔為你收集整理的Wireshark网卡抓包工具简明教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。