Wireshark圖解教程

weixin_34054866發表於2014-06-25

Wireshark是世界上最流行的網路分析工具。這個強大的工具能夠捕捉網路中的資料,併為使用者提供關於網路和上層協議的各種資訊。與非常多其它網路工具一樣,Wireshark也使用pcap network library來進行封包捕捉。可破解區域網內QQ、郵箱、msn、賬號等的password!! 
wireshark的原名是Ethereal,新名字是2006年起用的。當時Ethereal的主要開發人員決定離開他原來供職的公司,並繼續開發這個軟體。但因為Ethereal這個名稱的使用權已經被原來那個公司註冊,Wireshark這個新名字也就應運而生了。

在成功執行Wireshark之後,我們就能夠進入下一步,更進一步瞭解這個強大的工具。
以下是一張地址為192.168.1.2的計算機正在訪問“openmaniak.com”站點時的截圖。

wireshark frontend


1. MENUS(選單)
2. SHORTCUTS(快捷方式)
3. DISPLAY FILTER(顯示過濾器)
4. PACKET LIST PANE(封包列表)
5. PACKET DETAILS PANE(封包具體資訊)
6. DISSECTOR PANE(16進位制資料)
7. MISCELLANOUS(雜項)


1. MENUS(選單)

wireshark menus

程式上方的8個選單項用於對Wireshark進行配置:

- "File"(檔案)
- "Edit" (編輯)
- "View"(檢視)
- "Go" (轉到)
- "Capture"(捕獲)
- "Analyze"(分析)
- "Statistics" (統計)
- "Help" (幫助)
開啟或儲存捕獲的資訊。
查詢或標記封包。進行全域性設定。
設定Wireshark的檢視。
跳轉到捕獲的資料。
設定捕捉過濾器並開始捕捉。
設定分析選項。
檢視Wireshark的統計資訊。
檢視本地或者線上支援。

2. SHORTCUTS(快捷方式)

wireshark shortcuts

在選單以下,是一些經常使用的快捷button。
您能夠將滑鼠指標移動到某個圖示上以獲得其功能說明。

3. DISPLAY FILTER(顯示過濾器)

wireshark display filter

顯示過濾器用於查詢捕捉記錄中的內容。
請不要將捕捉過濾器和顯示過濾器的概念相混淆。請參考Wireshark過濾器中的具體內容。
Wireshark圖解教程(簡單介紹、抓包、過濾器)返回頁面頂部


4. PACKET LIST PANE(封包列表)

wireshark packet filter pane

wireshark packet filter pane

封包列表中顯示全部已經捕獲的封包。在這裡您能夠看到傳送或接收方的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(封包具體資訊)

wireshark packet filter pane

這裡顯示的是在封包列表中被選中專案的具體資訊。
資訊依照不同的OSI layer進行了分組,您能夠展開每一個專案檢視。以下截圖中展開的是HTTP資訊。

wireshark packet details pane

6. DISSECTOR PANE(16進位制資料)

wireshark packet dissector pane

“解析器”在Wireshark中也被叫做“16進位制資料檢視皮膚”。這裡顯示的內容與“封包具體資訊”中同樣,僅僅是改為以16進位制的格式表述。
在上面的樣例裡,我們在“封包具體資訊”中選擇檢視TCP埠(80),其相應的16進位制資料將自己主動顯示在以下的皮膚中(0050)。

7. MISCELLANOUS(雜項)

wireshark miscellanous

在程式的最下端,您能夠獲得例如以下資訊:
- - 正在進行捕捉的網路裝置。
- 捕捉是否已經開始或已經停止。
- 捕捉結果的儲存位置。
- 已捕捉的資料量。
- 已捕捉封包的數量。(P)
- 顯示的封包數量。(D) (經過顯示過濾器過濾後仍然顯示的封包)
- 被標記的封包數量。(M)

正如您在Wireshark教程第一部分看到的一樣,安裝、執行Wireshark並開始分析網路是非常easy的。
使用Wireshark時最常見的問題,是當您使用預設設定時,會得到大量冗餘資訊,以至於非常難找到自己須要的部分。
過猶不及。
這就是為什麼過濾器會如此重要。它們能夠幫助我們在龐雜的結果中迅速找到我們須要的資訊。

-
-
捕捉過濾器:用於決定將什麼樣的資訊記錄在捕捉結果中。須要在開始捕捉前設定。
顯示過濾器:在捕捉結果中進行具體查詢。他們能夠在得到捕捉結果後隨意改動。

那麼我應該使用哪一種過濾器呢?
兩種過濾器的目的是不同的。
捕捉過濾器是資料經過的第一層過濾器,它用於控制捕捉資料的數量,以避免產生過大的日誌檔案。
顯示過濾器是一種更為強大(複雜)的過濾器。它同意您在日誌檔案裡迅速準確地找到所須要的記錄。
兩種過濾器使用的語法是全然不同的。我們將在接下來的幾頁中對它們進行介紹:


1. 捕捉過濾器 2. 顯示過濾器


Wireshark圖解教程(簡單介紹、抓包、過濾器) 1. 捕捉過濾器
捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟體一樣,比方著名的TCPdump。捕捉過濾器必須在開始捕捉前設定完成,這一點跟顯示過濾器是不同的。
設定捕捉過濾器的步驟是:
- 選擇 capture -> options。
- 填寫"capture filter"欄或者點選"capture filter"button為您的過濾器起一個名字並儲存,以便在今後的捕捉中繼續使用這個過濾器。
- 點選開始(Start)進行捕捉。
wireshark capture options
wireshark capture options

語法:

Protocol

Direction

Host(s)

Value

Logical Operations

Other expression

樣例:

tcp           dst               10.1.1.1            80          and

tcp dst 10.2.2.2 3128

Wireshark圖解教程(簡單介紹、抓包、過濾器)Protocol(協議):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
假設沒有特別指明是什麼協議,則預設使用全部支援的協議。
Wireshark圖解教程(簡單介紹、抓包、過濾器)Direction(方向):
可能的值: src, dst, src and dst, src or dst
假設沒有特別指明來源或目的地,則預設使用 "src or dst" 作為keyword。
比如,"host 10.2.2.2"與"src or dst host 10.2.2.2"是一樣的。
Wireshark圖解教程(簡單介紹、抓包、過濾器)Host(s):
可能的值: net, port, host, portrange.
假設沒有指定此值,則預設使用"host"keyword。
比如,"src 10.1.1.1"與"src host 10.1.1.1"同樣。
Wireshark圖解教程(簡單介紹、抓包、過濾器)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 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範圍內的封包。

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內的全部封包。


注意事項:
當使用keyword作為值時,需使用反斜槓“/”。
"ether proto /ip" (與keyword"ip"同樣).
這樣寫將會以IP協議作為目標。
"ip proto /icmp" (與keyword"icmp"同樣).
這樣寫將會以ping工具經常使用的icmp作為目標。
能夠在"ip"或"ether"後面使用"multicast"及"broadcast"keyword。
當您想排除廣播請求時,"no broadcast"就會非常實用。


檢視 TCPdump的主頁以獲得更具體的捕捉過濾器語法說明。
Wiki Wireshark website上能夠找到很多其它捕捉過濾器的樣例。
Wireshark圖解教程(簡單介紹、抓包、過濾器) 2. 顯示過濾器:
通常經過捕捉過濾器過濾後的資料還是非常複雜。此時您能夠使用顯示過濾器進行更加仔細的查詢。
它的功能比捕捉過濾器更為強大,而且在您想改動過濾器條件時,並不須要又一次捕捉一次。

語法:
Protocol
.

String 1

.

String 2

Comparison
operator

Value

Logical
Operations

Other
expression

樣例:

ftp

passive

ip

==

10.2.3.4

xor

icmp.type

Wireshark圖解教程(簡單介紹、抓包、過濾器)Protocol(協議):
您能夠使用大量位於OSI模型第2至7層的協議。點選"Expression..."button後,您能夠看到它們。
比方:IP,TCP,DNS,SSH
wireshark filter expression
wireshark filter expression
您同樣能夠在例如以下所看到的位置找到所支援的協議:
wireshark supported protocols
wireshark supported protocols
Wireshark的站點提供了對各種 協議以及它們子類的說明
Wireshark圖解教程(簡單介紹、抓包、過濾器)String1, String2 (可選項):
協議的子類。
點選相關父類旁的"+"號,然後選擇其子類。
wireshark filter expression
Wireshark圖解教程(簡單介紹、抓包、過濾器)Comparison operators (比較運算子):
能夠使用6種比較運算子:

英文寫法: 
C語言寫法: 
含義:

eq

==

等於

ne

!=

不等於

gt

>

大於

lt

<

小於

ge

>=

大於等於

le

<=

小於等於

Wireshark圖解教程(簡單介紹、抓包、過濾器)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標誌的封包。

假設過濾器的語法是正確的,表示式的背景呈綠色。假設呈紅色,說明表示式有誤。

wireshark display filter example
表示式正確

wireshark display filter example
表示式錯誤

相關文章