轉載自:WireShark圖文教程
Wireshark圖解教程(簡介、抓包、過濾器)
http://openmaniak.com/cn/wireshark.php
Wireshark是世界上最流行的網絡分析工具。這個強大的工具可以捕捉網絡中的數據,併爲用戶提供關於網絡和上層協議的各種信息。與很多其他網絡工具一樣,Wireshark也使用pcap network library來進行封包捕捉。
wireshark的原名是Ethereal,新名字是2006年起用的。當時Ethereal的主要開發者決定離開他原來供職的公司,並繼續開發這個軟件。但由於Ethereal這個名稱的使用權已經被原來那個公司註冊,Wireshark這個新名字也就應運而生了。
在成功運行Wireshark之後,我們就可以進入下一步,更進一步瞭解這個強大的工具。
下面是一張地址爲192.168.1.2的計算機正在訪問"openmaniak.com"網站時的截圖。
1. MENUS(菜單) |
5. PACKET DETAILS PANE(封包詳細信息) |
- "File"(文件) |
打開或保存捕獲的信息。 |
在菜單下面,是一些常用的快捷按鈕。
您可以將鼠標指針移動到某個圖標上以獲得其功能說明。
顯示過濾器用於查找捕捉記錄中的內容。
請不要將捕捉過濾器和顯示過濾器的概念相混淆。請參考Wireshark過濾器中的詳細內容。
返回頁面頂部
封包列表中顯示所有已經捕獲的封包。在這裏您可以看到發送或接收方的MAC/IP地址,TCP/UDP端口號,協議或者封包的內容。
如果捕獲的是一個OSI layer 2的封包,您在Source(來源)和Destination(目的地)列中看到的將是MAC地址,當然,此時Port(端口)列將會爲空。
如果捕獲的是一個OSI layer 3或者更高層的封包,您在Source(來源)和Destination(目的地)列中看到的將是IP地址。Port(端口)列僅會在這個封包屬於第4或者更高層時纔會顯示。
您可以在這裏添加/刪除列或者改變各列的顏色:
Edit menu -> Preferences
5. PACKET DETAILS PANE(封包詳細信息)
這裏顯示的是在封包列表中被選中項目的詳細信息。
信息按照不同的OSI layer進行了分組,您可以展開每個項目查看。下面截圖中展開的是HTTP信息。
- |
捕捉過濾器:用於決定將什麼樣的信息記錄在捕捉結果中。需要在開始捕捉前設置。 |
1. 捕捉過濾器
捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟件一樣,比如著名的TCPdump。捕捉過濾器必須在開始捕捉前設置完畢,這一點跟顯示過濾器是不同的。
設置捕捉過濾器的步驟是:
- 選擇 capture -> options。
- 填寫"capture filter"欄或者點擊"capture filter"按鈕爲您的過濾器起一個名字並保存,以便在今後的捕捉中繼續使用這個過濾器。
- 點擊開始(Start)進行捕捉。
語法: |
Protocol |
Direction |
Host(s) |
Value |
Logical Operations |
Other expression |
||||||
例子: |
tcp |
dst |
10.1.1.1 |
80 |
and |
tcp dst 10.2.2.2 3128 |
tcp dst port 3128 |
ip src host 10.1.1.1 |
host 10.1.2.3 |
src portrange 2000-2500 |
顯示來源爲UDP或TCP,並且端口號在2000至2500範圍內的封包。
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或者來源網絡爲10.6.0.0/16,目的地TCP端口號在200至10000之間,並且目的位於網絡10.0.0.0/8內的所有封包。
查看 TCPdump的主頁以獲得更詳細的捕捉過濾器語法說明。
在Wiki Wireshark website上可以找到更多捕捉過濾器的例子。
2. 顯示過濾器:
通常經過捕捉過濾器過濾後的數據還是很複雜。此時您可以使用顯示過濾器進行更加細緻的查找。
它的功能比捕捉過濾器更爲強大,而且在您想修改過濾器條件時,並不需要重新捕捉一次。
語法: |
Protocol |
. |
String 1 |
. |
String 2 |
Comparison |
Value |
Logical |
Other |
|||||
例子: |
ftp |
passive |
ip |
== |
10.2.3.4 |
xor |
icmp.type |
Protocol(協議):
您可以使用大量位於OSI模型第2至7層的協議。點擊"Expression..."按鈕後,您可以看到它們。
比如:IP,TCP,DNS,SSH
您同樣可以在如下所示位置找到所支持的協議:
Wireshark的網站提供了對各種 協議以及它們子類的說明。
String1, String2 (可選項):
協議的子類。
點擊相關父類旁的"+"號,然後選擇其子類。
Comparison operators (比較運算符):
可以使用6種比較運算符:
英文寫法: |
C語言寫法: |
含義: |
eq |
== |
等於 |
ne |
!= |
不等於 |
gt |
> |
大於 |
lt |
< |
小於 |
ge |
>= |
大於等於 |
le |
<= |
小於等於 |
Logical expressions(邏輯運算符):
英文寫法: |
C語言寫法: |
含義: |
and |
&& |
邏輯與 |
or |
|| |
邏輯或 |
xor |
^^ |
邏輯異或 |
not |
! |
邏輯非 |
被程序員們熟知的邏輯異或是一種排除性的或。當其被用在過濾器的兩個條件之間時,只有當且僅當其中的一個條件滿足時,這樣的結果纔會被顯示在屏幕上。
讓我們舉個例子:
"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標誌的封包。 |
如果過濾器的語法是正確的,表達式的背景呈綠色。如果呈紅色,說明表達式有誤。
表達式正確 |
|
表達式錯誤 |
下載地址:鏈接:https://pan.baidu.com/s/1mPd6ZbEdIAr6-iFOF1CAwg
提取碼:ww73