【问题标题】:How to set initial sequence number of TCP socket如何设置 TCP 套接字的初始序列号
【发布时间】:2012-12-22 17:06:46
【问题描述】:

作为测试的一部分,我需要能够将 TCP 连接的 ISN(初始序列号)初始化为特定值。通常这是操作系统/网络堆栈选择的随机值,但我需要控制初始值。

在 C 或 Python 中有什么方法可以做到这一点吗?

【问题讨论】:

  • 我相当肯定没有任何标准存在于此。您的目标是哪个操作系统?
  • 您需要构建原始数据包并发送它们。这是an example I found for Linux in Python
  • @cnicutar 我对 Linux 或 Windows 都很满意,因为我同时拥有这两个版本。
  • @cottonke:我认为否则无法实现。我们在这里讨论的是更改 TCP 标头,这是相当低级的东西。此外,将它包装在一个函数中一点也不复杂。
  • 您可以将另一个 IP 堆栈(如 lwIP)作为应用程序运行,然后对其进行破解。

标签: python c sockets tcp


【解决方案1】:
  • 下载lwiplwip-contrib
  • 创建一个新的 Tap 接口并将其与您的普通网卡桥接
  • 构建lwip-contrib/ports/unix/proj/minimal 应用并运行它
  • 现在您应该可以 ping lwip 堆栈了
  • TCP 序列号在struct tcp_pcb,值rcv_nxtsnd_nxt
  • 破解 TCP 代码以不随机化这些值并将 TCP 连接添加到 minimal 应用程序

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多