wireshark是一款抓包軟件,比較易用,在平常可以利用它抓包,分析協(xié)議或者監(jiān)控網(wǎng)絡(luò),是一個(gè)比較好的工具,因?yàn)樽罱谘芯窟@個(gè),所以就寫(xiě)一下教程,方便大家學(xué)習(xí)。
這里先說(shuō)Wireshark的啟動(dòng)界面和抓包界面
啟動(dòng)界面:
抓包界面的啟動(dòng)是
按file下的按鈕
之后會(huì)出現(xiàn)
這個(gè)是網(wǎng)卡的顯示,因?yàn)槲矣刑摂M機(jī)所以會(huì)顯示虛擬網(wǎng)卡,我們現(xiàn)在抓的是真實(shí)網(wǎng)卡上的包所以在以太網(wǎng)卡右邊點(diǎn)擊start 開(kāi)始抓包
這個(gè)就是抓包的界面了(也是主界面)
Wireshark主窗口由如下部分組成:
-
菜單——用于開(kāi)始操作。
-
主工具欄——提供快速訪問(wèn)菜單中經(jīng)常用到的項(xiàng)目的功能。
-
Fiter toolbar/過(guò)濾工具欄——提供處理當(dāng)前顯示過(guò)濾得方法。
-
Packet List面板——顯示打開(kāi)文件的每個(gè)包的摘要。點(diǎn)擊面板中的單獨(dú)條目,包的其他情況將會(huì)顯示在另外兩個(gè)面板中。
-
Packet detail面板——顯示您在Packet list面板中選擇的包的更多詳情。
-
Packet bytes面板——顯示您在Packet list面板選擇的包的數(shù)據(jù),以及在Packet details面板高亮顯示的字段。
-
狀態(tài)欄——顯示當(dāng)前程序狀態(tài)以及捕捉數(shù)據(jù)的更多詳情。
1.菜單欄
主菜單包括以下幾個(gè)項(xiàng)目:
File ——包括打開(kāi)、合并捕捉文件,save/保存,Print/打印,Export/導(dǎo)出捕捉文件的全部或部分。以及退出Wireshark項(xiàng).
Edit ——包括如下項(xiàng)目:查找包,時(shí)間參考,標(biāo)記一個(gè)多個(gè)包,設(shè)置預(yù)設(shè)參數(shù)。(剪切,拷貝,粘貼不能立即執(zhí)行。)
View ——控制捕捉數(shù)據(jù)的顯示方式,包括顏色,字體縮放,將包顯示在分離的窗口,展開(kāi)或收縮詳情面版的地樹(shù)狀節(jié)點(diǎn)
GO ——包含到指定包的功能。
Analyze ——包含處理顯示過(guò)濾,允許或禁止分析協(xié)議,配置用戶指定解碼和追蹤TCP流等功能。
Statistics ——包括的菜單項(xiàng)用戶顯示多個(gè)統(tǒng)計(jì)窗口,包括關(guān)于捕捉包的摘要,協(xié)議層次統(tǒng)計(jì)等等。
- Help ——包含一些輔助用戶的參考內(nèi)容。如訪問(wèn)一些基本的幫助文件,支持的協(xié)議列表,用戶手冊(cè)。在線訪問(wèn)一些網(wǎng)站,“關(guān)于”
- 2.工具欄(略)
3.過(guò)濾工具欄
- 做完修改之后,記得點(diǎn)擊右邊的Apply(應(yīng)用)按鈕,或者回車(chē),以使過(guò)濾生效。
- 輸入框的內(nèi)容同時(shí)也是當(dāng)前過(guò)濾器的內(nèi)容(當(dāng)前過(guò)濾器的內(nèi)容會(huì)反映在輸入框)
4.封包列表
-
封包列表中顯示所有已經(jīng)捕獲的封包。在這里您可以看到發(fā)送或接收方的MAC/IP地址,TCP/UDP端口號(hào),協(xié)議或者封包的內(nèi)容。
如果捕獲的是一個(gè)OSI layer 2的封包,您在Source(來(lái)源)和Destination(目的地)列中看到的將是MAC地址,當(dāng)然,此時(shí)Port(端口)列將會(huì)為空。
如果捕獲的是一個(gè)OSI layer 3或者更高層的封包,您在Source(來(lái)源)和Destination(目的地)列中看到的將是IP地址。Port(端口)列僅會(huì)在這個(gè)封包屬于第4或者更高層時(shí)才會(huì)顯示。
您可以在這里添加/刪除列或者改變各列的顏色:
Edit menu -> Preferences5.封包詳細(xì)信息
信息按照不同的OSI layer進(jìn)行了分組,您可以展開(kāi)每個(gè)項(xiàng)目查看。ps:wireshark會(huì)用不難,難的是會(huì)看懂這些包
(如果對(duì)這些包頭信息不了解的可以自己去查查資料)
在這里我們還要學(xué)會(huì)在大量的信息中過(guò)濾和分析我們需要的信息
過(guò)濾:
過(guò)濾器會(huì)如此重要。它們可以幫助我們?cè)邶嬰s的結(jié)果中迅速找到我們需要的信息。
-
-
-捕捉過(guò)濾器:用于決定將什么樣的信息記錄在捕捉結(jié)果中。需要在開(kāi)始捕捉前設(shè)置。
顯示過(guò)濾器:在捕捉結(jié)果中進(jìn)行詳細(xì)查找。他們可以在得到捕捉結(jié)果后隨意修改。
兩種過(guò)濾器的目的是不同的。1.捕捉過(guò)濾器是數(shù)據(jù)經(jīng)過(guò)的第一層過(guò)濾器,它用于控制捕捉數(shù)據(jù)的數(shù)量,以避免產(chǎn)生過(guò)大的日志文件。
2.顯示過(guò)濾器是一種更為強(qiáng)大(復(fù)雜)的過(guò)濾器。它允許您在日志文件中迅速準(zhǔn)確地找到所需要的記錄。1.捕捉過(guò)濾器
捕捉過(guò)濾器的語(yǔ)法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫(kù)開(kāi)發(fā)的軟件一樣,比如著名的TCPdump。捕捉過(guò)濾器必須在開(kāi)始捕捉前設(shè)置完畢,這一點(diǎn)跟顯示過(guò)濾器是不同的。
設(shè)置捕捉過(guò)濾器的步驟是:
- 選擇 capture -> options。
- 填寫(xiě)"capture filter"欄或者點(diǎn)擊"capture filter"按鈕為您的過(guò)濾器起一個(gè)名字并保存,以便在今后的捕捉中繼續(xù)使用這個(gè)過(guò)濾器。
- 點(diǎn)擊開(kāi)始(Start)進(jìn)行捕捉。語(yǔ)法: 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(協(xié)議):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果沒(méi)有特別指明是什么協(xié)議,則默認(rèn)使用所有支持的協(xié)議。Direction(方向):
可能的值: src, dst, src and dst, src or dst
如果沒(méi)有特別指明來(lái)源或目的地,則默認(rèn)使用 "src or dst" 作為關(guān)鍵字。
例如,"host 10.2.2.2"與"src or dst host 10.2.2.2"是一樣的。Host(s):
可能的值: net, port, host, portrange.
如果沒(méi)有指定此值,則默認(rèn)使用"host"關(guān)鍵字。
例如,"src 10.1.1.1"與"src host 10.1.1.1"相同。Logical Operations(邏輯運(yùn)算):
可能的值:not, and, or.
否("not")具有最高的優(yōu)先級(jí)。或("or")和與("and")具有相同的優(yōu)先級(jí),運(yùn)算時(shí)從左至右進(jìn)行。
例如,
"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 顯示來(lái)源IP地址為10.1.1.1的封包。
host 10.1.2.3 顯示目的或來(lái)源IP地址為10.1.2.3的封包。
src portrange 2000-2500 顯示來(lái)源為UDP或TCP,并且端口號(hào)在2000至2500范圍內(nèi)的封包。
not imcp 顯示除了icmp以外的所有封包。(icmp通常被ping工具使用)
src host 10.7.2.12 and not dst net 10.200.0.0/16 顯示來(lái)源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 顯示來(lái)源IP為10.4.1.12或者來(lái)源網(wǎng)絡(luò)為10.6.0.0/16,目的地TCP端口號(hào)在200至10000之間,并且目的位于網(wǎng)絡(luò)10.0.0.0/8內(nèi)的所有封包。
注意事項(xiàng):
當(dāng)使用關(guān)鍵字作為值時(shí),需使用反斜杠“\”。
"ether proto \ip" (與關(guān)鍵字"ip"相同).
這樣寫(xiě)將會(huì)以IP協(xié)議作為目標(biāo)。
"ip proto \icmp" (與關(guān)鍵字"icmp"相同).
這樣寫(xiě)將會(huì)以ping工具常用的icmp作為目標(biāo)。
可以在"ip"或"ether"后面使用"multicast"及"broadcast"關(guān)鍵字。
當(dāng)您想排除廣播請(qǐng)求時(shí),"no broadcast"就會(huì)非常有用。2. 顯示過(guò)濾器
通常經(jīng)過(guò)捕捉過(guò)濾器過(guò)濾后的數(shù)據(jù)還是很復(fù)雜。此時(shí)您可以使用顯示過(guò)濾器進(jìn)行更加細(xì)致的查找。
它的功能比捕捉過(guò)濾器更為強(qiáng)大,而且在您想修改過(guò)濾器條件時(shí),并不需要重新捕捉一次。語(yǔ)法: Protocol . String 1 . String 2 Comparison
operatorValue Logical
OperationsOther
expression_r例子: ftp passive ip == 10.2.3.4 xor icmp.type Protocol(協(xié)議):
您可以使用大量位于OSI模型第2至7層的協(xié)議。點(diǎn)擊"Expression..."按鈕后,您可以看到它們。
比如:IP,TCP,DNS,SSHString1, String2 (可選項(xiàng)):
協(xié)議的子類(lèi)。
點(diǎn)擊相關(guān)父類(lèi)旁的"》"號(hào),然后選擇其子類(lèi)。Comparison operators (比較運(yùn)算符):
可以使用6種比較運(yùn)算符:英文寫(xiě)法: C語(yǔ)言寫(xiě)法: 含義: eq == 等于 ne != 不等于 gt > 大于 lt < 小于 ge >= 大于等于 le <= 小于等于 Logical expression_rs(邏輯運(yùn)算符):
英文寫(xiě)法: C語(yǔ)言寫(xiě)法: 含義: and && 邏輯與 or || 邏輯或 xor ^^ 邏輯異或 not ! 邏輯非 被程序員們熟知的邏輯異或是一種排除性的或。當(dāng)其被用在過(guò)濾器的兩個(gè)條件之間時(shí),只有當(dāng)且僅當(dāng)其中的一個(gè)條件滿足時(shí),這樣的結(jié)果才會(huì)被顯示在屏幕上。
讓我們舉個(gè)例子:
"tcp.dstport 80 xor tcp.dstport 1025"
只有當(dāng)目的TCP端口為80或者來(lái)源于端口1025(但又不能同時(shí)滿足這兩點(diǎn))時(shí),這樣的封包才會(huì)被顯示。
例子:snmp || dns || icmp 顯示SNMP或DNS或ICMP封包。 ip.addr == 10.1.1.1 顯示來(lái)源或目的IP地址為10.1.1.1的封包。
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6 顯示來(lái)源不為10.1.2.3或者目的不為10.4.5.6的封包。
換句話說(shuō),顯示的封包將會(huì)為:
來(lái)源IP:除了10.1.2.3以外任意;目的IP:任意
以及
來(lái)源IP:任意;目的IP:除了10.4.5.6以外任意ip.src != 10.1.2.3 and ip.dst != 10.4.5.6 顯示來(lái)源不為10.1.2.3并且目的IP不為10.4.5.6的封包。
換句話說(shuō),顯示的封包將會(huì)為:
來(lái)源IP:除了10.1.2.3以外任意;同時(shí)須滿足,目的IP:除了10.4.5.6以外任意tcp.port == 25 顯示來(lái)源或目的TCP端口號(hào)為25的封包。 tcp.dstport == 25 顯示目的TCP端口號(hào)為25的封包。 tcp.flags 顯示包含TCP標(biāo)志的封包。 tcp.flags.syn == 0x02 顯示包含TCP SYN標(biāo)志的封包。 如果過(guò)濾器的語(yǔ)法是正確的,表達(dá)式的背景呈綠色。如果呈紅色,說(shuō)明表達(dá)式有誤。
分析:
"Follow TCP Stream"
如果你處理TCP協(xié)議,想要查看Tcp流中的應(yīng)用層數(shù)據(jù),"Following TCP streams"功能將會(huì)很有用。如果你項(xiàng)查看telnet流中的密碼,或者你想嘗試弄明白一個(gè)數(shù)據(jù)流。或者你僅僅只需要一個(gè)顯示過(guò)濾來(lái)顯示某個(gè)TCP流的包。這些都可以通過(guò)Wireshark的"Following TCP streams"功能來(lái)實(shí)現(xiàn)。
在包列表中選擇一個(gè)你感興趣的TCP包,然后選擇Wireshark工具欄菜單的"Following TCP Streams"選項(xiàng)(或者使用包列表鼠標(biāo)右鍵的上下文菜單)。然后,Wireshark就會(huì)創(chuàng)建合適的顯示過(guò)濾器,并彈出一個(gè)對(duì)話框顯示TCP流的所有數(shù)據(jù)。
"Follow TCP Stream"對(duì)話框
流的內(nèi)容出現(xiàn)的順序同他們?cè)诰W(wǎng)絡(luò)中出現(xiàn)的順序一致。從A到B的通信標(biāo)記為紅色,從B到A的通信標(biāo)記為藍(lán)色。當(dāng)然,如果你喜歡的話你可以從"Edit/Preferences"菜單項(xiàng)的"Colores"修改顏色。
非打印字符將會(huì)被顯示為圓點(diǎn)。XXX - What about line wrapping (maximum line length) and CRNL conversions?
在捕捉過(guò)程中,TCP流不能實(shí)時(shí)更新。想得到最近的內(nèi)容需要重新打開(kāi)對(duì)話框。
你可以在此對(duì)話框執(zhí)行如下操作:
-
Save As 以當(dāng)前選擇格式保存流數(shù)據(jù)。
-
Print 以當(dāng)前選擇格式打印流數(shù)據(jù)。
-
Direction 選擇流的顯示方向("Entire conversation", "data from A to B only" or "data from B to A only").
-
Filter out this stream 應(yīng)用一個(gè)顯示過(guò)濾,在顯示中排除當(dāng)前選擇的TCP流。
-
Close 關(guān)閉當(dāng)前對(duì)話框。移除對(duì)當(dāng)前顯示過(guò)濾的影響。
你可以用以下格式瀏覽流數(shù)據(jù)。
-
AsCII。在此視圖下你可以以ASCII凡是查看數(shù)據(jù)。當(dāng)然最適合基于ASCII的協(xié)議用,例如HTTP.
-
EBCDIC。For the big-iron freaks out there.(不知道這句是什么意思, EBCDIC 是IBM公司的字符二進(jìn)制編碼標(biāo)準(zhǔn)。)
-
HEX Dump. 允許你查看所有數(shù)據(jù),可能會(huì)占用大量屏幕空間。適合顯示二進(jìn)制協(xié)議。
-
C Arrays. 允許你將流數(shù)據(jù)導(dǎo)入你自己的C語(yǔ)言程序。
-
RAW。 允許你載入原始數(shù)據(jù)到其他應(yīng)用程序做進(jìn)一步分析。顯示類(lèi)似與ASCII設(shè)置。但“save As”將會(huì)保存為二進(jìn)制文件
-
-