Wireshark添加自定義協議解析

最終效果如下:
在這里插入圖片描述

參考文檔:https://mika-s.github.io/topics/
此參考文檔中7個例子教我們如何編寫lua腳本去識別我們自定義的協議

安裝Wireshark

https://www.wireshark.org/上下載安裝包安裝即可。我的安裝路徑是D:\Install\Wireshark,在Wireshark的菜單:幫助->關于->文件夾中有安裝位置:
在這里插入圖片描述

要解析的協議

本次要解析的協議是UDP協議,在UDP基礎上封裝了一層應用層協議。協議明細如下:
在這里插入圖片描述

編寫腳本前需要明確的幾個對象

  • Proto:協議對象,有一個name的屬性,在構造函數第一個參數時傳入,決定了這里顯示什么(配合函數中的賦值)
    在這里插入圖片描述

  • ProtoField:協議字段,有如下方法

    • uint8/int8(filter_string,display_name,display_type)
    • uint16/int16(filter_string,display_name,display_type)
    • uint32/int32(filter_string,display_name,display_type)
      在這里插入圖片描述

編寫插件腳本

lua文件的位置有兩種位置可以放:

  • 任意位置,此時需要在init.lua中添加dofile把lua文件添加進去
  • plugins文件夾,此時wireshark啟動時自動執行,按Ctr+Shift+L會重新加載
    我們采用第2中方式
    D:\Install\Wireshark\plugins中新建一個test.lua文件
    在lua腳本中添加如下代碼:
--協議對象 構造函數第一個參數:顯示在協議列,第二個參數:協議描述
local my_request=Proto('myrequst','my custom request')-- 要顯示的字段,構造函數第一個參數:用于上方搜索欄過濾的 第二個參數:顯示在下方協議中的字段 第三個字段:顯示十進制還是十六進制
local time_second=ProtoField.uint8("myrequst.time_second","秒",base.HEX)
local time_minute=ProtoField.uint8("myrequst.time_minute","分",base.HEX)
local time_hour=ProtoField.uint8("myrequst.time_hour","時",base.HEX)
local time_day=ProtoField.uint8("myrequst.time_day","天",base.HEX)
local time_month=ProtoField.uint8("myrequst.time_month","月",base.HEX)
local time_year=ProtoField.uint8("myrequst.time_year","年",base.HEX)local group=ProtoField.uint8("myrequst.group","組",base.HEX)local cmd=ProtoField.uint16("myrequst.cmd","命令",base.DEC)local len=ProtoField.uint32("myrequst.length","body長度",base.DEC)-- 將字段添加到協議對象
my_request.fields={time_second,time_minute,time_hour,time_day,time_month,time_year,group,cmd,len}-- 此方法返回bool,返回true表示自定義的協議驗證通過,會傳入三個參數
-- buffer:包,去掉繼承協議之后的內容。比如繼承udp,那udp的報文就被去掉了,buffer只表示udp的應用層內容
-- pinfo:顯示抓包內容列表的信息。賦值協議名稱時會用到
-- tree:下方的樹結構
local function checker(buffer,pinfo,tree)local length=buffer:len()if length<26 thenreturn falseend-- 頭判斷if  buffer(0,1):uint()~=0x48 orbuffer(1,1):uint()~=0x54 orbuffer(2,1):uint()~=0x56 orbuffer(3,1):uint()~=0x58 orbuffer(4,1):uint()~=0x41 orbuffer(5,1):uint()~=0x58 orbuffer(6,1):uint()~=0x42 orbuffer(7,1):uint()~=0x58 orbuffer(8,1):uint()~=0x49 orbuffer(9,1):uint()~=0x58 thenreturn falseend-- 賦值協議列pinfo.cols.protocol=my_request.name--字段解析local subtree=tree:add(my_request,buffer(),"我自定義的請求")subtree:add(time_second,buffer(10,1))subtree:add(time_minute,buffer(11,1))subtree:add(time_hour,buffer(12,1))subtree:add(time_day,buffer(13,1))subtree:add(time_month,buffer(15,1))subtree:add(time_year,buffer(16,1))subtree:add(group,buffer(18,1))subtree:add_le(cmd,buffer(19,1))subtree:add(len,buffer(21,4))return true
end
-- 注冊,讓wireshark解析包的時候會調用checker
my_request:register_heuristic("udp",checker)

保存lua腳本之后,按Ctr+Shift+L就可以看到效果啦

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

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

相關文章

Leetcode—389.找不同【簡單】

2023每日刷題&#xff08;五十五&#xff09; Leetcode—389.找不同 實現代碼 char findTheDifference(char* s, char* t) {int len strlen(s);int len2 len 1;int a[26] {0};int b[26] {0};if(len 0) {return t[0];}for(int i 0; i < len; i) {int idx s[i] - a;…

HTML的img常見應用屬性

1、src&#xff1a;指定圖像的URL&#xff0c;即圖像的路徑。 2、alt&#xff1a;指定圖像的替代文本&#xff0c;當圖像無法顯示時&#xff0c;會顯示替代文本。 3、width&#xff1a;指定圖像的寬度&#xff0c;可以使用像素值或百分比。 4、height&#xff1a;指定圖像的…

【設計模式--創建型--建造者模式】

建造者模式 建造者模式概述結構結果優缺點使用場景 將上述案例改為鏈式調用結果 建造者模式 概述 將一個復雜對象的構建與表示分離&#xff0c;使得同樣的構建過程可以創建不同的表示。 分離了部件的構建&#xff08;由Builder來負責&#xff09;和裝配&#xff08;由Direct…

辦公word-從不是第一頁添加頁碼

總結 實際需要注意的是&#xff0c;分隔符、分節符和分頁符并不是一個含義 分隔符包含其他兩個&#xff1b;分頁符&#xff1a;是增加一頁&#xff1b;分節符&#xff1a;指將文檔分為幾部分。 從不是第一頁插入頁碼1步驟 1&#xff0c;插入默認頁碼 自己可以測試時通過**…

win11 powershell conda 激活環境后不顯示環境名稱

win11 powershell conda 激活環境后不顯示環境名稱 問題現象解決方法 問題現象 安裝 Anaconda 后在 powershell 中激活環境后&#xff0c;命令行前面不顯示環境名稱 解決方法 在 powershell 中執行 conda init 重新打開 poweshell 出現以下問題&#xff0c;請參考 win11 p…

華為OD機試真題-5G網絡建設-2023年OD統一考試(C卷)

題目描述: 現需要在某城市進行5G網絡建設,已經選取N個地點設置5G基站,編號固定為1到N,接下來需要各個基站之間使用光纖進行連接以確保基站能互聯互通,不同基站之間架設光纖的成本各不相同,且有些節點之間已經存在光纖相連,請你設計算法,計算出能聯通這些基站的最小成本…

HarmonyOS鴻蒙應用開發——HTTP網絡訪問與封裝

文章目錄 基本使用封裝參考 基本使用 鴻蒙應用發起HTTP請求的基本使用&#xff0c;如下&#xff1a; 導入http模塊創建httpRequest對象發起http請求&#xff0c;并處理響應結果 第一、導入http模塊&#xff1a; import http from ohos.net.http第二、創建httpRequest對象&a…

二分查找|滑動窗口|前綴和|LeetCode209: 長度最小的子數組

長度最短的子數組 作者推薦 【動態規劃】【廣度優先】LeetCode2258:逃離火災 本文涉及的基礎知識點 二分查找算法合集 C算法&#xff1a;前綴和、前綴乘積、前綴異或的原理、源碼及測試用例 包括課程視頻 滑動窗口 題目 給定一個含有 n 個正整數的數組和一個正整數 target…

facebook回傳

1、引入依賴 首先引入依賴&#xff0c;這里我使用API v14.0&#xff1a; <dependency><groupId>com.facebook.business.sdk</groupId><artifactId>facebook-java-business-sdk</artifactId><version>14.0.0</version></dependen…

在IDEA中創建Maven項目時沒有src文件、不自動配置文件

錯誤示例&#xff1a; 沒有src文件&#xff0c;并且沒有自動下載相關的配置文件 對我這中情況無效的解決辦法&#xff1a; ①配置好下列圖中圈出來的文件 ②在VM選項中輸入&#xff1a;“-DarchetypeInternal” ③點擊應用&#xff0c;再點擊確定 ④還是不行 解決辦法&#x…

GridBagLayout GridBagConstraints 筆記231130

實例化使用模板 GridBagLayout gbl new GridBagLayout(); // gbl.columnWidths new int[]{200,200,200}; // 用數組設置列 // gbl.rowHeights new int[]{100,100,100,100,100}; // 用數組設置行GridBagConstraints gbc new GridBagConstraints();/*** gridBagConstrain…

14-1、IO流

14-1、IO流 lO流打開和關閉lO流打開模式lO流對象的狀態 非格式化IO二進制IO讀取二進制數據獲取讀長度寫入二進制數據 讀寫指針 和 隨機訪問設置讀/寫指針位置獲取讀/寫指針位置 字符串流 lO流打開和關閉 通過構造函數打開I/O流 其中filename表示文件路徑&#xff0c;mode表示打…

用Guava做本地緩存示例

緩存的作用 提升系統性能&#xff0c;暫時在內存中保存業務系統的數據處理結果&#xff0c;并且等待下次訪問使用 本地緩存和分布式緩存 緩存分為本地緩存與分布式緩存。本地緩存為了保證線程安全問題&#xff0c;一般使用ConcurrentMap的方式保存在內存之中&#xff0c;而常…

【KCC@南京】KCC南京“數字經濟-開源行”活動回顧錄

11月26日&#xff0c;由KCC南京、中科南京軟件研究所、傲空間、PowerData聯合主辦的 KCC南京“數字經濟-開源行” 的活動已圓滿結束。此次活動&#xff0c;3 場主題研討&#xff0c;11 場分享&#xff0c;現場參會人數 60&#xff0c;線上直播觀看 3000&#xff0c;各地小伙伴從…

Android畫布Canvas繪圖scale,Kotlin

Android畫布Canvas繪圖scale&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.…

數據倉庫工具Hive

1. 請解釋Hive是什么&#xff0c;它的主要用途是什么&#xff1f; Hive是一個基于Hadoop的數據倉庫工具&#xff0c;主要用于處理和分析大規模結構化數據。它可以將結構化的數據文件映射為一張數據庫表&#xff0c;并提供類似SQL的查詢功能&#xff0c;將SQL語句轉換為MapRedu…

Windows 和 MacOS 上安裝配置ADB(安卓調試橋)

一、Android 調試橋 (ADB) Android 調試橋&#xff08;ADB&#xff09; 是一款多功能命令行工具&#xff0c;它讓你能夠更便捷地訪問和管理 Android 設備。使用 ADB 命令&#xff0c;你可以輕松執行以下操作 在設備上安裝、復制和刪除文件&#xff1b;安裝應用程序&#xff1…

YOLOV3 SPP 目標檢測項目(針對xml或者yolo標注的自定義數據集)

1. 目標檢測的兩種標注形式 項目下載地址:YOLOV3 SPP網絡對自定義數據集的目標檢測(標注方式包括xml或者yolo格式) 目標檢測邊界框的表現形式有兩種: YOLO(txt) : 第一個為類別,后面四個為邊界框,x,y中心點坐標以及h,w的相對值 xml文件:類似于網頁的標注文件,里面會…

力扣第 375 場周賽(Java)

文章目錄 T1 統計已測試設備代碼解釋 T2 雙模冪運算代碼解釋 T3 統計最大元素出現至少 K 次的子數組代碼解釋 T4 統計好分割方案的數目代碼解釋 鏈接&#xff1a;第 375 場周賽 - 力扣&#xff08;LeetCode&#xff09; T1 統計已測試設備 給你一個長度為 n 、下標從 0 開始的…

JavaEE 08 線程池簡介

前言 前面我們談完了定時器,單例模式,阻塞隊列等的操作并且做了模擬實現,今天我們再來說一說線程池的操作以及一些鎖策略. 注:本章幾乎均為理論篇,實踐較少. 下面就讓我們開始吧. 線程池 我們知道因為進程的頻繁創建和銷毀,帶來的開銷過大,我們無法接受,所以我們引入了更輕量級…