在linux中使用原始套接字发送原始数据(PSH-ACK)

时间:2013-03-26 12:59:34

标签: c linux raw-sockets

我编写了一些假装建立连接的程序,然后发送一个数据包;通过在linux中使用原始套接字和C语言。

很遗憾,我已经实现了该程序,因为建立了连接。我现在的问题是我不能花那么多时间,猜测如何填充psh-ack(数据包),通过从服务器接收ACK,还可以看到netcat的输出缓冲区上的数据...

所以,请问,任何人都可以帮助格式化数据包吗?我花了这么多时间,给你一个完整的流量记录很容易。

提前致谢。希望早日提出建议......;)。

PS:如果不清楚,我假装实现自己的用户空间tcp堆栈只是为了加快tcp网络的进程,只是为了在非阻塞程序执行中嵌入网络进程,以及快速的网络结果集过程

正如你们中的一些人可能知道的那样,linux盒子会自动向发送和SYN_ACK的服务器发送答案,但RST连接,并且无法通过实现TCP堆栈来建立连接。所以,我应该说,我正在使用grsec的保护措施:“TCP / UDP blackhole DoS预防”,它阻止Linux内核发送不希望的响应“不连贯”的网络流量。

就是这样。

1 个答案:

答案 0 :(得分:0)

ip.len = tcp_data_sz + tcphdr_sz + iphdr_sz

tcp.id = id + 1
tcp.seq = same as ACK of three way handshake
tcp.ack_seq = same as ACK of three way handshake

pseudo_hdr.len = tcp_data_sz + tcphdr_sz

tcp.check = (size: psehdr + tcphdr + tcpdata) (pad with 00's until size % 2 = 0).

此链接很有用:http://www.arcesio.net/checksum/checksumTCP.html(大多数西班牙文和英文编辑)。

感谢所有4人观看。

Linuxios:感谢您的好评,现在我找到了解决方案。 (我的方法比普通的linux接口快:)。