我已经安装了npcap驱动程序,它支持回送接口。我安装它是因为我需要将数据包插入回送接口并从中读取它们。我可以使用"pcap_next_ex“轻松地读取环回中的数据包,就像在以太网接口中使用winpcap那样,但是当我想将一个包插入回环时,需要使用"pcap_sendpacket”剂量工作,并且函数返回0(成功)。
我通过打开wireshark并监视输入到接口的数据包来验证这一点,当我在以太网接口上使用pcap_sendpacket时,我可以观察数据包,但是在回环中,当我试图注入它们时,它们不会出现。为什么?
//The array which contains the data of the test package
UCHAR packet[] = "\x..";
//loopback adapter is already opened here
for (int i = 0; i < 100; i++)
printf("%d ", pcap_sendpacket(loopbackAdapter, packet, sizeof(packet)));我在回送接口上使用了这段代码,但是没有工作(但是pcap_sendpacket返回总是成功的),因为在wireshark中没有出现数据包,但是在以太网接口中注入是成功的。
npcap支持回送数据包输入吗?
谢谢并问候!
发布于 2017-03-05 14:32:57
您需要理解的是,每个网络数据包(甚至是环回数据包)都有一个方向: on send (Tx)或on receive (Rx)。通常,当您向Npcap Loopback Adapter发送数据包时,实际上是将其发送到Windows /IP堆栈的Tx路径。在发送Tx数据包时,通常等待本地主机应用程序(或协议、驱动程序等)响应它们。
我不知道你为什么要inject packets to loopback interface and read them from it。Npcap此部分的低级逻辑就是不让当前会话(一个pcap_t)接收该会话注入的数据包。但是其他会话可以看到它们,这就是为什么Wireshark可以看到您注入的数据包。
我只是不知道你为什么要这么做。您似乎不希望任何其他应用程序响应这些数据包。但作为一种解决办法,我认为您可以通过将数据包注入Rx路径来获得所需的东西。通过向Rx发送数据包,这意味着欺骗Windows,使其相信这些数据包是从外部接收的。我不记得如何实现它,但是同一个会话应该能够在Rx中看到这些数据包。
我们没有非常清楚地记录Rx功能。在版本中只有一些描述:v0.05-r6和v0.05-r7,这里有一个例子:https://github.com/hsluoyz/UserBridge。即使在最新的Npcap,它们也应该起作用。
https://stackoverflow.com/questions/42608576
复制相似问题