c++ - 使用 libpcap 自动执行 TCP 连接

标签 c++ tcp libpcap man-in-the-middle

我正在编写一个程序,该程序对网关和主机执行 ARP 欺骗攻击,然后 try catch 它们之间的 HTTP 流量并在浏览器上呈现 Web session 。我正在为此使用 libnet 和 pcap。

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

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

在我的脑海中,我认为 TCP 连接是由 pcap(或内核)自动建立的。是否有用于设置此设置的任何配置或参数,或者我需要自己执行 TCP 事务?如果是这样,对于以最佳性能实现这一点有什么建议吗?

谢谢你的建议。

观察:为了过滤 HTTP 请求,我在 pcap 上使用了以下过滤器,可在 it's man page 上使用

tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)

最佳答案

Libpcap 是一个用于读取原始网络数据包的库,在带有 pcap_sendpacket()/pcap_inject() 的版本中,发送原始网络数据包。 “原始网络数据包”是指原始链路层数据包;如果您想伪装成 TCP 实现,则必须在原始数据包读取/发送机制之上提供您自己的 TCP 实现以及 IPv4 或 IPv6。

关于c++ - 使用 libpcap 自动执行 TCP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847159/

相关文章:

c++ - 这个模板解析冲突叫什么?

c++ - 同一父类(super class)的两个类之间的相互更新

c++ - 如何通过读取文本文件来更改私有(private)变量

java - Android TCP - 应用程序关闭时套接字不会断开连接

tcp - 带有 Firebird 1.0.3 和防火墙设置的事件端口

python - pcap 纳秒 Python

类成员列表的 C++ 模板构造

c++ - 服务器关闭时客户端上的 boost asio 写入操作被阻止

linux - 计算libpcap的丢包

c++ - 是否可以检查接口(interface)是否在 pcap 中激活?