【问题标题】:How do libraries like Scapy, Npcap, WinPcap, etc., get around Window's limitations on sending raw TCP packets?Scapy、Npcap、WinPcap 等库如何绕过 Window 发送原始 TCP 数据包的限制?
【发布时间】:2022-10-08 01:36:17
【问题描述】:

在尝试自己在 Python 中执行 TCP 握手之后,我了解到现代 Windows 机器不允许通过原始套接字发送 TCP 数据的艰难方法。然而,Python 库 Scapy 似乎可以做到这一点。其他库,如 Npcap 和 WinPcap,似乎也能够在 Windows 上很好地发送原始 TCP 数据。这怎么可能?这些库在幕后做了什么使他们能够绕过这个限制?

【问题讨论】:

  • 如果我没记错的话,pcap 工具会安装某种虚拟网络组件来执行此操作
  • 是的,看我的回答

标签: scapy winpcap npcap


【解决方案1】:

WinPcap(libpcap 的 windows 实现)作者在他们的网站上说:

WinPcap 由一个扩展操作系统以提供低级网络访问的驱动程序和一个用于轻松访问低级网络层的库组成。

所以你的问题的答案是:在 Windows 中,libpcap 的实现(这是 Scapy 根据他们的站点使用的)使用驱动程序来访问低级网络的东西

【讨论】:

  • 感谢你的回答!您之前提到这些驱动程序是“虚拟的”;这到底是什么意思呢?它只是物理设备的软件模拟吗?
  • “虚拟”表示“驱动程序不适用于物理设备”;它甚至不是为了模拟物理设备。它是一个纯粹的软件定义设备,可以从被接入网络堆栈的驱动程序代码填充的缓冲区中读取。
  • 所有这些也适用于 Npcap。
  • 至于发包,也可以写驱动;写入软件定义设备的数据包由其他驱动程序代码注入网络堆栈。
  • 是的,@user16139739 说的 :)
猜你喜欢
  • 2012-08-26
  • 2011-12-18
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2018-06-22
相关资源
最近更新 更多