Wireshark是世界上最流行的網絡分析工具。這個強大的工具可以捕捉網絡中的數據,併爲用戶提供關於網絡和上層協議的各類信息。與很是多其它網絡工具同樣,Wireshark也使用pcap network library來進行封包捕捉。可破解局域網內QQ、郵箱、msn、帳號等的password!!
wireshark的原名是Ethereal,新名字是2006年起用的。當時Ethereal的主要開發人員決定離開他原來供職的公司,並繼續開發這個軟件。但由於Ethereal這個名稱的使用權已經被原來那個公司註冊,Wireshark這個新名字也就應運而生了。php
在成功執行Wireshark以後,咱們就可以進入下一步,更進一步瞭解這個強大的工具。
如下是一張地址爲192.168.1.2的計算機正在訪問「openmaniak.com」站點時的截圖。html
1. MENUS(菜單)
2. SHORTCUTS(快捷方式)
3. DISPLAY FILTER(顯示過濾器)
4. PACKET LIST PANE(封包列表)
5. PACKET DETAILS PANE(封包具體信息)
6. DISSECTOR PANE(16進制數據)
7. MISCELLANOUS(雜項)web
1. MENUS(菜單)
express
程序上方的8個菜單項用於對Wireshark進行配置:網絡
- "File"(文件)
- "Edit" (編輯)
- "View"(查看)
- "Go" (轉到)
- "Capture"(捕獲)
- "Analyze"(分析)
- "Statistics" (統計)
- "Help" (幫助)
打開或保存捕獲的信息。
查找或標記封包。進行全局設置。
設置Wireshark的視圖。
跳轉到捕獲的數據。
設置捕捉過濾器並開始捕捉。
設置分析選項。
查看Wireshark的統計信息。
查看本地或者在線支持。frontend
2. SHORTCUTS(快捷方式)
tcp
在菜單如下,是一些常用的快捷button。
您可以將鼠標指針移動到某個圖標上以得到其功能說明。工具
3. DISPLAY FILTER(顯示過濾器)
3d
顯示過濾器用於查找捕捉記錄中的內容。
請不要將捕捉過濾器和顯示過濾器的概念相混淆。請參考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信息。
「解析器」在Wireshark中也被叫作「16進制數據查看面板」。這裏顯示的內容與「封包具體信息」中一樣,僅僅是改成以16進制的格式表述。
在上面的樣例裏,咱們在「封包具體信息」中選擇查看TCP端口(80),其相應的16進制數據將本身主動顯示在如下的面板中(0050)。
在程序的最下端,您可以得到例如如下信息:
- - 正在進行捕捉的網絡設備。
- 捕捉是否已經開始或已經中止。
- 捕捉結果的保存位置。
- 已捕捉的數據量。
- 已捕捉封包的數量。(P)
- 顯示的封包數量。(D) (通過顯示過濾器過濾後仍然顯示的封包)
- 被標記的封包數量。(M)
正如您在Wireshark教程第一部分看到的同樣,安裝、執行Wireshark並開始分析網絡是很是easy的。
使用Wireshark時最多見的問題,是當您使用默認設置時,會獲得大量冗餘信息,以致於很是難找到本身需要的部分。
過猶不及。
這就是爲何過濾器會如此重要。它們可以幫助咱們在龐雜的結果中迅速找到咱們需要的信息。
-
-
捕捉過濾器:用於決定將什麼樣的信息記錄在捕捉結果中。需要在開始捕捉前設置。
顯示過濾器:在捕捉結果中進行具體查找。他們可以在獲得捕捉結果後隨意改動。
那麼我應該使用哪種過濾器呢?
兩種過濾器的目的是不一樣的。
捕捉過濾器是數據通過的第一層過濾器,它用於控制捕捉數據的數量,以免產生過大的日誌文件。
顯示過濾器是一種更爲強大(複雜)的過濾器。它贊成您在日誌文件裏迅速準確地找到所需要的記錄。
兩種過濾器使用的語法是全然不一樣的。咱們將在接下來的幾頁中對它們進行介紹:
1. 捕捉過濾器
捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟件同樣,比方著名的TCPdump。捕捉過濾器必須在開始捕捉前設置完成,這一點跟顯示過濾器是不一樣的。
設置捕捉過濾器的步驟是:
- 選擇 capture -> options。
- 填寫"capture filter"欄或者點擊"capture filter"button爲您的過濾器起一個名字並保存,以便在從此的捕捉中繼續使用這個過濾器。
- 點擊開始(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
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" 做爲keyword。
好比,"host 10.2.2.2"與"src or dst host 10.2.2.2"是同樣的。 Host(s):
可能的值: net, port, host, portrange.
假設沒有指定此值,則默認使用"host"keyword。
好比,"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 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上可以找到不少其它捕捉過濾器的樣例。 2. 顯示過濾器:
一般通過捕捉過濾器過濾後的數據仍是很是複雜。此時您可以使用顯示過濾器進行更加仔細的查找。
它的功能比捕捉過濾器更爲強大,並且在您想改動過濾器條件時,並不需要又一次捕捉一次。
語法:
Protocol
.
String 1
.
String 2
Comparison
operator
Value
Logical
Operations
Other
expression
樣例:
ftp
passive
ip
==
10.2.3.4
xor
icmp.type
Protocol(協議):
您可以使用大量位於OSI模型第2至7層的協議。點擊"Expression..."button後,您可以看到它們。
比方: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標誌的封包。
假設過濾器的語法是正確的,表達式的背景呈綠色。假設呈紅色,說明表達式有誤。
表達式正確
表達式錯誤