C++ 使用libpcap自动执行TCP连接

C++ 使用libpcap自动执行TCP连接,c++,tcp,libpcap,man-in-the-middle,C++,Tcp,Libpcap,Man In The Middle,我正在编写一个程序,在网关和主机上执行ARP欺骗攻击,然后尝试捕获它们之间的反HTTP通信,并在浏览器上呈现web会话。我正在使用libnet和pcap来实现这些 我已经成功地进行了欺骗,现在我正在尝试制作中继,程序在其中实现主机和网关之间的虚拟连接 我的TCP事务有问题。当主机需要页面时,它首先尝试通过发送TCP SYN数据包与攻击者建立TCP连接(因为它已经被欺骗)。问题是,我的机器(攻击者)不响应SYN,然后受害者重试建立断开连接,发送一系列SYN重传 在我看来,TCP连接是由pcap(或

我正在编写一个程序,在网关和主机上执行ARP欺骗攻击,然后尝试捕获它们之间的反HTTP通信,并在浏览器上呈现web会话。我正在使用libnet和pcap来实现这些

我已经成功地进行了欺骗,现在我正在尝试制作中继,程序在其中实现主机和网关之间的虚拟连接

我的TCP事务有问题。当主机需要页面时,它首先尝试通过发送TCP SYN数据包与攻击者建立TCP连接(因为它已经被欺骗)。问题是,我的机器(攻击者)不响应SYN,然后受害者重试建立断开连接,发送一系列SYN重传

在我看来,TCP连接是由pcap(或内核)自动建立的。是否有任何配置或参数用于设置此设置,或者我需要自己执行TCP事务?如果是这样的话,是否有任何建议,使这与最大性能

谢谢你的建议

Obs.:为了过滤HTTP请求,我在pcap上使用以下过滤器,可在

tcp端口80和((ip[2:2]-((ip[0]&0xf)2))!=0)

Libpcap是一个用于读取原始网络数据包的库,在带有
pcap\u sendpacket()
/
pcap\u inject()
的版本中,它用于发送原始网络数据包。“原始网络数据包”表示原始链路层数据包;如果您想假装是TCP实现,您必须在原始数据包读取/发送机制上提供自己的TCP实现以及IPv4或IPv6实现。

好的,对于任何一个在这个主题上遇到困难的人,我找到了一个聪明的方法来实现受害者和服务器之间的连接(我想哪条路是对的)

您不必执行两个连接来发送HTTP消息,一个与网关连接,另一个与受害者连接,而只需让TCP SYN、ACK和其他内容通过。您的行为就像一个“管道”


因此,当您收到来自受害者的SYN时,只需将其发送到网关,网关会将其发送到服务器并使用SYN ACK进行应答。当然,您必须为发送方和目标方伪造反以太网报头,以验证欺骗行为。

这肯定回答了我的问题!但我找到了另一种方法来实现服务器和vi之间的正确连接ctim。发布在下面。你怎么能阻止它呢?Libpcap没有任何数据包过滤功能。对不起,我不理解你的问题。你是说“我该如何防止ARP欺骗攻击?”还是我该如何阻止TCP通过?实际上,ibpcap有数据包过滤功能,这一点已在上一篇文章中记录
tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)