• 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

  • 相关阅读:
    哔哩哔哩秋招Java二面
    csdn 格式规范
    5. Spring Boot配置绑定
    Vue - 将页面内容下载为 pdf 格式文件(html2canvas + jspdf)
    咖啡技能知识培训|咖啡冲煮有哪几个基础要素
    硬盘坏了数据可以恢复吗?
    鸿蒙开发工具DevEco Studio的下载和安装
    Photoshop套索工具使用指南:解锁自由选区的艺术
    网络安全(黑客)—自学笔记
    S32K148_CAN驱动(裸机开发)
  • 原文地址:https://blog.csdn.net/lileiyuyanqin/article/details/134524937