【學習筆記】Wireshark的用法
計算機網路課上,需要我們靈活運用網路協議分析儀wireshark,最近一直在看,感覺有點難,並不是軟體本身操作難,而是看懂一大群包的含義難,這個難主要也因為它是全英文的~~。。
好了,大致總結一下,基本都是大神的,引用的,與大家分享。
wireshark 開始抓包
開始介面
wireshark是捕獲機器上的某一塊網絡卡的網路包,當你的機器上有多塊網絡卡的時候,你需要選擇一個網絡卡。
點選Caputre->Interfaces.. 出現下面對話方塊,選擇正確的網絡卡。然後點選"Start"按鈕, 開始抓包
Wireshark 視窗介紹
WireShark 主要分為這幾個介面
1. Display Filter(顯示過濾器), 用於過濾
2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,埠號。 顏色不同,代表
3. Packet Details Pane(封包詳細資訊), 顯示封包中的欄位
4. Dissector Pane(16進位制資料)
5. Miscellanous(位址列,雜項)
使用過濾是非常重要的, 初學者使用wireshark時,將會得到大量的冗餘資訊,在幾千甚至幾萬條記錄中,以至於很難找到自己需要的部分。搞得暈頭轉向。
過濾器會幫助我們在大量的資料中迅速找到我們需要的資訊。
過濾器有兩種,
一種是顯示過濾器,就是主介面上那個,用來在捕獲的記錄中找到所需要的記錄
一種是捕獲過濾器,用來過濾捕獲的封包,以免捕獲太多的記錄。 在Capture -> Capture Filters 中設定
儲存過濾
在Filter欄上,填好Filter的表示式後,點選Save按鈕, 取個名字。比如"Filter 102",
Filter欄上就多了個"Filter 102" 的按鈕。
過濾表示式的規則
表示式規則
1. 協議過濾
比如TCP,只顯示TCP協議。
2. IP 過濾
比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,
ip.dst==192.168.1.102, 目標地址為192.168.1.102
3. 埠過濾
tcp.port ==80, 埠為80的
tcp.srcport == 80, 只顯示TCP協議的願埠為80的。
4. Http模式過濾
http.request.method=="GET", 只顯示HTTP GET方法的。
5. 邏輯運算子為 AND/ OR
常用的過濾表示式
過濾表示式 | 用途 |
http | 只檢視HTTP協議的記錄 |
ip.src ==192.168.1.102 or ip.dst==192.168.1.102 | 源地址或者目標地址是192.168.1.102 |
封包列表(Packet List Pane)
封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包資訊。 你可以看到不同的協議用了不同的顏色顯示。
你也可以修改這些顯示顏色的規則, View ->Coloring Rules.
封包詳細資訊 (Packet Details Pane)
這個面板是我們最重要的,用來檢視協議中的每一個欄位。
各行資訊分別為
Frame: 物理層的資料幀概況
Ethernet II: 資料鏈路層乙太網幀頭部資訊
Internet Protocol Version 4: 網際網路層IP包頭部資訊
Transmission Control Protocol: 傳輸層T的資料段頭部資訊,此處是TCP
Hypertext Transfer Protocol: 應用層的資訊,此處是HTTP協議
TCP包的具體內容
從下圖可以看到wireshark捕獲到的TCP包中的每個欄位。
看到這, 基本上對wireshak有了初步瞭解, 現在我們看一個TCP三次握手的例項
三次握手過程為
這圖我都看過很多遍了, 這次我們用wireshark實際分析下三次握手的過程。
開啟wireshark, 開啟瀏覽器輸入 http://www.cr173.com
在wireshark中輸入http過濾, 然後選中GET /tankxiao HTTP/1.1的那條記錄,右鍵然後點選"Follow TCP Stream",
這樣做的目的是為了得到與瀏覽器開啟網站相關的資料包,將得到如下圖
圖中可以看到wireshark截獲到了三次握手的三個資料包。第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立連線的。
第一次握手資料包
客戶端傳送一個TCP,標誌位為SYN,序列號為0, 代表客戶端請求建立連線。 如下圖
第二次握手的資料包
伺服器發回確認包, 標誌位為 SYN,ACK. 將確認序號(Acknowledgement Number)設定為客戶的I S N加1以.即0+1=1, 如下圖
第三次握手的資料包
客戶端再次傳送確認包(ACK) SYN標誌位為0,ACK標誌位為1.並且把伺服器發來ACK的序號欄位+1,放在確定欄位中傳送給對方.並且在資料段放寫ISN的+1, 如下圖:
就這樣通過了TCP三次握手,建立了連線
File選單介紹
選單項 | 快捷鍵 | 描述 |
---|---|---|
Open… | Ctr+O | 顯示開啟檔案對話方塊,讓您載入捕捉檔案用以瀏覽。 |
Open Recent | 彈出一個子選單顯示最近開啟過的檔案供選擇。 | |
Merg | 顯示合併捕捉檔案的對話方塊。讓您選擇一個檔案和當前開啟的檔案合併。 | |
Close | Ctrl+W | 關閉當前捕捉檔案,如果您未儲存,系統將提示您是否儲存(如果您預設了禁止提示儲存,將不會提示) |
Save | Crl+S | 儲存當前捕捉檔案,如果您沒有設定預設的儲存檔名,Wireshark出現提示您儲存檔案的對話方塊。 |
Save As | Shift+Ctrl+S | 讓您將當前檔案儲存為另外一個檔案面,將會出現一個另存為的對話方塊 |
File Set>List Files | 允許您顯示檔案集合的列表。將會彈出一個對話方塊顯示已開啟檔案的列表。 | |
File Set>Next File | 如果當前載入檔案是檔案集合的一部分,將會跳轉到下一個檔案。如果不是,將會跳轉到最後一個檔案。這個檔案選項將會是灰色。 | |
File set>Previous Files | 如果當前檔案是檔案集合 的一部分,將會調到它所在位置的前一個檔案。如果不是則跳到檔案集合的第一個檔案,同時變成灰色。 | |
Export> as “Plain Text” File… | 這個選單允許您將捕捉檔案中所有的或者部分的包匯出為plain ASCII text格式。它將會彈出一個Wireshark匯出對話方塊。 | |
Export >as “PostScript” Files | 將捕捉檔案的全部或部分匯出為PostScrit檔案。 | |
Export > as “CVS” (Comma Separated Values Packet Summary)File… | 匯出檔案全部或部分摘要為.cvs格式(可用在電子表格中)。。 | |
Export > as “PSML” File… | 匯出檔案的全部或部分為PSML格式(包摘要標記語言)XML檔案。將會彈出匯出檔案對話方塊。 | |
Export as “PDML” File… | 匯出檔案的全部或部分為PDML(包摘要標記語言)格式的XML檔案。 | |
Export > Selected Packet Bytes… | 匯出當前在Packet byte面版選擇的位元組為二進位制檔案。 | |
Ctr+P | 列印捕捉包的全部或部分,將會彈出列印對話方塊。 | |
Quit | Ctrl+Q | 退出Wireshark,如果未儲存檔案,Wireshark會提示是否儲存。 |
Edit——包括如下專案:查詢包,時間參考,標記一個多個包,設定預設引數。(剪下,拷貝,貼上不能立即執行。)
Edit選單項
選單項 | 快捷鍵 | 描述 |
---|---|---|
Copy>As Filter | Shift+Ctrl+C | 使用詳情面版選擇的資料作為顯示過濾。顯示過濾將會拷貝到剪貼簿。 |
Find Packet… | Ctr+F | 開啟一個對話方塊用來通過限制來查詢包 |
Find Next | Ctrl+N | 在使用Find packet以後,使用該選單會查詢匹配規則的下一個包 |
Find Previous | Ctr+B | 查詢匹配規則的前一個包。 |
Mark Packet(toggle) | Ctrl+M | 標記當前選擇的包。 |
Find Next Mark | Shift+Ctrl+N | 查詢下一個被標記的包 |
Find Previous Mark | Ctrl+Shift+B | 查詢前一個被標記的包 |
Mark ALL Packets | 標記所有包 | |
Unmark All Packet | 取消所有標記 | |
Set Time Reference(toggle) | Ctrl+T | 以當前包時間作為參考 |
Find Next Reference | 找到下一個時間參考包 | |
Find Previous Refrence… | 找到前一個時間參考包 | |
Preferences… | Shift+Ctrl+P | 開啟首選項對話方塊,個性化設定Wireshark的各項引數,設定後的引數將會在每次開啟時發揮作用。 |
View ——控制捕捉資料的顯示方式,包括顏色,字型縮放,將包顯示在分離的視窗,展開或收縮詳情面版的地樹狀節點
“View”選單項
選單項 | 快捷鍵 | 描述 | |
---|---|---|---|
Main Toolbar | 顯示隱藏Main toolbar(主工具欄) | ||
Filter Toolbar | 顯示或隱藏Filter Toolbar(過濾工具欄) | ||
Statusbar | 顯示或隱藏狀態列 | ||
Packet List | 顯示或隱藏Packet List pane(包列表面板) | ||
Packet Details | 顯示或隱藏Packet details pane(包詳情面板) | ||
Packet Bytes | 顯示或隱藏packet Bytes pane(包位元組面板) | ||
Time Display Fromat>Date and Time of Day: 1970-01-01 01:02:03.123456 | 選擇這裡告訴Wireshark將時間戳設定為絕對日期-時間格式(年月日,時分秒) | ||
Time Display Format>Time of Day: 01:02:03.123456 | 將時間設定為絕對時間-日期格式(時分秒格式) | ||
Time Display Format > Seconds Since Beginning of Capture: 123.123456 | 將時間戳設定為秒格式,從捕捉開始計時,見 | ||
Time Display Format > Seconds Since Previous Captured Packet: 1.123456 | 將時間戳設定為秒格式,從上次捕捉開始計時 | ||
Time Display Format > Seconds Since Previous Displayed Packet: 1.123456 | 將時間戳設定為秒格式,從上次顯示的包開始計時 | ||
Time Display Format > —— | |||
Time Display Format > Automatic (File Format Precision) | 根據指定的精度選擇資料包中時間戳的顯示方式 | ||
Time Display Format > Seconds: 0 | 設定精度為1秒 | ||
Time Display Format > …seconds: 0…. | 設定精度為1秒,0.1秒,0.01秒,百萬分之一秒等等。 | ||
Name Resolution > Resolve Name | 僅對當前選定包進行解析 | ||
Name Resolution > Enable for MAC Layer | 是否解析Mac地址 | ||
Name Resolution > Enable for Network Layer | 是否解析網路層地址(ip地址) | ||
Name Resolution > Enable for Transport Layer | 是否解析傳輸層地址 | ||
Colorize Packet List | 是否以彩色顯示包 | ||
Auto Scrooll in Live Capture | 控制在實時捕捉時是否自動滾屏,如果選擇了該項,在有新資料進入時, 面板會項上滾動。您始終能看到最後的資料。反之,您無法看到滿屏以後的資料,除非您手動滾屏 | ||
Zoom In | Ctrl++ | 增大字型 | |
Zoom Out | Ctrl+- | 縮小字型 | |
Normal Size | Ctrl+= | 恢復正常大小 | |
Resiz All Columnus | 恢復所有列寬
|
||
Expend Subtrees | 展開子分支 | ||
Expand All | 看開所有分支,該選項會展開您選擇的包的所有分支。 | ||
Collapse All | 收縮所有包的所有分支 | ||
Coloring Rulues… | 開啟一個對話方塊,讓您可以通過過濾表達來用不同的顏色顯示包。這項功能對定位特定型別的包非常有用 | ||
Show Packet in New Window | 在新視窗顯示當前包,(新視窗僅包含View,Byte View兩個面板) | ||
Reload | Ctrl+R | 重新再如當前捕捉檔案 |
選單項 | 快捷鍵 | 描述 |
---|---|---|
Back | Alt+Left | 跳到最近瀏覽的包,類似於瀏覽器中的頁面歷史紀錄 |
ForWard | Alt+Right | 跳到下一個最近瀏覽的包,跟瀏覽器類似 |
Go to Packet | Ctrl+G | 開啟一個對話方塊,輸入指定的包序號,然後跳轉到對應的包。 |
Go to Corresponding Packet | 跳轉到當前包的應答包,如果不存在,該選項為灰色 | |
Previous Packet | Ctrl+UP | 移動到包列表中的前一個包,即使包列表面板不是當前焦點,也是可用的 |
Next Packet | Ctrl+Down | 移動到包列表中的後一個包,同上 |
First Packet | 移動到列表中的第一個包 | |
Last Packet | 移動到列表中的最後一個包 |
Capture——捕捉資料包
“Capture”選單項
選單項 | 快捷鍵 | 說明 |
---|---|---|
Interface… | 在彈出對話方塊選擇您要進行捕捉的網路介面 | |
Options… | Ctrl+K | 開啟設定捕捉選項的對話方塊並可以在此開始捕捉 |
Start | 立即開始捕捉,設定都是參照最後一次設定。 | |
Stop | Ctrl+E | 停止正在進行的捕捉 |
Restart | 正在進行捕捉時,停止捕捉,並按同樣的設定重新開始捕捉.僅在您認為有必要時 | |
Capture Filters… | 開啟對話方塊,編輯捕捉過濾設定,可以命名過濾器,儲存為其他捕捉時使用 |
Analyze ——包含處理顯示過濾,允許或禁止分析協議,配置使用者指定解碼和追蹤TCP流等功能。
“analyze”選單項
選單項 | 快捷鍵 | 說明 |
---|---|---|
Display Filters… | 開啟過濾器對話方塊編輯過濾設定,可以命名過濾設定,儲存為其他地方使用,見第 6.6 節 “定義,儲存過濾器” | |
Apply as Filter>… | 更改當前過濾顯示並立即應用。根據選擇的項,當前顯示欄位會被替換成選擇在Detail面板的協議欄位 | |
Prepare a Filter>… | 更改當前顯示過濾設定,當不會立即應用。同樣根據當前選擇項,過濾字元會被替換成Detail面板選擇的協議欄位 | |
Firewall ACL Rules | 為多種不同的防火牆建立命令列ACL規則(訪問控制列表),支援Cisco IOS, Linux Netfilter (iptables), OpenBSD pf and Windows Firewall (via netsh). Rules for MAC addresses, IPv4 addresses, TCP and UDP ports, 以及IPv4+混合埠 以上假定規則用於外部介面 |
Statistics ——包括的選單項使用者顯示多個統計視窗,包括關於捕捉包的摘要,協議層次統計等等。
選單項 | 快捷鍵 | 描述 |
---|---|---|
Summary | 顯示捕捉資料摘要 | |
Protocol Hierarchy | 顯示協議統計分層資訊 | |
Conversations/ | 顯示會話列表(兩個終端之間的通訊) | |
EndPoints | 顯示端點列表(通訊發起,結束地址) | |
IO Graphs | 顯示使用者指定圖表,(如包數量-時間表) | |
Conversation List | 通過一個組合視窗,顯示會話列表 | |
Endpoint List | 通過一個組合視窗顯示終端列表 | |
Service Response Time | 顯示一個請求及其相應之間的間隔時間 |
Help——包含一些輔助使用者的參考內容。如訪問一些基本的幫助檔案,支援的協議列表,使用者手冊。線上訪問一些網站,“關於”
選單項 | 快捷鍵 | 描述 |
---|---|---|
Open… | Ctr+O | 顯示開啟檔案對話方塊,讓您載入捕捉檔案用以瀏覽。 |
Open Recent | 彈出一個子選單顯示最近開啟過的檔案供選擇。 |
如何進行“簡單”的抓包篩選。
其實關於wireshark來說,比較重要的還是數對抓包之後的“查詢統計分析”,如何在海量的資料包中,抓取出自己關注的資料包是處理問題的第一步,最後再講解一下如何進行“簡單”的抓包篩選。
為了直觀,本篇博文以一次例項進行,我在本地對網絡卡進行了抓包,登入了一次QQ,與網友聊天,並且,訪問了一次我的部落格www.zike.me,那我就從海量資料包中,抓取關於這兩個操作的相關資料包。
首先,我進行了本地抓包,進行了上述兩個操作,stop抓包,僅僅十多秒鐘,我抓到了3543個數據包,其中存在有我需要的資料包。(從這裡看出了“篩選分析”有多麼重要,如果資料流量較大,我試驗過,較小的網路中,1分鐘左右的抓包,可以獲取300萬資料包)
原始資料包
輸入:oicq進行篩選
檢視單包的資料,在data處可以看見QQ號碼
選取第一個資料包,點選右鍵,我們可以看見有很多選項,我們選取“follow UDP stream”,即追蹤該UDP流,跟蹤整個會話
可以看見,我的得到了該次聊天會話
同時,我們還可以選擇另外一種篩選方式,在詳細資料包中,我們選擇QQ號碼那一欄作為篩選的資料,點選資料包QQ號碼處,右鍵,作為篩選……
接下來,我們看看由瀏覽器發起的對www.zike.me的訪問,我們主要看進行對dns資料包的篩選
第一步還是選擇協議,dns
同時,也可以直接選擇所訪問的域名:dns.qry.name == “www.zike.me”,直接進行篩選
下圖可以看見,我本機發起了對www.zike.me的查詢,我本地的快取域名伺服器是中國電信的61.128.128.68
然後看見DNS伺服器進行迴應,回覆說www.zike.me的IP地址是173.231.1.221
同時,我們可以對本次抓包進行統計概況,如下圖
可以看見總述裡面,包數,實時流量大小等等。
對本次抓包的協議總述