运维开发网

在TCP标头中操作ISN号码的最有效方法

运维开发网 https://www.qedev.com 2020-07-05 08:53 出处:网络 作者:运维开发网整理
我目前正在尝试编写一个能够创建稳定的TCP连接并完全控制ISN号码的程序.我一直在用C语言写作,而且我的知识非常有限,已经达到了极限,我想知道是否有更好的方法. 我尝试的是手动构建标头,使用原始套接字发送和接收数据包而不会干扰内核,这是一个挑战. 因此,无论语言如何,您认为操作ISN的最有效和最简单的方法是什么? 那么,ISN是以随机方式生成的,以防止ISN预测攻击( http://www.the
我目前正在尝试编写一个能够创建稳定的TCP连接并完全控制ISN号码的程序.我一直在用C语言写作,而且我的知识非常有限,已经达到了极限,我想知道是否有更好的方法.

我尝试的是手动构建标头,使用原始套接字发送和接收数据包而不会干扰内核,这是一个挑战.

因此,无论语言如何,您认为操作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)

并尝试实现它,如果你想:)

0

精彩评论

暂无评论...
验证码 换一张
取 消