当前位置: 首页 > news >正文

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

相关文章:

  • RK3588产测软件介绍
  • kafka原理看这一篇就够了
  • 【经验分享】Ubuntu如何设置swap交换
  • HIS系统源码,云HIS源码,二级医院信息管理系统源码,预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站、护士工作站
  • 推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
  • Redis的简单使用
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • Python-对象与json互转-json读写-文件读写
  • 2023年中国老年人护理用品市场规模及前景,呈现快速发展趋势[图]
  • 新能源充电桩工业4G路由器应用,推动绿色出行,响应环保理念
  • 【C++心愿便利店】No.14---C++之探索list底层原理
  • React自定义Hook之useRequest
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • 有SSL证书的网站更容易收录吗?
  • CentOS7安装Docker遇到的问题笔记
  • [PHP内核探索]PHP中的哈希表
  • 【css3】浏览器内核及其兼容性
  •  D - 粉碎叛乱F - 其他起义
  • Druid 在有赞的实践
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • HTTP--网络协议分层,http历史(二)
  • Java小白进阶笔记(3)-初级面向对象
  • sessionStorage和localStorage
  • Spring声明式事务管理之一:五大属性分析
  • 当SetTimeout遇到了字符串
  • 浮现式设计
  • 给Prometheus造假数据的方法
  • 关于 Cirru Editor 存储格式
  • 聊聊directory traversal attack
  • 区块链技术特点之去中心化特性
  • 使用agvtool更改app version/build
  • 世界上最简单的无等待算法(getAndIncrement)
  • 学习笔记TF060:图像语音结合,看图说话
  • 最近的计划
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #mysql 8.0 踩坑日记
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (1)虚拟机的安装与使用,linux系统安装
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (未解决)macOS matplotlib 中文是方框
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Scala的“=”符号简介
  • (转)母版页和相对路径
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET 中 GetProcess 相关方法的性能
  • .NET框架
  • .NET企业级应用架构设计系列之技术选型
  • .NET委托:一个关于C#的睡前故事
  • .NET学习教程二——.net基础定义+VS常用设置
  • @SuppressWarnings注解
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • @Transactional 竟也能解决分布式事务?
  • @WebServiceClient注解,wsdlLocation 可配置