qt和window抓包程序

1.思路

        使用原始套接字,将网卡设置为混杂模式,监听该网卡的数据。

2. 了解协议封包和协议层

    下图是tcp封包详细过程

数据包传输情况

在TCP/IP协议栈中的每一层为了能够正确解析出上层的数据包,从而使用一些“协议类型”来标记,详细如下图

1)链路层 以太帧结构(封包)

a. 前同步码:   

        用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为 7 个字节,1 和 0 交替。
b. 帧开始定界符 :   

        帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。
c. 目的地址:

    接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
d. 源地址:

    发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。
类型    上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。
e. 数据:

    也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。在 Linux 中,使用 ifconfig 命令可以查看该值,通常为 1500。
f. 帧检验序列 FCS:

    检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。
 

2)  网络层 ip数据报结构

整体ip结构(包含udp,tcp)

3)传输层 tcp数据报结构

       udp结构

3.QT源码

.h

.cpp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode538. Convert BST to Greater Tree

文章目录 一、题目二、题解 一、题目 Given the root of a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus the sum of all keys greater than the original key in BST. As a remin…

高压放大器使用方法介绍

高压放大器是一种用于放大高压信号的电子设备,常用于科学研究、工业应用和医疗设备等领域。它可以将低电压信号放大到较高的电压水平,以满足特定应用的需求。 使用高压放大器需要注意以下几个方面: 1.了解设备规格:在使用高压放大…

ubuntu 22.04版本修改时区的操作方法

修改时区比较简单,就是timedatectl set-timezone America/Los_Angeles加systemctl restart systemd-timesyncd,并且服务器重启后时区没有变回去还是修改后的 示例: 目前时区是UTC 0时区伦敦时间,想改成太平洋时区(Pacific Time&a…

《视觉SLAM十四讲》-- 建图

11 建图 11.1 概述 (1)地图的几类用处: 定位:导航:机器人在地图中进行路径规划;避障重建交互:人与地图之间的互动 (2)几类地图 稀疏地图稠密地图语义地图 11.2 单目…

解决Jira导出csv最大限度是1000的问题

JIRA为了防止过多影响性能, 设置了导出CSV的上线为1000,影响了搜索结果导出以及RestAPI。 可以通过以下配置参数修改此限制: 通过JIRA管理界面的"高级设置 “设置以下参数 系统管理 > 系统 > 一般设置>高级设置找到 jira.sea…

char*与char[]的区别

之前在给函数传形参时,char*和char[]我是混着用的,当时感觉它俩用起来没啥差别,就草率地把它俩混为一谈。 但实际上,这俩本质是不同的,只是在作为形参的时候可以互换使用。我这篇博客就是来记录下它俩的区别。 现在我定…

house of husk

利用说明 适用版本: glibc2.23 -- now 利用场景: UAF/大堆块/存在格式化字符的使用 利用条件: 能使 __printf_function_table 处非空 可以往 __printf_arginfo_table 处可写入地址 效果与限制: 可以劫持程序执行流, 但是参数不可控. 利用方式: 劫持 __printf_function_…

034、test

之——全纪录 目录 之——全纪录 杂谈 正文 1.下载处理数据 2.数据集概览 3.构建自定义dataset 4.初始化网络 5.训练 杂谈 综合方法试一下。 leaves 1.下载处理数据 从官网下载数据集:Classify Leaves | Kaggle 解压后有一个图片集,一个提交示…

信息系统项目管理师-范围管理论文提纲

快速导航 1.信息系统项目管理师-项目整合管理 2.信息系统项目管理师-项目范围管理 3.信息系统项目管理师-项目进度管理 4.信息系统项目管理师-项目成本管理 5.信息系统项目管理师-项目质量管理 6.信息系统项目管理师-项目资源管理 7.信息系统项目管理师-项目沟通管理 8.信息系…

只有cpu的时候加载模型

只有cpu的时候加载模型 checkpoint torch.load(model_path, map_locationtorch.device(‘cpu’))

Codeforces Round 910 (Div. 2) --- B-E 补题记录

B - Milena and Admirer Problem - B - Codeforces 题目大意: 现在给出一个无序序列,你可以使用任意次操作将这个无序序列修改为不递减序列,操作为你可以使用两个数a和b来替换ai,序列就变为了 ai-1, a,…

【C++ Primer Plus学习记录】for循环

很多情况下都需要程序执行重复的任务&#xff0c;C中的for循环可以轻松地完成这种任务。 我们来从程序清单5.1了解for循环所做的工作&#xff0c;然后讨论它是如何工作的。 //forloop.cpp #if 1 #include<iostream> using namespace std;int main() {int i;for (i 0; …

Ubuntu文件系统损坏:The root filesystem on /dev/sda5 requires a manual fsck

前言 Ubuntu在启动过程中&#xff0c;经常会遇到一些开故障&#xff0c;导致设备无法正常开机&#xff0c;例如文件系统损坏等。 故障描述 Ubuntu系统启动过程中&#xff0c;出现以下文件系统损坏错误&#xff1a; 产生原因 该故障是由磁盘检测不能通过导致&#xff0c;可能是因…

el-table中的文本居中

el-table中的文本居中 整个表格和内容居中的方式&#xff1a; header-cell-style设置头部居中&#xff1b; cell-style设置单元格内容居中<el-table:data"tableData":header-cell-style"{text-align:center}":cell-style"{text-align:center}&quo…

代码随想录 11.21 || 单调栈 LeetCode 84.柱状图中最大的矩形

84.柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1。求在柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。和 42.接雨水 类似&#xff0c;在由数组组成的柱状图中&#xff0c;根据条件求解。 图…

C++标准模板(STL)- 类型支持 (类型关系,检查是否能转换一个类型为另一类型,std::is_convertible)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

打破思维的玻璃罩

你是否听过这个实验&#xff1a;将一只跳蚤放进杯中&#xff0c;它很轻松就能跳出来。给杯子加上玻璃罩后&#xff0c;跳蚤一开始会不断尝试跳出来&#xff0c;但发现每次的努力都是徒劳的&#xff0c;慢慢就不再尝试。即便有一天玻璃罩被拿掉&#xff0c;跳蚤也不会认为自己可…

NLP:使用 SciKit Learn 的文本矢量化方法

一、说明 本文是使用所有 SciKit Learns 预处理方法生成文本数字表示的深入解释和教程。对于以下每个矢量化器&#xff0c;将给出一个简短的定义和实际示例&#xff1a;one-hot、count、dict、TfIdf 和哈希矢量化器。 SciKit Learn 是一个用于机器学习项目的广泛库&#xff0c;…

new Vue() 发生了什么

前言: 在Vue.js中&#xff0c;当你创建一个新的Vue实例时&#xff0c;通过 new Vue() 发生了一系列重要的操作&#xff0c;包括Vue实例的初始化、数据绑定、模板编译等。这个过程是Vue应用的核心&#xff0c;本文将深入探讨new Vue()发生了什么以及其原理&#xff0c;提供示例…

官宣!Sam Altman加入微软,OpenAI临时CEO曝光,回顾董事会‘’政变‘’始末

11月20日下午&#xff0c;微软首席执行官Satya Nadella在社交平台宣布&#xff0c;“微软仍然致力于与 OpenAI的合作伙伴关系。同时欢迎Sam Altman 和 Greg Brockman 及其团队加入微软&#xff0c;领导一个全新的AI研究团队”。 Sam第一时间对这个消息进行了确认。 此外&…