Wireshark概述
Wireshark功能塊:
GUI
處理所有用戶輸入/輸出(所有窗口,對話框等)。可以在ui / qt目錄中找到源代碼
Core
將其他塊結合在一起的主要“glue code”。可以在根目錄中找到源代碼。
Epan
增強型數據包分析器—數據包分析引擎。可以在epan目錄中找到源代碼。Epan提供以下API:
- 協議樹。單個數據包的析象器信息。
- 析象器。epan / dissectors中的各種協議析象器*。
- Dissector插件-支持將Dissector作為單獨的模塊實施。源代碼可以在插件中找到。
- 顯示過濾器-epan / dfilter中的顯示過濾器引擎 。
Wiretap
Wiretap用于讀取和寫入libpcap,pcapng和許多其他文件格式的捕獲文件。源代碼位于 Wiretap目錄中。
Capture
捕獲引擎的接口,源代碼在根目錄中。
Dumpcap
捕獲引擎本身,這是唯一以提升的特權執行的部分,源代碼在根目錄中。
Npcap和libpcap
這些是在不同平臺上提供數據包捕獲和過濾支持的外部庫。Npcap和libpcap中的過濾器的工作水平比Wireshark的顯示過濾器低得多,并且使用了明顯不同的機制。這就是為什么顯示和捕獲過濾器語法不同的原因。
捕獲數據包
捕獲從網絡適配器獲取數據包,并將其保存到硬盤上的文件中。
由于原始網絡適配器訪問需要提升的特權,因此這些功能與dumpcap程序隔離。將捕獲功能置于其中,dumpcap可以使其余代碼(解剖器,用戶界面等)以普通用戶權限運行。
為了從Wireshark隱藏所有與底層計算機有關的細節,使用了libpcap和Npcap。這些庫提供了捕獲數據包的通用接口,并被各種應用程序使用。
捕獲文件
Wireshark可以以其自然文件格式pcapng和pcap讀取和寫入捕獲文件,許多其他網絡捕獲工具(例如tcpdump)都使用了該文件。此外,Wireshark支持以其他網絡捕獲工具使用的格式讀取和寫入數據包捕獲文件。這種支持在Wireshark的竊聽庫中實現,該庫提供了用于讀取和寫入數據包捕獲格式的通用接口,并支持20多種數據包捕獲格式。
分析數??據包
Wireshark以所謂的“two-pass”分析對數據包進行解剖。
當從文件中加載所有數據包時,Wireshark將對其進行解剖。所有數據包都按順序進行剖析,并且此信息用于填充Wireshark的數據包列表窗格,并構建顯示數據包時所需的狀態和其他信息。
Wireshark隨后對需要數據的數據包執行“second pass”臨時解剖。這使Wireshark可以填寫需要將來知識的字段,例如“框架編號響應”字段,并正確計算重組框架的依賴性。
例如,當用戶選擇一個數據包(以顯示數據包詳細信息),計算統計信息(以便計算所有值)或執行其他需要數據包數據的操作時,Wireshark將執行臨時解剖。但是,由于Wireshark只能剖析所需的數據包,因此無法保證Wireshark將再次剖析所有數據包,也無法保證在第一次通過后將剖析數據包的順序。
源概述
Wireshark包含以下主要部分:
- 數據包解剖-在/ epan / dissectors和 / plugins / epan / *目錄中
- 捕獲文件I / O-使用Wireshark自己的竊聽庫
- 捕獲-在dumpcap.c以及/ capchild和_ / caputils目錄中 使用libpcap和Npcap庫
- 用戶界面-使用Qt和關聯的庫
- 實用程序-其他輔助代碼
- 幫助-使用外部Web瀏覽器和文本輸出
編碼風格
Wireshark的編碼樣式指南可以在文件doc / README.developer的“Code style”部分中找到。
GLib庫
GLib用作基本的平臺抽象庫。它不提供任何直接的GUI功能。
Wireshark中文使用教程(開發版)
推薦文章: