-
- |
捕捉過濾器:用於決定將什麼樣的資訊記錄在捕捉結果中。需要在開始捕捉前設定。
顯示過濾器:在捕捉結果中進行詳細尋找。他們可以在得到捕捉結果後隨意修改。 |
兩種過濾器的目的是不同的。
1.捕捉過濾器是資料經過的第一層過濾器,它用於控制捕捉資料的數量,以避免產生過大的記錄檔。
2.顯示過濾器是一種更為強大(複雜)的過濾器。它允許您在記錄檔中迅速準確地找到所需要的記錄。
1.捕捉過濾器
捕捉過濾器的文法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟體一樣,比如著名的TCPdump。捕捉過濾器必須在開始捕捉前設定完畢,這一點跟顯示過濾器是不同的。
設定捕捉過濾器的步驟是:
- 選擇 capture -> options。
- 填寫"capture filter"欄或者點擊"capture filter"按鈕為您的過濾器起一個名字並儲存,以便在今後的捕捉中繼續使用這個過濾器。
- 點擊開始(Start)進行捕捉。
| 文法: |
|
Protocol |
|
Direction |
|
Host(s) |
|
Value |
|
Logical Operations |
|
Other expression_r |
| 例子: |
|
tcp |
|
dst |
|
10.1.1.1 |
|
80 |
|
and |
|
tcp dst 10.2.2.2 3128 |
Protocol(協議):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果沒有特別指明是什麼協議,則預設使用所有支援的協議。
Direction(方向):
可能的值: src, dst, src and dst, src or dst
如果沒有特別指明來源或目的地,則預設使用 "src or dst" 作為關鍵字。
例如,"host 10.2.2.2"與"src or dst host 10.2.2.2"是一樣的。
Host(s):
可能的值: net, port, host, portrange.
如果沒有指定此值,則預設使用"host"關鍵字。
例如,"src 10.1.1.1"與"src host 10.1.1.1"相同。
Logical Operations(邏輯運算):
可能的值:not, and, or.
否("not")具有最高的優先順序。或("or")和與("and")具有相同的優先順序,運算時從左至右進行。
例如,
"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連接埠為3128的封包。
顯示來源IP地址為10.1.1.1的封包。
顯示目的或來源IP地址為10.1.2.3的封包。
顯示來源為UDP或TCP,並且連接埠號碼在2000至2500範圍內的封包。
顯示除了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或者來源網路為10.6.0.0/16,目的地TCP連接埠號碼在200至10000之間,並且目的位於網路10.0.0.0/8內的所有封包。
注意事項:
當使用關鍵字作為值時,需使用反斜線“\”。
"ether proto \ip" (與關鍵字"ip"相同).
這樣寫將會以IP協議作為目標。
"ip proto \icmp" (與關鍵字"icmp"相同).
這樣寫將會以ping工具常用的icmp作為目標。
可以在"ip"或"ether"後面使用"multicast"及"broadcast"關鍵字。
當您想排除廣播請求時,"no broadcast"就會非常有用。
2. 顯示過濾器
通常經過捕捉過濾器過濾後的資料還是很複雜。此時您可以使用顯示過濾器進行更加細緻的尋找。
它的功能比捕捉過濾器更為強大,而且在您想修改過濾器條件時,並不需要重新捕捉一次。
| 文法: |
|
Protocol |
. |
String 1 |
. |
String 2 |
|
Comparison
operator |
|
Value |
|
Logical
Operations |
|
Other
expression_r |
| 例子: |
|
ftp |
|
passive |
|
ip |
|
== |
|
10.2.3.4 |
|
xor |
|
icmp.type |
Protocol(協議):
您可以使用大量位於OSI模型第2至7層的協議。點擊"Expression..."按鈕後,您可以看到它們。
比如:IP,TCP,DNS,SSH
String1, String2 (可選項):
協議的子類。
點擊相關父類旁的"》"號,然後選擇其子類。
Comparison operators (比較子):
可以使用6種比較子:
| 英文寫法: |
C語言寫法: |
含義: |
| eq |
== |
等於 |
| ne |
!= |
不等於 |
| gt |
> |
大於 |
| lt |
< |
小於 |
| ge |
>= |
大於等於 |
| le |
<= |
小於等於 |
Logical expression_rs(邏輯運算子):
| 英文寫法: |
C語言寫法: |
含義: |
| and |
&& |
邏輯與 |
| or |
|| |
邏輯或 |
| xor |
^^ |
邏輯異或 |
| not |
! |
邏輯非 |
被程式員們熟知的邏輯異或是一種排除性的或。當其被用在過濾器的兩個條件之間時,只有若且唯若其中的一個條件滿足時,這樣的結果才會被顯示在螢幕上。
讓我們舉個例子:
"tcp.dstport 80 xor tcp.dstport 1025"
只有當目的TCP連接埠為80或者來源於連接埠1025(但又不能同時滿足這兩點)時,這樣的封包才會被顯示。
例子:
| snmp || dns || icmp |
顯示SNMP或DNS或ICMP封包。 |
顯示來源或目的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.syn == 0x02 |
顯示包含TCP SYN標誌的封包。 |
如果過濾器的文法是正確的,運算式的背景呈綠色。如果呈紅色,說明運算式有誤。
分析:
"Follow TCP Stream"
如果你處理TCP協議,想要查看Tcp流中的應用程式層資料,"Following TCP streams"功能將會很有用。如果你項查看telnet流中的密碼,或者你想嘗試弄明白一個資料流。或者你僅僅只需要一個顯示過濾來顯示某個TCP流的包。這些都可以通過Wireshark的"Following TCP streams"功能來實現。
在包列表中選擇一個你感興趣的TCP包,然後選擇Wireshark工具列菜單的"Following TCP Streams"選項(或者使用包列表滑鼠右鍵的操作功能表)。然後,Wireshark就會建立合適的顯示過濾器,並彈出一個對話方塊顯示TCP流的所有資料。
"Follow TCP Stream"對話方塊
流的內容出現的順序同他們在網路中出現的順序一致。從A到B的通訊標記為紅色,從B到A的通訊標記為藍色。當然,如果你喜歡的話你可以從"Edit/Preferences"功能表項目的"Colores"修改顏色。
非列印字元將會被顯示為圓點。XXX - What about line wrapping (maximum line length) and CRNL conversions?
在捕捉過程中,TCP流不能即時更新。想得到最近的內容需要重新開啟對話方塊。
你可以在此對話方塊執行如下操作:
-
Save As 以當前選擇格式儲存流資料。
-
Print 以當前選擇格式列印流資料。
-
Direction 選擇流的顯示方向("Entire conversation", "data from A to B only" or "data from B to A only").
-
Filter out this stream 應用一個顯示過濾,在顯示中排除當前選擇的TCP流。
-
Close 關閉目前的交談框。移除對當前顯示過濾的影響。
你可以用以下格式瀏覽流資料。
-
AsCII。在此視圖下你可以以ASCII凡是查看資料。當然最適合基於ASCII的協議用,例如HTTP.
-
EBCDIC。For the big-iron freaks out there.(不知道這句是什麼意思, EBCDIC 是IBM公司的字元二進位編碼通訊協定。)
-
HEX Dump. 允許你查看所有資料,可能會佔用大量螢幕空間。適合顯示二進位協議。
-
C Arrays. 允許你將流資料匯入你自己的C語言程式。
-
RAW。 允許你載入未經處理資料到其他應用程式做進一步分析。顯示類似與ASCII設定。但“save As”將會儲存為二進位檔案