工具介紹《WireShark》

Wireshark 過濾命令中符號含義詳解

一、比較運算符

Wireshark 支持兩種比較運算符語法:英文縮寫(如 eq)和 C語言風格符號(如 ==),兩者功能等價。

符號(英文縮寫)C語言風格符號含義示例
eq==等于ip.src == 192.168.1.1
ne!=不等于tcp.port != 80
gt>大于frame.len > 1000
lt<小于udp.length < 50
ge>=大于等于tcp.window_size >= 8192
le<=小于等于ip.len <= 1500

注意

  • 等于判斷ip.addr eq 192.168.1.1ip.addr == 192.168.1.1 完全等價。
  • 不等于判斷!=ne 均可,但需注意部分場景需用 not 組合(如 not tcp.port == 80)。

二、邏輯運算符

用于組合多個過濾條件,支持 英文縮寫(如 and)和 C語言風格符號(如 &&)。

符號(英文縮寫)C語言風格符號含義示例
and&&邏輯與(同時滿足)ip.src == 192.168.1.1 && tcp.port == 80
or||邏輯或(滿足其一)http.request.method == "GET" || http.request.method == "POST"
not!邏輯非(排除條件)!icmp(排除所有 ICMP 包)

注意

  • 優先級not > and > or,建議用括號明確優先級(如 (a and b) or c)。
  • 組合過濾:可聯合使用比較和邏輯運算符,例如 ip.addr == 10.1.1.1 and (tcp.port == 80 or udp.port == 53)

三、特殊符號與高級操作
  1. containsmatches

    • contains:檢查字段是否包含指定字符串(大小寫敏感)
      http contains "password"  # 過濾 HTTP 報文含 "password" 的包
      
    • matches:支持正則表達式匹配(需用 ~ 符號)
      http.request.uri matches ".*\.php$"  # 匹配 URI 以 .php 結尾的請求
      
  2. [] 偏移量操作
    用于從協議頭或載荷中提取特定字節:

    • tcp[20:4]:從 TCP 頭的第 20 字節開始截取 4 個字節。
    • udp[8:3]==20:21:22:檢查 UDP 載荷第 8 字節開始的 3 個字節是否為 0x20 0x21 0x22
  3. 按位運算符 <<>>
    用于處理協議頭中的位移計算(常見于捕獲過濾器):

    tcp[((tcp[12] & 0xf0) >> 2):4] == 0x47455420  # 匹配 TCP 載荷中的 "GET " 請求
    
    • >>:右移(除以 2 的冪次),如 (tcp[12] & 0xf0) >> 2 計算 TCP 頭長度。
    • <<:左移(乘以 2 的冪次),如 (ip[0] & 0xf) << 2 計算 IPv4 頭長度。

四、實際應用示例
  1. 組合邏輯過濾

    ip.addr == 192.168.1.1 and (tcp.port == 80 or udp.port == 53) and !http
    
    • 含義:過濾源或目的 IP 為 192.168.1.1,且端口為 80(TCP)或 53(UDP),但排除 HTTP 協議。
  2. 復雜協議分析

    tcp.flags.syn == 1 and tcp.flags.ack == 0  # 匹配 TCP SYN 包(不含 ACK)
    
    • 用途:檢測異常連接請求。
  3. 內容提取與隱寫檢測

    icmp and icmp[8:1] == 0x66  # 檢查 ICMP 數據段第 8 字節是否為 0x66(ASCII 'f')
    
    • 用途:分析 ICMP 協議中的隱寫數據。

一、基礎操作流程

  1. 數據包篩選與過濾

    • 協議篩選:直接輸入協議名稱(如httptcpicmp)過濾特定協議流量,排除無關干擾。
    • IP/端口定位
      • 源IP:ip.src == 192.168.1.1
      • 目標端口:tcp.dstport == 80
      • MAC地址:eth.addr == A0:00:00:04:C5:84
    • 內容搜索:按Ctrl+F搜索關鍵字,支持字符串、十六進制和正則表達式,常用于快速定位flag。
  2. 數據包還原技術

    • 追蹤流(Follow Stream):右鍵數據包選擇追蹤TCP/UDP/HTTP流,可還原完整的會話內容,常用于提取HTTP上傳文件、SQL注入語句等。
    • 文件導出:通過文件 -> 導出對象 -> HTTP批量提取傳輸的文件(如壓縮包、圖片),或手動從data層導出字節流。
  3. 協議層級分析

    • 分層解析:逐層展開數據包的物理層、傳輸層(TCP/UDP)、應用層(HTTP/FTP)信息,分析異常字段(如TCP標志位異常、HTTP請求參數含可疑代碼)。

二、CTF常見題型與解法

1. HTTP協議相關
  • 文件上傳/下載
    • 通過HTTP過濾器定位POST請求,追蹤流查看上傳內容;導出對象提取隱藏文件(如flag.rar)。
    • 分段傳輸:若文件分多包傳輸,需用dd命令合并并去除冗余頭信息。
  • Web滲透痕跡
    • 篩選http.request.uri contains "upload.php",分析SQL注入或命令執行流量,提取攻擊載荷。
2. ICMP協議隱寫
  • Ping報文隱寫:檢查ICMP數據段,可能直接包含ASCII字符或通過腳本提取隱藏信息(如每包1字節組合成flag)。
  • 示例腳本
    import pyshark
    cap = pyshark.FileCapture('icmp.pcap')
    for pkt in cap:print(chr(int(pkt.icmp.data, 16)), end='')
    
3. USB流量分析
  • 鍵盤流量
    1. 使用tshark提取數據:
      tshark -r usb.pcap -T fields -e usb.capdata > usbdata.txt
      
    2. 過濾有效擊鍵(HID Usage ID),通過映射表轉換鍵位(如0x04對應"A")。
  • 鼠標流量:解析移動坐標(X/Y偏移量),繪制軌跡圖還原操作。
4. 加密流量解密
  • SSL/TLS解密:需預置服務器私鑰或SSLKEYLOGFILE,在Wireshark中配置密鑰解密HTTPS流量,查找敏感數據。
  • Webshell流量(如蟻劍):
    • 識別Base64編碼的PHP代碼,通過URL解碼和流量統計定位后門交互。

三、高級技巧與工具聯動

  1. 協議統計與排序

    • 使用統計 -> 協議分級快速發現異常協議(如非常見端口HTTP或異常DNS隧道)。
    • I/O圖表:分析流量時間分布,定位爆破攻擊(如高頻SSH登錄嘗試)。
  2. 聯合工具分析

    • Tshark命令行:批量提取字段(如tshark -r file.pcap -Y 'http' -T json導出JSON格式)。
    • Foremost/Binwalk:自動分離流量中的嵌入文件(如圖片碎片、PDF)。
  3. 無線流量處理

    • WiFi密碼破解:捕獲WPA握手包,用Aircrack-ng配合字典破解,需過濾eapol協議。

四、實戰案例分析

  • 案例a:鍵盤流量還原密碼
    通過USB協議過濾,提取擊鍵數據并映射,得到6位數字密碼flag{720093}
  • 案例b:HTTP文件分片重組
    合并5個分片包,去除364字節頭部后合成fly.rar,解壓得flag。
  • 案例c:蟻劍后門分析
    追蹤info1.php流量,解密Base64載荷獲取Webshell密碼及下載的惡意文件。

實戰案例1:HTTP流量中隱藏的壓縮包文件

題目背景

給定一個名為web_traffic.pcap的流量包,分析并找到隱藏的Flag文件。

分析過程
  1. 初步篩選HTTP流量

    • 在Wireshark過濾欄輸入 http,篩選所有HTTP協議流量,排除無關數據。
    • 觀察HTTP請求方法(GET/POST),重點關注POST請求(可能用于文件上傳)。
  2. 追蹤TCP流還原完整會話

    • 右鍵任意HTTP數據包 → 追蹤流TCP流,查看完整HTTP會話內容。
    • 發現關鍵信息:
      POST /upload.php HTTP/1.1
      ...(請求頭)...
      Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABCDEFG------WebKitFormBoundaryABCDEFG
      Content-Disposition: form-data; name="file"; filename="secret.zip"
      Content-Type: application/zipPK...(ZIP文件頭標志)...
      
      (示例:POST請求上傳了名為secret.zip的文件)
  3. 導出隱藏的ZIP文件

    • 點擊菜單欄 文件導出對象HTTP,打開導出對話框。
    • 在列表中找到secret.zip的傳輸記錄(文件名和大小匹配),點擊Save導出文件。
  4. 解決文件損壞問題

    • 若導出的ZIP無法解壓,可能因流量包截斷或分片傳輸導致文件頭缺失。
    • 手動修復
      1. 使用十六進制編輯器(如010 Editor)在文件頭部添加ZIP文件頭標志 50 4B 03 04(對應ASCII為PK..)。
      2. 若文件分片傳輸,需合并多個數據包的data字段內容(通過tcp.stream eq <流編號>篩選同一流的分片)。
  5. 解壓獲取Flag

    • 修復后的secret.zip解壓得到flag.txt,內容為:
      flag{http_file_upload_928374}

實戰案例2:ICMP協議中的Flag隱寫

題目背景

icmp.pcapng流量包中,Flag通過ICMP報文的數據段隱寫傳輸。

分析過程
  1. 篩選ICMP流量

    • 輸入過濾器 icmp,僅顯示ICMP協議報文。
    • 觀察Echo request(Ping請求)報文,數據段(Data)可能包含隱寫信息。
  2. 提取數據段內容

    • 展開ICMP報文 → Data字段,發現數據段為十六進制值,例如:
      Data: 66 6c 61 67 7b 69 63 6d 70 5f 73 74 65 67 6f 7d
    • 手動轉換:將十六進制轉換為ASCII:
      bytes = [0x66, 0x6c, 0x61, 0x67, 0x7b, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x65, 0x67, 0x6f, 0x7d]
      print(''.join([chr(b) for b in bytes]))  # 輸出:flag{icmp_stego}
      
  3. 自動化提取腳本

    • 若Flag分散在多個ICMP包中(如每包1字節),編寫Python腳本批量提取:
      import pysharkcap = pyshark.FileCapture('icmp.pcap', display_filter='icmp')
      flag = ''
      for pkt in cap:if hasattr(pkt.icmp, 'data'):hex_data = pkt.icmp.data.replace(':', '')flag += bytes.fromhex(hex_data).decode('latin-1')
      print(flag)  # 輸出:flag{icmp_stego_123}
      

實戰案例3:USB鍵盤流量還原密碼

題目背景

流量包usb_keyboard.pcap記錄了USB鍵盤輸入,需還原輸入的6位數字密碼。

分析過程
  1. 篩選USB鍵盤流量

    • 輸入過濾器 usb.transfer_type == 0x01 && usb.dst == "host",篩選鍵盤輸入事件。
  2. 提取擊鍵數據

    • 使用tshark命令行提取usb.capdata字段:
      tshark -r usb_keyboard.pcap -T fields -e usb.capdata > keystrokes.txt
      
    • 輸出示例(每行對應一次擊鍵):
      00:00:04:00:00:00:00:00
      00:00:05:00:00:00:00:00
  3. 映射HID Usage ID到字符

    • 提取第三字節(如04對應字母a05對應b)。
    • HID鍵位表(部分):
      0x04: a, 0x05: b, 0x06: c, ..., 0x1d: 0, 0x1e: 1, ..., 0x27: 9
      
    • 腳本轉換
      hid_map = {0x04: 'a', 0x05: 'b', 0x06: 'c', 0x07: 'd', 0x08: 'e',0x09: 'f', 0x0a: 'g', 0x1d: '0', 0x1e: '1', 0x1f: '2', 0x20: '3', 0x21: '4', 0x22: '5', 0x23: '6', 0x24: '7',0x25: '8', 0x26: '9'
      }with open('keystrokes.txt') as f:for line in f:if line.strip() == '00:00:00:00:00:00:00:00':continue  # 跳過無效數據key_code = int(line.split(':')[2], 16)print(hid_map.get(key_code, ''), end='')
      # 輸出:flag{720931}
      

總結與技巧

  1. 快速定位關鍵點
    • HTTP文件傳輸 → 過濾http并檢查POST請求。
    • 隱寫數據 → 檢查協議數據段的十六進制/ASCII內容。
  2. 工具聯動
    • 使用tshark批量提取字段,pyshark自動化分析。
  3. 數據修復
    • 文件頭修復、分片重組、字符映射是常見解題關鍵。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73558.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScrip-模版字符串的詳解

1.模版字符串的詳解 1.1 模版字符串的使用方法 在ES6之前&#xff0c;如果我們想要將字符串和一些動態的變量&#xff08;標識符&#xff09;拼接到一起&#xff0c;是非常丑陋的&#xff08;ugly) ES6允許我們使用模版字符串來嵌入變量或者表達式來進行拼接 首先&#xff0c;…

STM32C011 進入停止模式和待機模式

對于STM32C011J4M3微控制器&#xff0c;你可以使用HAL庫來實現進入停止模式&#xff08;Stop Mode&#xff09;和待機模式&#xff08;Standby Mode&#xff09;。下面是進入停止模式和待機模式的示例代碼&#xff1a; 進入停止模式代碼示例&#xff1a; #include "stm3…

海康設備http監聽接收報警事件數據

http監聽接收報警事件數據 海康獲取設備報警事件數據兩種方式&#xff1a; 1、sdk 布防監聽報警事件數據&#xff08;前面文章有示例&#xff09; 2、http監聽接收報警事件數據 http監聽接收報警事件數據&#xff0c;服務端可以使用netty通過端口來監聽獲取事件數據。 WEB 端…

FastAPI 全面指南:功能解析與應用場景實踐

FastAPI 全面指南&#xff1a;功能解析與應用場景實踐 FastAPI 是一個現代、快速&#xff08;高性能&#xff09;的 Python Web 框架&#xff0c;用于構建 API。它基于標準 Python 類型提示&#xff0c;使用 Starlette 和 Pydantic 構建&#xff0c;提供了極高的性能并簡化了開…

【STM32】編寫程序控制開發板的RGB LED燈

目錄 1、原理圖2、文件結構3、使用寄存器模式點亮3.1、什么是寄存器3.2、寄存器開發的本質3.3、寄存器開發步驟3.4、主要源碼3.4.1、main.c3.4.2、drv_gpio.h3.4.3、drv_gpio.c3.4.4、使用BSRR和BRR影子寄存器優化drv_gpio.c3.4.5、效果演示 4、使用標準庫模式點亮4.1、使用標準…

MyBatis-Plus 的加載及初始化

在 Spring Boot 啟動過程中&#xff0c;MyBatis-Plus 的加載和初始化涉及多個階段的工作。這些工作包括 MyBatis-Plus 自身的配置解析、Mapper 接口的掃描與注冊、SQL 語句的動態注入以及底層 MyBatis 的初始化等。以下是對整個過程的詳細分析&#xff1a; 1. Spring Boot 啟動…

SpringBoot中安全的設置阿里云日志SLS的accessKey

眾所周知,阿里云的服務都是基于accesskeyId和accesskeySecret來進行身份鑒權的,但唯獨日志因為需要寫入到.xml文件里對于accesskeyId和accesskeySecret需要進行一定程度的改進,尤其是使用了jasypt進行加密的參數傳遞進去logback.xml更是會遇到需要對參數進行解密的問題,而官網只…

關于解決Ubuntu終端及系統字體大小的問題

在Ubuntu中調整終端和系統字體大小可以通過以下方法&#xff08;可能不僅僅只是這幾種&#xff09;實現&#xff1a; 1. 調整系統字體大小 打開終端并輸入以下命令&#xff0c;安裝GNOME Tweaks&#xff0c;等待安裝完成&#xff1a; sudo apt install gnome-tweaks 接著進行…

Rust vs. Go: 性能測試(2025)

本內容是對知名性能評測博主 Anton Putra Rust vs. Go (Golang): Performance 2025 內容的翻譯與整理, 有適當刪減, 相關數據和結論以原作結論為準。 再次對比 Rust 和 Go&#xff0c;但這次我們使用的是最具性能優勢的 HTTP 服務器庫---Hyper&#xff0c;它基于 Tokio 異步運…

【NLP 48、大語言模型的神秘力量 —— ICL:in context learning】

目錄 一、ICL的優勢 1.傳統做法 2.ICL做法 二、ICL的發展 三、ICL成因的兩種看法 1.meta learning 2.Bayesian Inference 四、ICL要點 ① 語言模型的規模 ② 提示詞prompt中提供的examples數量和順序 ③ 提示詞prompt的形式&#xff08;format&#xff09; 五、fine-tune VS I…

兩數之和解題記錄

開始打算用一個數組保存差值&#xff0c;arr[target-nums[i]] i, 只要arr[nums[i]]有內容就能滿足target&#xff0c;返回arr[nums[i]]和i。但是會出現復數的情況&#xff0c;所以換成map。 換成map就只用一邊遍歷&#xff0c;一遍檢查和存入對應key就行了&#xff0c;value就…

P1722 矩陣Ⅱ - 洛谷

題源&#xff1a;P1722 矩陣 II - 洛谷 看了題目之后&#xff0c;需要注意的是&#xff1a; ①在1 ~ i 個格子中紅色數量 > 黑色數量 ②最后&#xff0c;在2 * n 個格子中&#xff0c;紅色數量 黑色數量 根據這兩個約束條件&#xff0c;可以知道&#xff0c;第一個格…

數據庫——MySQL基礎操作

一、表結構與初始數據 假設存在以下兩張表&#xff1a; 1. student 表 字段名數據類型描述idINT學生唯一標識符nameVARCHAR(100)學生姓名ageINT學生年齡sexVARCHAR(10)學生性別 初始數據&#xff1a; idnameagesex1張三20男2李四22女3王五21男 2. course 表 字段名數據類…

行業白皮書2025 | 益企研究院:AI時代的存儲基石

在當今科技飛速發展的時代&#xff0c;AI技術已成為推動各行業變革的關鍵力量。日前&#xff0c;益企研究院重磅發布《AI時代的存儲基石》白皮書。 下載方式&#xff1a;關注“渡江客涂鴉板”&#xff0c;回復st250326獲取免費下載地址 數據需求與技術挑戰&#xff1a; AI技術…

音視頻新人如何快速上手nginx-rtmp-module

一、整體設計架構 nginx-rtmp-module 是 Nginx 的一個擴展模塊&#xff0c;專門為 Nginx 添加了對 RTMP 協議的支持。其核心功能包括&#xff1a; RTMP推流&#xff08;publish&#xff09; RTMP拉流&#xff08;play&#xff09; 流轉發&#xff08;relay&#xff09; 流錄…

vue 封裝 Axios菜鳥教程

1、Axios依賴下載 $ npm install axios 2、以下鏈接為Axios 的api Axios 實例 | Axios中文文檔 | Axios中文網 3、 項目新建request.js&#xff0c;文件名稱按照駝峰命名法就可以 4、封裝request.js代碼如下 import axios from "axios"//創建axios實例&#xff0…

[項目]基于FreeRTOS的STM32四軸飛行器: 十一.MPU6050配置與讀取

基于FreeRTOS的STM32四軸飛行器: 十一.MPU6050 一.芯片介紹二.配置I2C三.編寫驅動四.讀取任務的測試五.MPU6050六軸數據的校準 一.芯片介紹 芯片應該放置在PCB中間&#xff0c;X Y軸原點&#xff0c;敏感度131表示范圍越小越靈敏。理想狀態放置在地面上X&#xff0c;Y&#xf…

iOS常見網絡框架

URLSession、Alamofire 和 Moya 1. URLSession 1.1 核心概念 URLSession 是 Apple 官方提供的網絡請求 API&#xff0c;封裝在 Foundation 框架中。它支持 HTTP、HTTPS、FTP 等協議&#xff0c;可用于&#xff1a; ? ? 普通網絡請求&#xff08;GET/POST&#xff09; ? …

AOA(到達角度)與TOA(到達時間)兩個技術的混合定位,MATLAB例程,自適應基站數量,三維空間下的運動軌跡,濾波使用UKF(無跡卡爾曼濾波)

本文介紹一個MATLAB代碼,實現了三維動態目標非線性定位與濾波系統,通過融合 到達角(AOA) 和 到達時間(TOA) 的混合定位方法,結合 無跡卡爾曼濾波(UKF) 處理非線性觀測模型,優化軌跡精度。代碼支持自適應基站數量配置,適用于復雜非線性場景的定位研究。 文章目錄 運行…

Ubuntu 重置密碼方法

目錄 修改過 root 密碼&#xff0c;重置密碼的方法沒改過 root 密碼?&#xff0c;重置密碼的方法 修改過 root 密碼&#xff0c;重置密碼的方法 Ubuntu 默認禁用root用戶&#xff0c;意思就是安裝好Ubuntu系統后&#xff0c;root用戶默認是沒有密碼的&#xff0c;普通用戶通過…