networking - 一起解析 TCP 数据包
问题描述
我正在开发一个获取 pcap 文件的工具(在本例中来自wireshark),并尝试从 TCP 数据包中解析出数据。
现在在这种情况下,我只关心一个方向的数据。所以我的逻辑是通过protocol-destIP-sourceIP-destPort-sorcePort将每个wireshark捕获的数据包整理成一个列表。
所以从这一点开始,我现在有一个特定端口上一个方向的数据包列表。
从那里我只想能够按顺序遍历 TCP 有效负载的主体。是否像按序列号排序一样简单?
我会简单地获取捕获的第一个序列号,将有效负载大小添加到它并期望它是下一个发送的 TCP 数据包?还有更多我想念的吗?
我注意到以这种方式对接口进行排序时,最终我会得出一个有意义的序列。我想我可以假设这是下一个流的开始?我知道如果我必须考虑来回的流量会变得更加困难......但在这种情况下,我只想观察一个方向的数据包。
解决方案
Wireshark 捕获网络上的数据包。可能会发生数据包未按顺序到达、数据包已损坏(校验和错误)、存在重复数据包的情况...... - 这忽略了旨在混淆分析的可能攻击。TCP 堆栈将处理所有这些问题,以便应用程序获取正确的数据包,但 Wireshark 在 TCP 堆栈之外工作。因此,虽然在大多数情况下,您的简单过程可能会起作用(假设您至少检查 TCP 标志以了解连接的开始和结束),但在某些情况下它可能会失败。
推荐阅读
- unicode - “Unicode 换行算法”(UAX#14)的实现
- maven - AWS 上 Oracle RDS 的 Maven 依赖项
- aframe - 从this.el遍历到parentEl返回undefined,反之则返回元素
- react-native - 无法在 iOS 模拟器错误上运行成功构建的 react-native 项目
- python-3.x - 无法安装 Twisted
- android-studio - 找不到与包名称匹配的客户端
- appcelerator - Appcelerator 在运行时更改应用颜色主题
- javascript - Javascript json 对象
- javascript - 在变量中存储不同的 NaN 值
- javascript - 如何务实地从 background.js 打开弹出扩展