Wireshark是一款開源的網(wǎng)絡(luò)協(xié)議分析工具,是遵循GPL協(xié)議發(fā)布的自由軟件,因為以上原因,人們可以很容易在Wireshark上添加新的協(xié)議,或者將其作為插件整合到您的程序里,Wireshark支持Linux、Windows、MacOS等多個操作系統(tǒng)。
創(chuàng)新互聯(lián)服務(wù)項目包括扶綏網(wǎng)站建設(shè)、扶綏網(wǎng)站制作、扶綏網(wǎng)頁制作以及扶綏網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,扶綏網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到扶綏省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Wireshark在支持協(xié)議的數(shù)量方面是出類拔萃的—已經(jīng)支持?jǐn)?shù)千種協(xié)議,這些協(xié)議包括從最基礎(chǔ)的IP協(xié)議和DHCP協(xié)議到高級的專門應(yīng)用協(xié)議比如AppleTalk和BitTorrent等。由于Wireshark在開源模式下開發(fā),每次更新都會增加一些對新協(xié)議的支持。
參見下圖從功能上,wireshark可以被劃分為四個主要模塊:Capture Core,WireTap, Protocol Interpreter and Dissector和GUIintrerface。其中Capture Core使用pcap(windows下為winpcap,linux下為libpcap)抓取網(wǎng)絡(luò)數(shù)據(jù)包,獲取數(shù)據(jù)包后,WireTap把它保存為二進(jìn)制文件,interpreter and dissector就是把二進(jìn)制文件展現(xiàn)成用戶容易理解的文本形式,其中dissector又分為build-in和plug-in兩種,build-in很好理解,plug-in在1.3節(jié)會詳細(xì)介紹一下;GUIinterface,顧名思義就是用戶界面了。
在Windows系統(tǒng)中安裝很簡單。
第一步:到Wireshark的官方網(wǎng)站http://www.wireshark.org/ 上找到download頁面,并選擇一個鏡像點下載需要的版本。
第二步:下載好exe安裝包后,直接安裝,一路next,當(dāng)彈出是否需要安裝WinPcap對話框時,務(wù)必要勾選install WinPcap選項。
從主下拉菜單中選擇Capture的Interfaces菜單項,彈出的窗口顯示出所有可以的網(wǎng)卡,選擇你想要使用的網(wǎng)卡,點擊工具欄的start按鈕開始捕獲數(shù)據(jù),點擊工具欄的stop按鈕停止捕獲。這時Wireshark主窗口中就呈現(xiàn)了相應(yīng)的數(shù)據(jù)。
Wireshark主窗口如下圖
Packet Lists(數(shù)據(jù)包列表):顯示了當(dāng)前捕獲文件中的所有數(shù)據(jù)包,包括數(shù)據(jù)包序號、數(shù)據(jù)包被捕獲的相對時間,源地址、目標(biāo)地址、協(xié)議、概況信息。
Packet Details(數(shù)據(jù)包詳情):分層次的顯示了一個數(shù)據(jù)包中的內(nèi)容,并且可以展開或是收縮來顯示這個數(shù)據(jù)包中所捕獲到的全部內(nèi)容。
Packet Bytes(數(shù)據(jù)包字節(jié)):同時以十六進(jìn)制和ASCII碼的方式列出報文內(nèi)容。
。
抓包過濾器配置于抓包之前,一經(jīng)配置,Wireshark將只抓取經(jīng)過抓包過濾器過濾的數(shù)據(jù)。抓包過濾器配置派生自libpcap/WinPcap庫中tcpdump的語法(可以從
http://wiki.wireshark.org/CaptureFilters找到捕捉過濾范例)。
抓包過濾器的配置步驟:選擇Capture | Options,彈出CaptureOptions窗口。雙擊選定的網(wǎng)卡,彈出EditInterface Settints窗口。
下圖顯示了Edit Interface Settings窗口,這里可以設(shè)置抓包過濾條件。如果你確知抓包過濾條件的語法,直接在Capture Filter區(qū)域輸入。在輸入錯誤時,Wireshark通過紅色背景區(qū)域表明無法處理過濾條件。最有可能的情況是,過濾條件中含有輸入錯誤,或是使用了 display filter的語法。點擊Capture Filter按鈕查看并選擇已保存的抓包過濾條件。
小貼士:
Wireshark包含了一些默認(rèn)的抓包過濾條件。點擊主工具欄的Edit Capture Filters,跳轉(zhuǎn)到已保存抓包過濾列表。你會發(fā)現(xiàn)一些常見抓包過濾的示例。
Ethernet過濾器即為第二層(OSI模型的第二層)過濾器,即根據(jù)MAC地址來行使過濾功能的抓包過濾器。抓包原理:Ethernet抓包引擎會先拿用戶事先指定的源/或目的主機(jī)MAC地址,與抓取的以太網(wǎng)流量的源/或目的主機(jī)MAC地址相比較,再篩選出源/或目的主機(jī)MAC地址相匹配的流量。
ether host
例如:ether host00:24:d6:ab:98:b6
ether dst
例如:ether dst00:24:d6:ab:98:b6
ether src
例如:ether src 00:24:d6:ab:98:b6
ether broadcast讓W(xué)ireshark只抓取所有以太網(wǎng)廣播流量
例如:ether broadcast
ether multicast讓W(xué)ireshark只抓取所有以太網(wǎng)多播流量
例如:ether multicast
ether proto
例如:ether proto 0800
vlan
例如:vlan 9999
要想讓抓包過濾器中的字符串起反作用,需在原詞之前添加關(guān)鍵字not或符號“!”
主機(jī)或網(wǎng)絡(luò)過濾器是基于IP地址的第三層過濾器。原理:若根據(jù)主機(jī)名進(jìn)行過濾,則wireshark會把用戶輸入的主機(jī)名轉(zhuǎn)換為iP地址,并抓取與這一IP地址相對于的流量。
host
例如:host 101.10.10.2 host funshion.game.com
dst host
例如:dst host 101.10.10.2
src host
例如:src host 101.10.10.2
net
例如:net 192.168.1.0/24
dst
src
broadcast讓W(xué)ireshark只抓取IP廣播包
multicast讓W(xué)ireshark只抓取IP多播包
ip proto
例如:ip proto 1
icmp [icmptype] ==
例如:icmp [icmptype] ==icmp-echo 或icmp [icmptype] ==8
ip[2:2] ==
根據(jù)第四層協(xié)議TCP/UDT的端口號來進(jìn)行過濾,原理:第四次協(xié)議(主要指TCP/UPD)互連末端應(yīng)用程序的協(xié)議,對于TCP和UPD而言,端口號就是用來標(biāo)識應(yīng)用程序的代號。
port
例如:port 5080
dst port
例如:dst port 80 或 dst port http
src port
tcp portrange
例如:tcpportrange 2000-2500
tcpsrc portrange
tcpdst portrange
less
greater
復(fù)合型過濾器
舉例1:讓W(xué)ireshark只抓取TCP連接中用來發(fā)起連接或終止連接的數(shù)據(jù)包
tcp [tcpflags]& (tcp-syn | tcp-fin)!=0
舉例2:讓W(xué)ireshark抓取來源于game.funshion.com的http流量
hostgame.funshion.com and port 80
就過濾功能而言,字節(jié)偏移或凈載匹配型過濾器要更加靈活,可以配置自定義型抓包過濾器。
格式:proto
ip
tcp
udp
例如:讓W(xué)ireshark抓取目的端口范圍為50~100的TCP數(shù)據(jù)包
tcp[2:2] >50 and tcp[2:2]<100 (第一個數(shù)字2指明從tcp頭部的第二個字節(jié)起開始檢查,第二個數(shù)據(jù)2指明了檢查范圍為2個字節(jié))
顯示過濾器配置于抓包之后,一經(jīng)配置,Wireshark將只顯示經(jīng)過顯示過濾器過濾的數(shù)據(jù)(可以在WiresharkWiki Display頁找到發(fā)現(xiàn)大量的顯示過濾范例。http://wiki.wireshark.org/DisplayFilters)。
與捕捉過濾器使用的語法不同,顯示過濾器使用的是Wireshark特定的格式。
1.==或eq
例如:ip.src == 10.2.2.2顯示所有源地址為10.2.2.2的IPv4數(shù)據(jù)流
2. !=或ne
例如:tcp.srcport != 80顯示源端口除了80以外的所有TCP數(shù)據(jù)流
3. >或gt
例如:frame.time_relative > 1顯示距前一個報文到達(dá)時間相差1秒的報文
4. <或lt
例如:tcp.window_size < 1460顯示當(dāng)TCP接收窗口小于1460字節(jié)時的報文
5. >=或ge
例如:DNS.count.answers >= 10顯示包含10個以上answer的DNS響應(yīng)報文
6. <=或le
例如:ip.ttl <= 10顯示IP報文中Time to Live字段小于等于10的報文
7. Contains
例如:http contains “GET”顯示所有HTTP客戶端發(fā)送給HTTP服務(wù)器的GET請求
1、借助于顯示過濾器的窗口,點擊過濾器工具條上的Extensions…按鈕,彈出Filter Expression窗口,如下圖,該窗口由5個重要區(qū)域組成
FieldName(協(xié)議頭部中的字段名稱)區(qū)域,在該區(qū)域,可利用Wireshark預(yù)定義的協(xié)議模板來配置顯示過濾器所含各參數(shù)。點最左邊的“+”號,即可瀏覽到相關(guān)協(xié)議的各個屬性(或協(xié)議頭部中個字段的名稱)
Relation(關(guān)系)區(qū)域,可從該區(qū)域選擇條件操作符
Value(值)區(qū)域,可在該區(qū)域的輸入欄內(nèi)輸入事先從Field Name區(qū)域中選擇的協(xié)議頭部字段的熟悉值
Predefinedvalues(預(yù)定義值),該區(qū)域的值取決于Field Name設(shè)定的協(xié)議類型和協(xié)議屬性
Range(offset:length)(范圍(偏移:長度))區(qū)域,構(gòu)造字節(jié)偏移型過濾器
2、在顯示過濾器工具條的Filter輸入欄內(nèi)直接輸入顯示過濾語句,可借助于自動補(bǔ)齊特性,來完成過濾器的構(gòu)造。比如,若在Filter輸入欄內(nèi)輸入tcp.f時,自動補(bǔ)齊特性將會生效,會使Wireshark在輸入欄下自動列出所有以tcp.f打頭的顯示過濾器參數(shù)。
小貼士:
如何獲取顯示過濾器所包含的參數(shù):在Wireshark抓包主窗口的數(shù)據(jù)包結(jié)構(gòu)區(qū)域中,只要選中了任意一種協(xié)議頭部的某個字段,與該字段相對應(yīng)的顯示過濾參數(shù)將會出現(xiàn)在抓包主窗口底部狀態(tài)欄的左側(cè)。
配置Ethernet(OSI模型的第二層)顯示過濾器的目的,讓wireshark只顯示相關(guān)的第二層以太網(wǎng)幀,依據(jù)的是MAC地址或Ethernet幀的某些熟悉。
常用的Ethernet顯示過濾器:
eth.addr==
例如:eth.addr==00:24:d6:ab:98:b6 讓wireshark只顯示具有指定MAC地址00:24:d6:ab:98:b6的數(shù)據(jù)幀
eth.src==
例如:eth.src== 00:24:d6:ab:98:b6 讓wireshark只顯示源于MAC地址為00:24:d6:ab:98:b6的數(shù)據(jù)幀
eth.dst==
例如:eth.dst== 00:24:d6:ab:98:b6 讓wireshark只顯示目的MAC地址為00:24:d6:ab:98:b6的數(shù)據(jù)幀
eth.dst== ffff.ffff.ffff讓wireshark只顯示以太網(wǎng)廣播幀
常用的ARP過濾器
arp.opcode==
arp.opcode== 1讓wireshark只顯示ARP請求幀
arp.opcode== 2讓wireshark只顯示ARP應(yīng)答幀
arp.src.hw_mac==
配置ip(OSI模型的第三層)顯示過濾器的目的,讓wireshark只顯示必要的第三層數(shù)據(jù)包,依據(jù)的是IP地址或IP數(shù)據(jù)包的的某些熟悉
常用的IP和ICMP過濾器
ip.addr==
例如:ip.addr==200.1.1.1 and ip.addr ==192.168.1.1
ip.src==
ip.src== 101.10.10.2
ip.dst==
ip.ttl==
ip.len==
ip.version==
!Ip.src== 101.10.10.2讓wireshark顯示除了設(shè)定ip地址之外的所有發(fā)出的數(shù)據(jù)包
tcp.port ==
例如:tcp.port == 80
tcp.dstport==
例如:tcp.dstport ==80
tcp.srcport ==
例如:tcp.srcport ==80
tcp.flags:Wireshark檢查數(shù)據(jù)包TCP頭部中個標(biāo)記位的置位情況
例如:tcp.flags.syn == 1:讓W(xué)ireshark顯示SYN標(biāo)記位置1的TCP數(shù)據(jù)包
tcp.flags.reset ==1:讓W(xué)ireshark顯示RST標(biāo)記位置1的TCP數(shù)據(jù)包
tcp.flags.fin== 1:讓W(xué)ireshark顯示FIN標(biāo)記位置1的TCP數(shù)據(jù)包
要想讓抓包過濾器中的字符串起反作用,需在原詞之前添加關(guān)鍵字not或符號“!”
常用的HTTP顯示過濾器
http.host== <”hostname”>:讓W(xué)ireshark只顯示訪問某指定主機(jī)名的HTTP協(xié)議數(shù)據(jù)包
http.request.method== ”GET”:讓W(xué)ireshark只顯示包含HTTP GET方法的HTTP協(xié)議數(shù)據(jù)包
http.request.uri== <”Full request URI”>讓W(xué)ireshark只顯示HTTP客戶端發(fā)起的包含指定URI請求的HTTP協(xié)議數(shù)據(jù)包。
http.request.uricontens “URI String”讓W(xué)ireshark只顯示HTTP客戶端發(fā)起的包含指定字符串的URI請求的HTTP協(xié)議數(shù)據(jù)包。
http.cookie:讓W(xué)ireshark只顯示網(wǎng)絡(luò)中傳播的所有包含cookie請求的HTTP協(xié)議數(shù)據(jù)包
http.set_cookie:讓W(xué)ireshark只顯示所有包含由HTTP服務(wù)器發(fā)送給HTTP客戶端的cookie set命令的HTTP協(xié)議數(shù)據(jù)包。
(http.set_cookie)&& (http contens”google”):讓W(xué)ireshark只顯示所有由google HTTP服務(wù)器發(fā)送給HTTP客戶端,且包含cookie set命令的HTTP協(xié)議數(shù)據(jù)包
httpmatches “\.zip” && http.request.method == “GET”:讓W(xué)ireshark只顯示包含ZIP文件的HTTP數(shù)據(jù)包。
常見的DNS顯示過濾器
讓W(xué)ireshark只顯示DNS查詢和DNS響應(yīng)數(shù)據(jù)包
dns.flags.response== 0 (DNS查詢)
dns.flags.response== 1(DNS響應(yīng))
讓W(xué)ireshark只顯示所有anser count字段值大于或等于4的DNS響應(yīng)數(shù)據(jù)包
dns.count.answers>=4
通用格式為:protocols[x:y] ==
例如:eth.dst[0:3] == 01:00:5e,讓W(xué)ireshark只顯示IPV4多播數(shù)據(jù)包