5.3 Wireshark基礎功能--處理捕獲的數據包
5.3.1 查看您捕獲的數據包
捕獲某些數據包或打開以前保存的捕獲文件后,您只需在數據包列表窗格中單擊一個數據包即可查看在數據包列表窗格中顯示的數據包,這將在列表中彈出所選數據包。樹視圖和字節視圖窗格。
然后,您可以展開樹的任何部分以查看有關每個數據包中每個協議的詳細信息。單擊樹中的項目將在字節視圖中突出顯示相應的字節。如下圖顯示了一個選擇了TCP數據包的示例。它還在選定的TCP標頭中具有確認號,該編號在字節視圖中顯示為選定的字節。
圖5.25。Wireshark已選擇要查看的TCP數據包
如果在“Capture Preferences”對話框中選擇了“Update list of packets in real time”,您也可以在Wireshark捕獲期間以相同的方式選擇和查看數據包。
另外,您可以在單獨的窗口中查看各個數據包, 如下圖。您可以通過雙擊數據包列表中的項目或在數據包列表窗格中選擇您感興趣的數據包,然后選擇View → Show Packet in New Window來執行此操作。這使您可以輕松地比較兩個或多個數據包,甚至跨多個文件。
圖5.26。在單獨的窗口中查看數據包
雙擊數據包列表并使用主菜單,還有許多其他方法可以打開新的數據包窗口:
- 按住Shift鍵,然后雙擊數據包詳細信息中的框架鏈接。
- 在表5.3中,“數據包列表”彈出菜單的菜單項。
- 在表5.4中,“數據包詳細信息”彈出菜單的菜單項。
5.3.2 彈出菜單
通過在相應項目上單擊鼠標右鍵,可以在“Packet List”,其列標題,“Packet Details”或“Packet Bytes” 上打開一個彈出菜單。
5.3.2.1 “Packet List”列標題的彈出菜單
圖5.27。“Packet List”列標題的彈出菜單
下表概述了此標頭中可用的功能,可以在主菜單中找到相應功能的位置以及每個項目的說明。
表5.2。“Packet List”列標題彈出菜單的菜單項
| 項目 | 描述 |
|---|---|
Align Left |
在此列中左對齊值。 |
Align Center |
在此列中居中對齊值。 |
Align Right |
在此列中將值右對齊。 |
Column Preferences… |
打開此列的“首選項”對話框。 |
Edit Column |
打開此列的列編輯器工具欄。 |
Resize To Contents |
調整列的大小以適合其值。 |
Resolve Names |
如果此列包含地址,請解析它們。 |
| No., Time, Source, et al. | 通過選擇列項目顯示或隱藏列。 |
Remove Column |
刪除此列,類似于在“首選項”對話框中將其刪除。 |
5.3.2.2 “Packet List”窗格的彈出菜單
圖5.28。“Packet List”窗格的彈出菜單
下表概述了此窗格中可用的功能,可以在主菜單中找到相應功能的位置以及每個項目的簡短說明。
表5.3。“Packet List”彈出菜單的菜單項
| 項目 | 對應的主菜單項 | 描述 |
|---|---|---|
Mark Packet (toggle) |
Edit |
標記或取消標記數據包。 |
Ignore Packet (toggle) |
Edit |
剖析捕獲文件時,請忽略或檢查此數據包。 |
Set Time Reference (toggle) |
Edit |
設置或重置時間參考。 |
Time Shift |
Edit |
打開“時間轉換”對話框,您可以在其中調整某些或所有數據包的時間戳。 |
Packet Comment… |
Edit |
打開“數據包注釋”對話框,您可以在其中添加注釋到單個數據包。請注意,保存數據包注釋的能力取決于您的文件格式。例如pcapng支持注釋,而pcap不支持注釋。 |
Edit Resolved Name |
允許您輸入名稱來解析所選地址。 | |
Apply as Filter |
Analyze |
根據最近選擇的數據包列表或數據包詳細信息,立即替換或附加當前顯示過濾器。第一個子菜單項顯示了過濾器,隨后的子項顯示了可以應用過濾器的不同方式。 |
Prepare a Filter |
Analyze |
根據所選的最新數據包列表或數據包詳細信息項更改當前的顯示過濾器,但不要應用它。第一個子菜單項顯示過濾器,后續子項顯示可以更改過濾器的不同方式。 |
Conversation Filter |
將顯示過濾器與所選數據包中的地址信息一起應用。例如,IP菜單項將設置一個過濾器,以顯示當前數據包的兩個IP地址之間的流量。 | |
Colorize Conversation |
根據所選數據包中的地址信息創建新的著色規則。 | |
SCTP |
允許您分析并為此SCTP關聯準備過濾器。 | |
Follow → TCP Stream |
Analyze |
打開一個窗口,顯示與所選數據包處于同一TCP連接上的所有捕獲的TCP段。請參見6.1.1 Following Protocol Streams。 |
Follow → UDP Stream |
Analyze |
與“跟隨TCP流”相同的功能,但與UDP“流”相同。 |
Follow → TLS Stream |
Analyze |
與“跟隨TCP流”相同的功能,但適用于TLS或SSL流。 |
Follow → HTTP Stream |
Analyze |
與“跟隨TCP流”相同的功能,但適用于HTTP流。 |
Copy → Summary as Text |
將顯示的摘要字段作為制表符分隔的文本復制到剪貼板。 | |
Copy → …as CSV |
將顯示的摘要字段作為逗號分隔的文本復制到剪貼板。 | |
Copy → …as YAML |
將顯示的摘要字段作為YAML數據復制到剪貼板。 | |
Copy → As Filter |
根據當前選定的項目準備顯示過濾器,然后將該過濾器復制到剪貼板。 | |
Copy → Bytes as Hex + ASCII Dump |
以完整的“ hexdump”格式將數據包字節復制到剪貼板。 | |
Copy → …as Hex Dump |
將不帶ASCII部分的“ hexdump”格式的數據包字節復制到剪貼板。 | |
Copy → …as Printable Text |
將數據包字節以ASCII文本復制到剪貼板,不包括不可打印字符。 | |
Copy → …as a Hex Stream |
將數據包字節作為十六進制數字的未標點列表復制到剪貼板。 | |
Copy → …as Raw Binary |
將數據包字節作為原始二進制文件復制到剪貼板。數據使用MIME類型“ application / octet-stream”存儲在剪貼板中。 | |
Protocol Preferences |
調整所選協議的首選項。 | |
Decode As… |
Analyze |
更改或應用兩個解剖器之間的新關系。 |
Show Packet in New Window |
View |
在單獨的窗口中顯示選定的數據包。單獨的窗口僅顯示數據包詳細信息和字節。有關詳細信息,請參見上圖5.26“在單獨的窗口中查看數據包”。 |
5.3.2.3 “Packet Details”窗格的彈出菜單
圖5.29。“Packet Details”窗格的彈出菜單
下表概述了此窗格中可用的功能,可以在主菜單中找到相應功能的位置以及每個項目的簡短說明。
表5.4。“數據包詳細信息”彈出菜單的菜單項
| 項目 | 對應的主菜單項 | 描述 |
|---|---|---|
Expand Subtrees |
View |
展開當前選定的子樹。 |
Collapse Subtrees |
View |
折疊當前選定的子樹。 |
Expand All |
View |
展開捕獲中所有數據包中的所有子樹。 |
Collapse All |
View |
Wireshark保留所有已展開協議子樹的列表,并使用它來確保在顯示數據包時已展開正確的子樹。該菜單項折疊捕獲列表中所有數據包的樹狀視圖。 |
Apply as Column |
使用所選協議項在數據包列表中創建一個新列。 | |
Apply as Filter |
Analyze |
根據最近選擇的數據包列表或數據包詳細信息,立即替換或附加當前顯示過濾器。第一個子菜單項顯示了過濾器,隨后的子項顯示了可以應用過濾器的不同方式。 |
Prepare a Filter |
Analyze |
根據所選的最新數據包列表或數據包詳細信息項更改當前的顯示過濾器,但不要應用它。第一個子菜單項顯示過濾器,后續子項顯示可以更改過濾器的不同方式。 |
Colorize with Filter |
該菜單項使用顯示過濾器以及來自所選協議項的信息來建立新的著色規則。 | |
Follow → TCP Stream |
Analyze |
打開一個窗口,顯示與所選數據包處于同一TCP連接上的所有捕獲的TCP段。請參見6.1.1 Following Protocol Streams。 |
Follow → UDP Stream |
Analyze |
與“跟隨TCP流”相同的功能,但與UDP“流”相同。 |
Follow → TLS Stream |
Analyze |
與“跟隨TCP流”相同的功能,但適用于TLS或SSL流。 |
Follow → HTTP Stream |
Analyze |
與“跟隨TCP流”相同的功能,但適用于HTTP流。 |
Copy → All Visible Items |
Edit |
復制顯示的數據包詳細信息。 |
Copy → All Visible Selected Tree Items |
Edit |
復制顯示的所選數據包詳細信息及其子級。 |
Copy →Description |
Edit |
將所選字段的顯示文本復制到系統剪貼板。 |
Copy → Fieldname |
Edit |
將所選字段的名稱復制到系統剪貼板。 |
Copy → Value |
Edit |
將所選字段的值復制到系統剪貼板。 |
Copy → As Filter |
Edit |
根據當前選擇的項目準備顯示過濾器,并將其復制到剪貼板。 |
Copy → Bytes as Hex + ASCII Dump |
以完整的“ hexdump”格式將數據包字節復制到剪貼板。 | |
Copy → …as Hex Dump |
將不帶ASCII部分的“ hexdump”格式的數據包字節復制到剪貼板。 | |
Copy → …as Printable Text |
將數據包字節以ASCII文本復制到剪貼板,不包括不可打印字符。 | |
Copy → …as a Hex Stream |
將數據包字節作為十六進制數字的未標點列表復制到剪貼板。 | |
Copy → …as Raw Binary |
將數據包字節作為原始二進制文件復制到剪貼板。數據使用MIME類型“ application / octet-stream”存儲在剪貼板中。 | |
Copy → …as Escaped String |
將數據包字節作為C樣式轉義序列復制到剪貼板。 | |
Export Packet Bytes… |
File |
該菜單項與具有相同名稱的“文件”菜單項相同。它允許您將原始數據包字節導出到二進制文件。 |
Wiki Protocol Page |
在您的Web瀏覽器中顯示與當前所選協議相對應的Wiki頁面。 | |
Filter Field Reference |
顯示與您的Web瀏覽器中當前所選協議相對應的過濾器字段參考網頁。 | |
Protocol Preferences |
調整所選協議的首選項。 | |
Decode As… |
Analyze |
更改或應用兩個解剖器之間的新關系。 |
Go to Linked Packet |
Go |
如果所選字段具有相應的數據包,例如對DNS響應的匹配請求,請轉到它。 |
Show Linked Packet in New Window |
Go |
如果所選字段具有相應的數據包,例如對DNS響應的匹配請求,請在單獨的窗口中顯示所選數據包。有關詳細信息,請參請參見上圖5.26“在單獨的窗口中查看數據包”。 |
5.3.2.4 “Packet Bytes” 窗格的彈出菜單
圖5.30。 “Packet Bytes” 窗格的彈出菜單
下表概述了此窗格中可用的功能以及每個項目的簡短說明。
表5.5。 “Packet Bytes” 彈出菜單的菜單項
| 項目 | 描述 |
|---|---|
Copy Bytes as Hex + ASCII Dump |
以完整的“ hexdump”格式將數據包字節復制到剪貼板。 |
…as Hex Dump |
將不帶ASCII部分的“ hexdump”格式的數據包字節復制到剪貼板。 |
…as Printable Text |
將數據包字節以ASCII文本復制到剪貼板,不包括不可打印字符。 |
…as a Hex Stream |
將數據包字節作為十六進制數字的未標點列表復制到剪貼板。 |
…as Raw Binary |
將數據包字節作為原始二進制文件復制到剪貼板。數據使用MIME類型“ application / octet-stream”存儲在剪貼板中。 |
…as Escaped String |
將數據包字節作為C樣式轉義序列復制到剪貼板。 |
Show bytes as hexadecimal |
將字節數據顯示為十六進制數字。 |
Show bytes as bits |
將字節數據顯示為二進制數字。 |
Show text based on packet |
顯示帶有文本的“ hexdump”數據。 |
…as ASCII |
顯示“十六進制轉儲”文本時使用ASCII編碼。 |
…as EBCDIC |
顯示“十六進制轉儲”文本時,請使用EBCDIC編碼。 |
5.3.3 查看時過濾數據包
Wireshark具有兩種過濾語言:捕獲過濾器和顯示過濾器。 捕獲過濾器用于捕獲數據包時進行過濾,并在5.1.9 捕獲時過濾中進行了討論。 顯示過濾器用于過濾顯示哪些數據包,下面將進行討論。
顯示過濾器使您可以專注于感興趣的數據包,同時隱藏當前不感興趣的數據包。它們僅允許您根據以下內容顯示數據包:
- 協議
- 場的存在
- 字段值
- 字段之間的比較
- ……還有更多!
要僅顯示包含特定協議的數據包,請在Wireshark窗口的顯示過濾器工具欄中鍵入協議名稱,然后按Enter以應用該過濾器。圖5.31“根據TCP協議進行過濾”顯示了在顯示過濾器工具欄中鍵入tcp時發生的情況的示例。
- tip
協議和字段名稱通常用小寫字母。
輸入過濾器表達式后,不要忘記按Enter或單擊Apply display按鈕。
圖5.31。在TCP協議上過濾
您可能已經注意到,現在僅顯示包含TCP協議的數據包,因此隱藏了數據包1-10,并且顯示的第一個數據包為11。
要刪除過濾器,請單擊顯示過濾器字段右側的Clear按鈕。所有數據包將再次可見。
顯示過濾器可能非常強大,5.3.4 建立顯示過濾器表達式中將對此進行詳細討論。
也可以使用“ 顯示過濾器表達式”對話框來創建顯示過濾 器。有關更多信息顯示過濾表達式對話框中可以找到 5.3.5 “顯示過濾器表達式” 對話框。
5.3.4 建立顯示過濾器表達式
Wireshark提供了一種顯示過濾器語言,使您可以精確地控制顯示哪些數據包。它們可用于檢查協議或字段的存在,字段的值,甚至可以將兩個字段相互比較。這些比較可以與邏輯運算符(例如“ and”和“ or”)結合使用,并在括號中添加復雜的表達式。
以下各節將更詳細地介紹顯示過濾器功能。
5.3.4.1 顯示過濾器字段
最簡單的顯示過濾器是顯示單個協議的過濾器。要僅顯示包含特定協議的數據包,請在Wireshark的顯示過濾器工具欄中鍵入該協議。例如,要僅顯示TCP數據包,請在Wireshark的顯示過濾器工具欄中鍵入tcp。同樣,要僅顯示包含特定字段的數據包,請在Wireshark的顯示過濾器工具欄中鍵入該字段。例如,要僅顯示HTTP請求,請在Wireshark的顯示過濾器工具欄中鍵入http.request。
您可以過濾Wireshark支持的任何協議。如果解剖器為該字段添加了縮寫,您還可以過濾該解剖器添加到樹視圖的任何字段。可通過菜單項View → Internals → Supported Protocols來獲得可用協議和字段的完整列表 。
5.3.4.2 比較值
您可以使用多個不同的比較運算符來構建用于比較值的顯示過濾器。例如,要僅顯示去往或來自IP地址192.168.0.1的數據包,請使用ip.addr==192.168.0.1。
表5.6。列出了可用的比較運算符的完整列表。
表5.6。顯示過濾器比較運算符
| English | C-like | Description | Example |
|---|---|---|---|
| eq | == | Equal | ip.src==10.0.0.5 |
| ne | != | Not equal | ip.src!=10.0.0.5 |
| gt | > | Greater than | frame.len > 10 |
| lt | < | Less than | frame.len < 128 |
| ge | >= | Greater than or equal to | frame.len ge 0x100 |
| le | <= | Less than or equal to | frame.len <= 0x20 |
| contains | Protocol, field or slice contains a value | sip.To contains "a1762" |
|
| matches | ~ | Protocol or text field matches a Perl-compatible regular expression | `http.host matches “acme.(org |
| bitwise_and | & | Bitwise AND is non-zero | tcp.flags & 0x02 |
所有協議字段都有一個類型。顯示過濾器字段類型提供了類型列表,并提供了如何在顯示過濾器中使用它們的示例。
顯示過濾器字段類型
Unsigned integer
可以是8、16、24、32或64位。您可以用十進制,八進制或十六進制表示整數。以下顯示過濾器是等效的:
ip.len le 1500
ip.len le 02734
ip.len le 0x5dc
Signed integer
可以是8、16、24、32或64位。與無符號整數一樣,您可以使用十進制,八進制或十六進制。
Boolean
可以是1(代表真)或0(代表假)。
布爾字段存在,無論其值為true還是false。例如, tcp.flags.syn無論SYN標志是0還是1,所有包含該標志的TCP數據包中都存在。要僅匹配設置了SYN標志的TCP數據包,需要使用tcp.flags.syn == 1。
Ethernet address
6個字節,以冒號(:),點(.)或破折號(-)分隔,分隔符之間為一或兩個字節:
eth.dst == ff:ff:ff:ff:ff:ff
eth.dst == ff-ff-ff-ff-ff-ff
eth.dst == ffff.ffff.ffff
IPv4 address
ip.addr == 192.168.0.1
無類域間路由(CIDR)表示法可用于測試IPv4地址是否在某個子網中。例如,此顯示過濾器將找到129.111 B類網絡中的所有數據包:
ip.addr == 129.111.0.0/16
IPv6 address
ipv6.addr == ::1
與IPv4地址一樣,IPv6地址可以匹配子網。
Text string
http.request.uri == “https://www.wireshark.org/"
udp contains 81:60:03
上面的顯示過濾器匹配在UDP標頭或有效載荷中任何地方包含3字節序列0x81、0x60、0x03的數據包。
sip.To contains “a1762”
上面的顯示過濾器匹配數據包,其中SIP To-header在標頭中的任何位置都包含字符串“ a1762”。
http.host matches “acme.(org|com|net)”
上面的顯示過濾器與HOST標頭包含acme.org,acme.com或acme.net的HTTP數據包匹配。比較不區分大小寫。
tcp.flags & 0x02
該顯示過濾器將匹配所有包含“ tcp.flags”字段且設置為0x02位(即SYN位)的數據包。
5.3.4.3 組合表達式
您可以使用表5.7的邏輯運算符在Wireshark中組合過濾器表達式。
表5.7。顯示過濾器邏輯操作
| English | C-like | Description | Example |
|---|---|---|---|
| and | && | Logical AND | ip.src==10.0.0.5 and tcp.flags.fin |
| or | |||
| xor | ^^ | Logical XOR | tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29 |
| not | ! | Logical NOT | not llc |
| […?] | Subsequence | See “Slice Operator” below. | |
| in | Set Membership | http.request.method in {“HEAD” “GET”}. See “Membership Operator” below. |
5.3.4.4 切片運算符
Wireshark允許您以相當復雜的方式選擇序列的子序列。在標簽后,您可以放置??一對用逗號分隔的范圍說明符列表的方括號[]。
eth.src[0:3] == 00:00:83
上面的示例使用n:m格式指定單個范圍。在這種情況下,n是起始偏移量,m是指定范圍的長度。
eth.src[1-2] == 00:83
上面的示例使用nm格式指定單個范圍。在這種情況下,n是開始偏移,m是結束偏移。
eth.src[:4] == 00:00:83:00
上面的示例使用:m格式,該格式將從序列的開始到偏移m的所有內容。相當于0:m
eth.src[4:] == 20:20
上面的示例使用n:格式,該格式包含從偏移量n到序列末尾的所有內容。
eth.src[2] == 83
上面的示例使用n格式指定單個范圍。在這種情況下,將選擇序列中偏移量為n的元素。這相當于n:1。
eth.src[0:3,1-2,:4,4:,2] ==
00:00:83:00:83:00:00:83:00:20:20:83
Wireshark允許您將逗號分隔的列表中的單個范圍串在一起,以形成復合范圍,如上所示。
5.3.4.5 會員運營商
Wireshark允許您測試字段在一組值或字段中的成員資格。在字段名稱之后,使用in運算符,然后使用大括號{}括起來的設置項目。例如,要顯示TCP源或目標端口為80、443或8080的數據包,可以使用tcp.port in {80 443 8080}。值集還可以包含范圍:tcp.port in {443 4430..4434}。
Note
The display filter
tcp.port in {80 443 8080}
is equivalent to
tcp.port == 80 || tcp.port == 443 || tcp.port == 8080
However, the display filter
tcp.port in {443 4430..4434}
is not equivalent to
tcp.port == 443 || (tcp.port >= 4430 && tcp.port <= 4434)
This is because comparison operators are satisfied when any field matches the filter, so a packet with a source port of 56789 and destination port of port 80 would also match the second filter since 56789 >= 4430 && 80 <= 4434 is true. In contrast, the membership operator tests a single field against the range condition.
集合不僅限于數字,還可以使用其他類型:
http.request.method in {“HEAD” “GET”}
ip.addr in {10.0.0.5 .. 10.0.0.9 192.168.1.1..192.168.1.9}
frame.time_delta in {10 .. 10.5}
5.3.4.6 功能
顯示過濾器語言具有許多用于轉換字段的函數,請參見表5.8。
表5.8。顯示過濾器功能
| 功能 | 描述 |
|---|---|
| upper | 將字符串字段轉換為大寫。 |
| lower | 將字符串字段轉換為小寫。 |
| len | 返回字符串或字節字段的字節長度。 |
| count | 返回一幀中字段出現的次數。 |
| string | 將非字符串字段轉換為字符串。 |
該upper和lower功能可用于強制不區分大小寫的匹配: lower(http.server) contains "apache"。
要查找具有較長請求URI的HTTP請求:len(http.request.uri) > 100。請注意,該len函數產生的字符串長度以字節為單位,而不是(多字節)字符。
通常,一個IP幀只有兩個地址(源地址和目標地址),但是在ICMP錯誤或隧道傳輸的情況下,單個數據包可能包含更多地址。這些數據包可以通過找到count(ip.addr) > 2。
該string函數將字段值轉換為字符串,適合與“ matches”或“ contains”之類的運算符一起使用。整數字段將轉換為其十進制表示形式。它可以與IP /以太網地址(以及其他地址)一起使用,但不能與字符串或字節字段一起使用。
例如,要匹配奇數幀號:
string(frame.number) matches “[13579]$”
要在子網塊(172.16至172.31)中匹配以255結尾的IP地址:
string(ip.dst) matches “^172.(1[6-9]|2[0-9]|3[0-1])..{1,3}.255”
5.3.4.7 !=的常見錯誤
像聯合表達式中使用!=運算符eth.addr,ip.addr, tcp.port,并udp.port可能不會如預期的工作。使用時,Wireshark將顯示警告““!=”可能會導致意外結果”。
人們經常使用過濾器字符串ip.addr == 1.2.3.4 來顯示包含IP地址1.2.3.4的所有數據包。
然后他們ip.addr != 1.2.3.4期望看到所有不包含IP地址1.2.3.4的數據包。不幸的是,這并沒有達到預期的效果。
相反,該表達式甚至對于源IP地址或目標IP地址等于1.2.3.4的數據包也適用。其原因是因為該表達式ip.addr != 1.2.3.4被讀為“該數據包包含一個名為ip.addr的字段,其值與1.2.3.4不同”。由于IP數據報同時包含源地址和目標地址,因此只要這兩個地址中的至少一個與1.2.3.4不同,該表達式的計算結果就為true。
如果要過濾掉所有包含來自IP地址1.2.3.4或來自IP地址的IP數據報的數據包,則正確的過濾器為!(ip.addr == 1.2.3.4):“向我顯示所有不存在名為ip.addr的字段的數據包。值是1.2.3.4”,換句話說,就是“過濾掉所有沒有出現名為ip.addr的值為1.2.3.4的數據包”。
5.3.4.8 有時字段會更改名稱
隨著協議的發展,它們有時會更改名稱或被更新的標準所取代。例如,DHCP擴展并已在很大程度上取代了BOOTP,而TLS已取代了SSL。如果協議解剖器最初使用較舊的名稱和字段作為協議,Wireshark開發團隊可能會對其進行更新以使用較新的名稱和字段。在這種情況下,他們會將別名從舊協議名稱添加到新協議名稱,以使轉換更加容易。
例如,DHCP Dissector最初是為BOOTP協議開發的,但從Wireshark 3.0開始,所有“ bootp”顯示過濾器字段均已重命名為其“ dhcp”等效項。您仍然可以暫時使用舊的過濾器名稱,例如,“ bootp.type”等同于“ dhcp.type”,但Wireshark在使用它時會顯示警告“不贊成使用bootp”。將來可能會刪除對不贊成使用的字段的支持。
5.3.5 “顯示過濾器表達式”對話框
當您習慣了Wireshark的過濾系統并知道要在過濾器中使用哪些標簽時,只需鍵入一個過濾器字符串即可。但是,如果您是Wireshark的新手,或者正在使用稍微不熟悉的協議,嘗試弄清楚要鍵入的內容可能會非常混亂。“顯示過濾器表達式”對話框將對此提供幫助。
- tip
“顯示過濾器表達式”對話框是學習如何編寫Wireshark顯示過濾器字符串的絕佳方法。
圖5.32。“顯示過濾器表達式”對話框
首次顯示“顯示過濾器表達式”對話框時,會顯示一棵按協議組織的字段名稱樹,以及一個用于選擇關系的框。
Field Name
從協議字段樹中選擇一個協議字段。每個帶有可過濾字段的協議都列在頂層。您可以通過輸入協議名稱的前幾個字母來搜索特定的協議條目。通過展開協議名稱,您可以獲取可用于該協議過濾的字段名稱的列表。
Relation
從可用關系列表中選擇一個關系。的是本是一個一元關系,如果所選擇的字段存在于包這是真實的。所有其他列出的關系是二進制關系,需要附加數據(例如要匹配的值)來完成。
當您從字段名稱列表中選擇一個字段并選擇一個二進制關系(例如等式關系==)時,您將有機會輸入一個值,并可能輸入一些范圍信息。
Value
您可以在“ 值”文本框中輸入適當的值。該值也將顯示為值的類型字段名稱您選擇(如字符串)。
Predefined Values
一些協議字段具有可用的預定義值,就像C中的枚舉一樣。如果所選協議字段定義了此類值,則可以在此處選擇其中之一。
Search
使您可以搜索完整或部分字段名稱或描述。支持正則表達式。例如,搜索“ tcp。* flag”將顯示各種解剖器支持的TCP標志字段,而“ ^ tcp.flag”僅顯示TCP解剖器支持的TCP標志字段。
Range
整數范圍或一組范圍,例如1-12或39-42,98-2000。
Help
打開用戶指南部分。
OK
構建滿意的表達式后,請單擊OK,然后將為您構建一個過濾器字符串。
Cancel
您可以通過單擊Cancel按鈕來使``添加表達式…’’對話框保持無效。
5.3.6 定義和保存過濾器
您創建了預定義的過濾器,這些過濾器顯示在捕獲和顯示過濾器書簽菜單(
)中。這樣可以節省您記住和重新鍵入一些您使用的更復雜過濾器的時間。
要創建或編輯捕獲過濾器,選擇Manage Capture Filters從捕獲過濾器書簽菜單或Capture → Capture Filters……從主菜單。顯示過濾器可以創建或通過選擇編輯Manage Display Filters從所述的顯示過濾器書簽菜單或Analyze → Display Filters…從主菜單。Wireshark將打開相應的對話框,如圖5.33。這兩個對話框的外觀和工作彼此相似。兩者均在此處進行了描述,并根據需要記錄了差異。
圖5.33。“捕獲過濾器”和“顯示過濾器”對話框
+
在列表中添加一個新的過濾器。您可以通過雙擊過濾器名稱或表達式來對其進行編輯。
過濾器名稱在此對話框中用于標識過濾器,以方便您使用,在其他地方未使用。您可以使用相同的名稱創建多個過濾器,但這不是很有用。
鍵入過濾器字符串時,背景顏色將根據過濾器的有效性而變化,類似于主捕獲和顯示過濾器工具欄。
-
刪除選定的過濾器。如果未選擇任何過濾器,該框將顯示為灰色。
Copy
復制所選過濾器。如果未選擇任何過濾器,該框將顯示為灰色。
OK
保存過濾器設置并關閉對話框。
Cancel
關閉對話框,不保存任何更改。
5.3.7 義和保存過濾器宏
您可以使用Wireshark定義過濾器宏,并為其指定標簽以供以后使用。這樣可以節省您記住和重新鍵入一些您使用的更復雜過濾器的時間。
5.3.8 查找數據包
一旦捕獲了某些數據包或讀入了先前保存的捕獲文件,就可以輕松找到數據包。只需選擇Edit → Find Packet…在主菜單中。Wireshark將在主工具欄和數據包列表之間打開一個工具欄,如圖5.34。
5.3.8.1 “查找數據包”工具欄
圖5.34。“查找數據包”工具欄
您可以使用以下條件進行搜索:
Display filter
在文本輸入字段中輸入顯示過濾器字符串,然后單擊Find按鈕。+例如,要查找與主機192.168.0.1的連接的三向握手,請使用以下過濾字符串:
ip.src==192.168.0.1 and tcp.flags.syn==1
鍵入時將對要查找的值進行語法檢查。如果對值的語法檢查成功,則輸入字段的背景將變為綠色,如果失敗,則將變為紅色。有關更多詳細信息,請參見5.3.3 查看時過濾數據包
Hexadecimal Value
在數據包數據中搜索特定的字節序列。
例如,使用“ef:bb:bf” 查找包含UTF-8字節順序標記的下一個數據包 。
String
使用各種選項在數據包數據中查找字符串。
Regular Expression
使用與Perl兼容的正則表達式搜索數據包數據。PCRE模式不在本文檔的討論范圍之內,但是在您喜歡的搜索引擎中鍵入“pcre test” 應該返回許多站點,這些站點將幫助您測試和探索表達。
5.3.9 轉到特定的數據包
您可以使用Go菜單中的菜單項之一輕松跳轉到特定數據包。
5.3.9.1 “Go Back”命令
返回數據包歷史記錄,其工作原理與大多數Web瀏覽器中的頁面歷史記錄相似。
5.3.9.2 “Go Forward” 命令
在數據包歷史記錄中前進,就像在大多數Web瀏覽器中的頁面歷史記錄一樣。
5.3.9.3 “Go to Packet”工具欄
圖5.35。“轉到數據包”工具欄
此工具欄可以通過選擇打開進入Go → Go to packet…從主菜單。它出現在主工具欄和數據包列表之間,類似于“查找數據包”工具欄。
當您輸入數據包編號并按Go to packet數據包時, Wireshark將跳至該數據包。
5.3.9.4 “Go to Corresponding Packet”命令
如果選擇的協議字段指向捕獲文件中的另一個數據包,則此命令將跳轉到該數據包。
由于這些協議字段現在像鏈接一樣工作(就像在Web瀏覽器中一樣),因此只需雙擊該字段以跳轉到相應的字段就容易了。
5.3.9.5 “Go to First Packet” 命令
該命令將跳到顯示的第一個數據包。
5.3.9.6 “Go to Last Packet”命令
該命令將跳轉到最后顯示的數據包。
5.3.10 標記數據包
您可以在“數據包列表”窗格中標記數據包。無論設置了哪種著色規則,帶標記的數據包都將顯示為黑色背景。標記數據包可能對以后在大型捕獲文件中進行分析時找到它很有用。
標記的數據包信息不會存儲在捕獲文件中或其他任何地方。當捕獲文件關閉時,它將丟失。
保存,導出或打印時,可以使用數據包標記來控制數據包的輸出。為此,可以使用數據包范圍中的一個選項,請參見5.2.8 “數據包范圍” 框架。
有幾種標記和取消標記數據包的方法。在Edit菜單中,您可以選擇以下選項:
Mark/Unmark Packet可切換單個數據包的標記狀態。此選項在數據包列表上下文菜單中也可用。Mark All Displayed設置所有顯示數據包的標記狀態。Unmark All Displayed重置所有數據包的標記狀態。
您也可以通過使用鼠標中鍵在數據包列表中單擊來標記和取消標記數據包。
5.3.11 忽略數據包
您可以在“Packet List” 窗格中忽略數據包。然后,Wireshark將假裝它們在捕獲文件中不存在。不管設置的著色規則如何,忽略的數據包都將顯示為白色背景和灰色前景。
被忽略的數據包信息不會存儲在捕獲文件或其他任何地方。當捕獲文件關閉時,它將丟失。
有幾種忽略和忽略數據包的方法。在Edit菜單中,您可以選擇以下選項:
Ignore/Unignore Packet切換單個數據包的忽略狀態。此選項在數據包列表上下文菜單中也可用。Ignore All Displayed設置所有顯示的包的忽略狀態。Unignore All Displayed重置所有數據包的忽略狀態。
5.3.12 時間顯示格式和時間參考
捕獲數據包時,每個數據包都帶有時間戳。這些時間戳將保存到捕獲文件中,以便以后進行分析。
有關時間戳,時區等的詳細說明,請參見: 6.1.5 時間戳。
可以使用“查看”菜單選擇時間戳記格式和包列表中的精度。
可用的演示格式為:
Date and Time of Day: 1970-01-01 01:02:03.123456捕獲數據包的當天的絕對日期和時間。Time of Day: 01:02:03.123456捕獲數據包的一天中的絕對時間。Seconds Since Beginning of Capture: 123.123456相對于捕獲文件的開始或此數據包之前的第一個“時間參考”的時間(請參見5.3.12.1 數據包時間參考)。Seconds Since Previous Captured Packet: 1.123456相對于上一個捕獲的數據包的時間。Seconds Since Previous Displayed Packet: 1.123456相對于先前顯示的數據包的時間。Seconds Since Epoch (1970-01-01): 1234567890.123456相對于紀元的時間(1970年1月1日午夜UTC)。
可用的精度(又稱顯示的小數位數)為:
Automatic (from capture file)將使用已加載的捕獲文件格式的時間戳精度(默認值)。Seconds,Tenths of a second,Hundredths of a second,Milliseconds,Microseconds或Nanoseconds的時間戳精度將被強制設定值。如果實際可用的精度較小,則將附加零。如果精度更高,則剩余的小數位將被截斷。
精確度示例:如果您有時間戳記,并且使用“Seconds Since Previous Packet”顯示,則該值可能是1.123456。這將使用libpcap文件的 “Automatic” 設置顯示(以微秒為單位)。如果使用Seconds,則僅顯示1;如果使用Nanoseconds,則顯示1.123456000。
5.3.12.1 包時間參考
用戶可以設置數據包的時間參考。時間參考是所有后續數據包時間計算的起點。如果您想查看相對于特殊數據包的時間值,例如新請求的開始,它將很有用。可以在捕獲文件中設置多個時間參考。
時間參考將不會永久保存,并且在關閉捕獲文件時會丟失。
僅當時間顯示格式設置為“Seconds Since Beginning of Capture”時,時間參考才有用。如果使用其他時間顯示格式之一,則時間參考將無效(也沒有任何意義)。
要使用Time Reference,請選擇菜單中的時間參考項之一:Edit菜單,或從“數據包列表”窗格的彈出菜單中選擇。
Set Time Reference (toggle)將當前選定數據包的時間參考狀態切換為打開或關閉。Find Next在“數據包列表”窗格中查找下一個參考時間的數據包。Find Previous在“數據包列表”窗格中找到上一個參考時間的數據包。
圖5.36。Wireshark顯示時間參考數據包
時間參考的數據包將在“時間”列中用字符串* REF *標記(請參見數據包編號10)。所有后續數據包將顯示自上次參考時間以來的時間。
Wireshark中文使用教程(用戶版)
推薦文章: