1 摘要
Wireshark 是一款開源的網絡協議分析工具,廣泛用于網絡故障排查、協議分析、網絡安全檢測等領域。它能夠捕獲網絡數據包,并以詳細的、可讀的格式顯示這些數據包的內容。廣泛應用于車載網絡測試,是車載網絡測試工程師必須掌握的工具。
2 Wireshark介紹
2.1主要功能與使用場景
2.1.1 功能
-
數據包捕獲:
- 支持從多種網絡接口(如以太網、Wi-Fi、藍牙等)捕獲數據包。
- 可以實時捕獲或從文件中讀取已捕獲的數據包。
-
協議解析:
- 支持解析數百種網絡協議(如 TCP/IP、HTTP、DNS、FTP 等)。
- 能夠深入解析協議頭部和負載,幫助用戶理解網絡通信的細節。
-
過濾功能:
- 提供強大的顯示過濾器和捕獲過濾器,幫助用戶快速定位和分析感興趣的數據包。
- 支持基于協議、IP地址、端口號等多種條件的過濾。
-
統計和分析:
- 提供多種統計工具,如流量圖、會話統計、協議分層統計等。
- 支持專家系統,自動檢測潛在的網絡問題(如重傳、亂序等)。
-
文件導出:
- 支持將捕獲的數據包導出為多種格式(如 PCAP、CSV、JSON 等),便于進一步分析或分享。
2.1.2 使用場景
-
網絡故障排查:
- 通過分析數據包,定位網絡延遲、丟包、連接失敗等問題。
-
網絡安全檢測:
- 檢測異常流量、潛在攻擊(如 DDoS、端口掃描等)和惡意軟件活動。
-
協議學習:
- 幫助網絡工程師和開發者理解網絡協議的實現細節。
-
應用調試:
- 分析應用程序的網絡通信,排查通信問題或優化性能。
2.2安裝與使用
2.2.1 安裝
- Wireshark 支持 Windows、macOS 和 Linux 操作系統。
- 可以從官方網站(https://www.wireshark.org)下載安裝包。
- 在 Linux 上,也可以通過包管理器安裝(如
apt-get install wireshark
)。
2.2.2 基本使用
- 1 快速抓包
在主界面選擇想抓包的網卡,點擊Start或雙擊網卡開始抓包
抓包過程中,點擊紅色stop按鈕可以停止抓包,點擊綠色start按鈕可以拋棄目前的流量重新抓包;
停止抓包后,選擇File/文件,可以保存已經抓取的數據包;
也可以直接點擊工具欄的保存快捷鍵
- 2 Wireshark的界面布局
界面布局如下:
- 3 View菜單欄
通過勾選可以控制Wireshark界面顯示或不顯示某些內容。
- 縮放功能:可以選擇放大/縮小/正常比例的界面。
可以通過View菜單欄進入:
或通過工具欄快捷鍵進入:
- 查找功能
查找功能:
通過Edit – Find Packet進入,可以通過過濾器/字節流值或String值來查找特定的數據包。
也可以通過工具欄快捷鍵進入。
- 跳轉功能:
Back:跳轉到上次選中的數據包。
Forward:跳轉到下一個選中的數據包。
Go to Packet:跳轉到指定的數據包(例如:編號為10的包)。
Previous Packet:跳轉到上一個數據包。
Next Packet:跳轉到下一個數據包。
First Packet:首個
Last Packet:尾個
……
也可以通過工具欄快捷鍵進入
- 列操作:
1)想要添加某個信息作為一列:
在報文詳情解析中,選中相應的信息,然后右鍵:Apply as Column。
2)想要刪除某個現有的列:
在想要操作的列上右鍵,Remove Column。
3)想要暫時隱藏某個列:
在該列上右鍵,Hide Column,或
在顯示列的任意位置右鍵,Displayed Columns中取消勾選
- 幀標記:
1)想要標記某幀:
在該幀上右鍵,Mark Packet (toggle),可高亮;
再次點擊Mark Packet(toggle),可取消高亮
2)想要忽略某幀:
在該幀上右鍵,Ignore Packet (toggle),可高亮;
再次點擊Ignore Packet(toggle),可取消高亮
注意:忽略某幀只能隱藏幀內容,不能隱藏幀
3)想要把某幀的時間作為時間基:
在該幀上右鍵,Set Time Reference(toggle),這一幀的時間會成為計算時間差的時間基;
注意:在此幀前的幀時間不會受到影響。
再次點擊可取消
- 導出特定的幀:
1)想要導出單幀時:
選中一幀后,File-Export Specified Packets-Selected Packet
2)想要導出多幀時:
和M ark功能結合,先標記多個幀,然后File-Export Specified Packets-Marked Packets;
如果想導出大量幀,可以標記要導出的數據流的頭和尾,然后選擇First to last marked,或使用Range功能標記區域。
如果該區域內有通過Ignore忽略的包,那么可以在此處選擇,在導出文件中把這些包刪掉。
- 解碼工具:
在報文詳情區域,Wireshark會根據所應用的協議,將數據包按照不同協議進行解析。
解析功能是由協議解析器完成的,解析方法封裝在dll文件中,位置:\plugins\版本號…
兩種情況:
Wireshark的解釋器并不是每一次都能正確地分辨協議,需要用戶手動重新解析;
有時,我們需要自行添加一些dll解析器,用于輔助解析一些Wireshark不自帶的車載以太網協議。
1)手動添加dll文件。
將dll文件放置在 \plugins\版本號… 文件夾下。
2)重啟Wireshark,選擇菜單欄Analyze-Enabled Protocols。
如果dll添加成功,
此處應能找到dll中設定的協議名,如下圖
在dll添加成功后,如果需要的報文依然沒有正確解碼,可以點擊該報文,右鍵Decode as,選擇需要的協議,此格式的報文將都以此協議被解碼。
-
抓包過濾器
抓包過濾器在抓包之前應用,邏輯是只抓取需要的數據包,丟棄其他的數據包。
抓包過濾器的位置:
抓包過濾器的語法格式:BPF(伯克利封包過濾器)
BPF語法的四元素:
1)類型:主機(host)、網段(net)、端口(port)
2)方向:源(src)、目標(dst)
3)協議:ether、tcp、udp、http等
4)邏輯運算符:與(&&)、或(||)、非(!)
將此四元素隨意組合即可
src host 192.168.1.1 && dst port 30490
tcp || udp -
顯示過濾器
顯示過濾器在抓包過程中或者查看trace時使用,邏輯是隱藏不需要的數據包,不進行丟棄。
顯示過濾器的位置:
顯示過濾器語法的五種元素:
1)IP:ip.addr、ip.src、ip.dst
2)端口:tcp.port、tcp.srcport、tcp.dstport
3)協議:tcp、udp、http等
4)比較運算符:>、<、==、>=、<=、!=
5)邏輯運算符:與(and)、或(or)、非(not)、異或(xor)
將此五元素隨意組合即可
ip.src == 192.168.1.1
tcp.dstport == 8080
3 總結
以上是Aireshark的簡單介紹,大家完成平常項目的測試分析是足夠的了,希望能夠對大家有所幫助!