首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Npcap适配器“的pcap_sendpacket剂量工作

"Npcap适配器“的pcap_sendpacket剂量工作
EN

Stack Overflow用户
提问于 2017-03-05 12:53:23
回答 1查看 1.1K关注 0票数 0

我已经安装了npcap驱动程序,它支持回送接口。我安装它是因为我需要将数据包插入回送接口并从中读取它们。我可以使用"pcap_next_ex“轻松地读取环回中的数据包,就像在以太网接口中使用winpcap那样,但是当我想将一个包插入回环时,需要使用"pcap_sendpacket”剂量工作,并且函数返回0(成功)。

我通过打开wireshark并监视输入到接口的数据包来验证这一点,当我在以太网接口上使用pcap_sendpacket时,我可以观察数据包,但是在回环中,当我试图注入它们时,它们不会出现。为什么?

代码语言:javascript
复制
//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支持回送数据包输入吗?

谢谢并问候!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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-r6v0.05-r7,这里有一个例子:https://github.com/hsluoyz/UserBridge。即使在最新的Npcap,它们也应该起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42608576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档