如何 Send/Inject 使用 WinPcap 打包
How to Send/Inject Packet with WinPcap
我正在研究 Windows 10 64-bit
并使用 MinGW-w64
进行编译,还使用 WinPcap
。
正在尝试 send/inject 像这样的数据包:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char **argv)
{
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *cap = pcap_open(argv[1], 65535, 0, 1000, 0, errbuf);
printf("interface capture: %s\n", cap == 0 ? "failed" : "success");
unsigned char packet[100];
// Dst MAC
packet[0] = 0x74;
packet[1] = 0xc6;
packet[2] = 0x3b;
packet[3] = 0x00;
packet[0] = 0x06;
packet[5] = 0xb5;
// Src MAC
packet[6] = 0x74;
packet[7] = 0xc6;
packet[8] = 0x3b;
packet[9] = 0x00;
packet[10] = 0x06;
packet[11] = 0xb5;
// others
for (unsigned char i = 12; i < 100; i++)
{
packet[i] = i;
}
printf("inject packet: %s\n", pcap_sendpacket(cap, packet, 100) == 0 ? "success" : "failed");
return 0;
}
一切看起来都很好,并且在 send/inject 计划上取得了成功。
但是我无法捕获任何数据包,用 Wireshark
进行了检查,仍然没有成功。
我是 运行 作为管理员使用 CMD 的程序,也尝试发送原始 UDP 数据包。
我是不是遗漏了什么或者这是 send/inject 数据包进入网络接口的正确方法?
我的问题解决了!这是因为 Windows 上的 loopback
。
请在此处阅读 Wireshark
维基页面:CaptureSetup/Loopback
已安装 Npcap,它具有 loopback
数据包捕获和注入支持。
对于我的情况,只需从 loopback
网络接口(由 Npcap
驱动程序提供)捕获数据包并将数据包再次注入到此 loopback
网络接口。现在我可以在 Wireshark
中捕获数据包并且 UDP 接收器套接字成功读取我注入的数据包。
我正在研究 Windows 10 64-bit
并使用 MinGW-w64
进行编译,还使用 WinPcap
。
正在尝试 send/inject 像这样的数据包:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char **argv)
{
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *cap = pcap_open(argv[1], 65535, 0, 1000, 0, errbuf);
printf("interface capture: %s\n", cap == 0 ? "failed" : "success");
unsigned char packet[100];
// Dst MAC
packet[0] = 0x74;
packet[1] = 0xc6;
packet[2] = 0x3b;
packet[3] = 0x00;
packet[0] = 0x06;
packet[5] = 0xb5;
// Src MAC
packet[6] = 0x74;
packet[7] = 0xc6;
packet[8] = 0x3b;
packet[9] = 0x00;
packet[10] = 0x06;
packet[11] = 0xb5;
// others
for (unsigned char i = 12; i < 100; i++)
{
packet[i] = i;
}
printf("inject packet: %s\n", pcap_sendpacket(cap, packet, 100) == 0 ? "success" : "failed");
return 0;
}
一切看起来都很好,并且在 send/inject 计划上取得了成功。
但是我无法捕获任何数据包,用 Wireshark
进行了检查,仍然没有成功。
我是 运行 作为管理员使用 CMD 的程序,也尝试发送原始 UDP 数据包。
我是不是遗漏了什么或者这是 send/inject 数据包进入网络接口的正确方法?
我的问题解决了!这是因为 Windows 上的 loopback
。
请在此处阅读 Wireshark
维基页面:CaptureSetup/Loopback
已安装 Npcap,它具有 loopback
数据包捕获和注入支持。
对于我的情况,只需从 loopback
网络接口(由 Npcap
驱动程序提供)捕获数据包并将数据包再次注入到此 loopback
网络接口。现在我可以在 Wireshark
中捕获数据包并且 UDP 接收器套接字成功读取我注入的数据包。