對WireShark 中的UDP抓包數據進行解析

對WireShark 中的UDP抓包數據進行解析

本文嘗試對 WireShark 中抓包的 UDP 數據進行解析。 但是在嘗試對 TCP 中的 FTP 數據進行解析的時候,發現除了從端口號進行區分之外, 沒有什么好的方式來進行處理。


import numpy as np
import matplotlib.pyplot as plt
from IPython import embed
from collections import Counter
import  pyshark
import pcapng
from datetime import datetime
import dpkt
import socket
from dpkt.utils import mac_to_str, inet_to_str# https://zhuanlan.zhihu.com/p/582336672
# https://blog.csdn.net/simonchi/article/details/105682118#打開抓包文件cnt =  2
old_timestamp = 0
file_path = "./host_pc.pcapng"time_list_pc_to_control = []
time_list_control_to_pc = []
data_list = []joint_cmd = []
joint_fd = []
with open(file_path,"rb") as fp:pcapng_data = dpkt.pcapng.Reader(fp)for timestamp, buf  in pcapng_data:eth = dpkt.ethernet.Ethernet(buf)cnt += 1## Ethernet_II 幀格式# ## 1、目標 Mac 地址# eth.dst# ## 2、源 Mac 地址# eth.src## 3、得到Ethernet II 數據幀的類型。類型字段(Type )用于標識數據字段中包含的高層協議。類型字段取值為0x0800的幀代表IP協議幀;類型字段取值為0x0806的幀代表ARP協議幀。## 0x0800: IP IP協議## IPv4:     0x0800## ARP:      0x0806## RARP:     0x0835## IPV6:     0x86DD## EtherCAT: 0x88A4# print(hex(eth.type))# 說明是ARP協議: “Address Resolution Protocol”(地址解析協議)if eth.type == 0x0806:ip = eth.data# Hardware typeprint(ip.hrd)# protocol typeprint(ip.pro)# Hardware sizeprint(ip.hln)# Protocol sizeprint(ip.pln)# Opcode request: 1 是 request, 2 是 replyprint(ip.op)# Sender MAC addressprint(mac_to_str(ip.sha))# Sender IP addressprint(inet_to_str(ip.spa))# Target MAC addressprint(mac_to_str(ip.tha))# Target IP addressprint(inet_to_str(ip.tpa))# 說明是 IPV4 協議if eth.type == 0x0800:## 4、數據字段(Data )是網絡層數據。ip = eth.data## 得到 TCP/IP 數據包tcp = ip.data# Internet Protocol version 4 的解析# Versionprint(ip.v)# Header lengthprint(ip.hl)# Differentiated Service Fieldprint( ip.df)# Total lengthprint(ip.len)# Identificationprint(ip.id)# Time to Liveprint(ip.ttl)# Protocolprint(ip.p)# Source addressprint(inet_to_str(ip.src))# Destionation addressprint(inet_to_str(ip.dst))# print(type(ip))# src = socket.inet_ntoa(ip.src)# dst = socket.inet_ntoa(ip.dst)# sport = tcp.sport# dport = tcp.dport# print(f'Source IP: {ip.src}')# print(f'Destination IP: {ip.dst}')# print(f'Source Port: {tcp.sport}')# print(f'Destination Port: {tcp.dport}')# print("[+] 源地址: {}:{} --> 目標地址:{}:{}".format(src,sport,dst,dport))# print('IP: %s -> %s   (len=%d ttl=%d DF=%d MF=%d offset=%d)\n' %#         (inet_to_str(ip.src), inet_to_str(ip.dst), ip.len, ip.ttl, ip.df, ip.mf, ip.offset))# 當編號為 1 時,表示上層用的是 ICMP 協議–傳輸層的協議# 當編號為 6 時,表示上層用的是 TCP 協議–傳輸層的協議# 當編號為 17 時,表示上層用的是 UDP 協議–傳輸層的協議# if(type(ip) == dpkt.ip.IP):protocol = ip.pif protocol == 1:# ICMP 的解析: Internet control message Protocolicmp_data = ip.data# 標識ICMP報文的類型,從類型值來看ICMP報文可以分為兩大類。第一類是取值為1~127的差錯報文,第2類是取值128以上的信息報文icmp_data.type# 占一字節,標識對應ICMP報文的代碼。它與類型字段一起共同標識了ICMP報文的詳細類型icmp_data.codeif protocol == 6:# Transmission Control Protocol 協議中的數據包tcp_data = ip.data# Source porttcp_data.sport# Destionation porttcp_data.dport# Sequence Numbertcp_data.seq# Acknowledgment Numbertcp_data.ack# Flagtcp_data.flags# Windowstcp_data.win# Checksumtcp_data.sum=49681# 用戶下發的 TCP 協議內容tcp_data_data = tcp_data.data# 判斷是否是 FTP協議,一個是看端口是否是21# ftp:21、20# ssh :22 # telnet:23# HTTP: 80# HTTPS: 443# TFTP: 69# DNS: 53# SNMP: 161# DHCP: 67/68if protocol == 17:# User Datagram protocol 協議中的數據包udp_data = ip.data# Destionation portudp_data.dport# Source portudp_data.sport# Lengthudp_data.ulen# 用戶下發的UDP協議內容udp_data_data = udp_data.data# 用戶下發數據的長度len(udp_data_data)# 解析在 UDP 中的數據if((protocol == 17) and (ip.dst == b'\xc0\xa8\nx') and (tcp.dport == 2095) ):a = str(ip.data.data)b = a.split(",")# 得到對應的時間戳time_list_pc_to_control.append(timestamp)data_list.append(float(b[1]))

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

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

相關文章

云原生安全基石:Linux進程隔離技術詳解

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、基礎概念 進程隔離是操作系統通過內核機制將不同進程的運行環境和資源訪問范圍隔離開的技術。其核心目標在于: 資源獨占:確保…

云跡機器人底盤調用

云跡機器人底盤調用還是比較友好的,就是純socket收發指令就能實現,今天實現一個底盤移動到指定點位功能。底盤的默認IP是192.168.10.10通訊端口是31001,測試機與底盤接入統一網絡后直接發指令即可。本文給出兩種語言調用源碼,選擇…

勇闖Chromium—— Chromium的多進程架構

問題 構建一個永不崩潰或掛起的渲染引擎幾乎是不可能的,構建一個絕對安全的渲染引擎也幾乎是不可能的。 從某種程度上來說,2006 年左右的網絡瀏覽器狀態與過去單用戶、協作式多任務操作系統的狀況類似。正如在這樣的操作系統中,一個行為不端的應用程序可能導致整個系統崩潰…

MYSQL中的分庫分表及產生的分布式問題

分庫分表是分布式數據庫架構中常用的優化手段,用于解決單庫單表數據量過大、性能瓶頸等問題。其核心思想是將數據分散到多個數據庫(分庫)或多個表(分表)中,以提升系統的吞吐量、查詢性能和可擴展性。 一&am…

GAMES104 Piccolo引擎搭建配置

操作系統:windows11 家庭版 inter 17 12 th 顯卡:amd 運行內存:>12 1、如何構建? 在github下載:網址如下 https://github.com/BoomingTech/Piccolo 下載后安裝 git、vs2022 Git Visual Studio 2022 IDE - …

頁表:從虛擬內存到物理內存的轉換

目錄 引言 虛擬內存 頁表 單級頁表 頁表項 單級頁表的不足 二級頁表 四級頁表 快表TLB 結語 引言 一個系統中,CPU和內存是被所有進程共享的,而且一個系統中往往運行著多個進程。如果一個進程不小心寫了另一個進程的內存,那么被寫入…

互聯網大廠Java求職面試:短視頻平臺大規模實時互動系統架構設計

互聯網大廠Java求職面試:短視頻平臺大規模實時互動系統架構設計 面試背景介紹 技術總監(嚴肅臉): 歡迎來到我們今天的模擬面試,我是技術部的李總監,負責平臺后端架構和高可用系統設計。今天我們將圍繞一個…

網絡段、主機段、子網掩碼

子網掩碼把 IP 切割成了網絡段和主機段兩部分。同一網段下的不同主機之間可以互通網絡。 掩碼 IPV4 默認情況下 IP 地址 192.168.0.x 可以分配 256 個主機地址(不考慮首尾兩個特殊的地址時)。 假設我們只需要用到 8 個主機,就可以借助子網掩…

從零搭建SpringBoot Web 單體項目2、SpringBoot 整合數據庫

系列文章 從零搭建SpringBoot Web單體項目【基礎篇】1、IDEA搭建SpringBoot項目 從零搭建 SpringBoot Web 單體項目【基礎篇】2、SpringBoot 整合數據庫 目錄 一、項目基礎環境說明 二、數據庫整合流程 1. 添加 MyBatis-Plus 相關依賴(pom.xml) 2…

4款頂級磁力下載工具,速度提升器,可以變下變播

今天給大家帶來一些超給力的磁力下載工具,速度飛快,最高可達20MB/s,而且還能邊下邊播! 下載鏈接:夸克網盤分享(點擊藍色字體自行保存下載) 一、柚子下載 柚子下載界面干凈,沒有廣…

怎樣判斷服務器網絡質量的狀態?

服務器存儲著企業的重要數據信息,服務器的網絡質量會影響到用戶訪問數據信息的速度,也決定著網站頁面是否會出現卡頓或頁面崩潰的情況,那我們對于服務器中網絡質量的狀態該如何進行判斷呢? 服務器的網絡狀態通常是指服務器與外部網…

零基礎入門Selenium自動化測試:自動登錄edu郵箱

🌟 Selenium簡單概述一下 Selenium 是一個開源的自動化測試工具,主要用于 Web 應用程序的功能測試。它能夠模擬用戶操作瀏覽器的行為(如點擊按鈕、填寫表單、導航頁面等),應用于前端開發、測試和運維領域。 特點 跨…

day36 python神經網絡訓練

目錄 一、數據準備與預處理 二、數據集劃分與歸一化 三、構建神經網絡模型 四、定義損失函數和優化器 五、訓練模型 六、評估模型 在機器學習和深度學習的實踐中,信貸風險評估是一個非常重要的應用場景。通過構建神經網絡模型,我們可以對客戶的信用…

如何確定是不是一個bug?

在軟件測試過程中,我們經常會遇到一些異常現象,但并非所有異常都是Bug。如何準確判斷一個問題是否屬于Bug?本文將從Bug的定義、判定標準、常見誤區和實戰技巧四個方面展開,幫助測試工程師提高Bug判定的準確性。 1. Bug的定義:什么情況下算Bug? 一個Bug(缺陷)通常指軟件…

Lombok與Jackson實現高效JSON序列化與反序列化

引言 在Java開發中,處理JSON數據是常見需求,而Jackson作為廣泛使用的JSON庫,能夠高效地將Java對象與JSON互相轉換。然而,傳統的POJO(Plain Old Java Object)需要手動編寫大量樣板代碼(如getter…

論文閱讀:PURPLE: Making a Large Language Model a Better SQL Writer

論文地址:PURPLE: Making a Large Language Model a Better SQL Writer 摘要 大語言模型(LLM)技術在自然語言到 SQL(NL2SQL)翻譯中扮演著越來越重要的角色。通過大量語料訓練的 LLM 具有強大的自然語言理解能力和基本…

【圖像大模型】ControlNet:深度條件控制的生成模型架構解析

ControlNet:深度條件控制的生成模型架構解析 一、核心原理與技術突破1.1 基礎架構設計1.2 零卷積初始化1.3 多條件控制機制 二、系統架構與實現細節2.1 完整處理流程2.2 性能指標對比 三、實戰部署指南3.1 環境配置3.2 基礎推理代碼3.3 高級控制參數 四、典型問題解…

【從0到1搞懂大模型】chatGPT 中的對齊優化(RLHF)講解與實戰(9)

GPT系列模型的演進 chatgpt系列模型演進的重要節點包含下面幾個模型(當然,這兩年模型發展太快了,4o這些推理模型我就先不寫了) (Transformer) → GPT-1 → GPT-2 → GPT-3 → InstructGPT/ChatGPT(GPT-3.5) → GPT-4 下面介紹一…

2025年AEI SCI1區TOP,改進麻雀搜索算法MSSA+建筑三維重建,深度解析+性能實測

目錄 1.摘要2.麻雀搜索算法SSA原理3.整體框架4.改進SSA算法5.結果展示6.參考文獻7.代碼獲取8.讀者交流 1.摘要 對現有建筑進行高質量的三維重建對于其維護、修復和管理至關重要。圖像采集中的有效視角規劃會顯著影響基于攝影測量的三維重建質量。復雜的建筑結構常常導致傳統視…

鴻蒙開發:如何實現列表吸頂

前言 本文基于Api13 列表吸頂功能,在實際的開發中有著很大的作用,比如可以讓列表層級之間更加分明,減少一定程度上的視覺混亂,由于吸頂的標題會隨著滾動固定在頂部,可以讓用戶無需反復滑動回頂部確認分組位置&#xff…