c - 在 TCP header 中操作 ISN 号的最有效方法

标签 c tcp header network-programming low-level

<分区>

我目前正在尝试编写一个能够创建稳定的 TCP 连接并完全控制 ISN 号的程序。我一直在用 C 语言编写,现在我非常有限的知识已经达到了极限,我想知道是否有更好的方法来做到这一点。

我尝试的是手动构建 header ,使用原始套接字在没有内核干扰的情况下发送和接收数据包,这是一个挑战。

因此,无论使用何种语言,您认为最有效、最简单的 ISN 操纵方法是什么?

最佳答案

好吧,ISN 是以随机方式生成的,以防止 ISN 预测攻击(http://www.thegeekstuff.com/2012/01/tcp-sequence-number-attacks/)。

Linux 网络堆栈,使用函数 tcp_v4_init_sequence 生成 ISN ( http://lxr.free-electrons.com/source/net/ipv4/tcp_ipv4.c#L101 ),此函数调用 secure_tcp_sequence_number 函数 ( http://lxr.free-electrons.com/source/net/core/secure_seq.c#L106 ) 来完成这项工作.看看这个函数并尝试克隆它,以便可以将它与来自用户空间的代码一起使用。

如果您有足够的时间,可以查看 RFC 6528 ( http://www.rfc-editor.org/rfc/rfc6528.txt ) 的第 3 部分,它描述了如何生成 ISN 的算法:

ISN = M + F(localip, localport, remoteip, remoteport, secretkey)

并尝试实现它,如果你愿意的话:)

关于c - 在 TCP header 中操作 ISN 号的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223002/

相关文章:

c - 写入函数指针

c - 读取csv并在C中返回2d数组的函数

无法将 TCP 套接字添加到使用 SDL_NET 设置的套接字

jquery - 隐藏的 jQuery header

python - #include <Python.h> Windows 10 修复没有这样的文件或目录

C:字符数组索引并使用 strcmp

c - (C) 输入后字符数组大小发生变化?

unix - Codeigniter DB 设置 - 为什么 127.0.0.1 有效,而 localhost 无效

TCP 发送不返回导致进程崩溃

ios - 在不重新加载整个表格 View 的情况下更改 UITableView 的部分页眉/页脚标题