使用netfilter以原始形式获取数据包
Get packet in a raw form with netfilter
我想用UDP封装所有的流量。我可以捕获它并转发。但现在我想做封装。对于这项任务,我需要以原始形式获得完整的数据包。但我该怎么做呢?我的代码是
while ((rv = recv(fd, buf, sizeof(buf), 0)))
{
printf("pkt receivedn");
nfq_handle_packet(h, buf, rv);
}
我应该在回调中这样做吗?如果是,那又是怎么回事?或者我可以在我的回调中设置NF_DROP,并使用buf和rev from while循环?我只能从netfilter找到功能来获得有效载荷,dst, src等,但不是原始形式的数据包。或者我可以重新解释nfq_data为char*?
您确实需要在回调中这样做。您将需要调用nfq_get_payload,它将为您提供指向数据包的整个内容的指针,包括IP和UDP标头。根据您将如何封装数据包,您可以使用指向新数据包数据的指针调用nfq_set_verdict,或者使用NF_DROP删除数据包,然后通过原始套接字或类似的方法重新注入新封装的数据包。
相关文章:
- C++ - 忽略并从其他文件获取数据
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 从 NS3 获取简单的指标,如吞吐量与时间、数据包丢失与时间的关系
- TOS字段从Linux的TCP插座上接收到的数据包获取
- 获取进入UDP数据包的目标端口
- 从IPv6数据包获取ICMPV6标头
- 获取 PCAP 文件中数据包的 IP 地址
- 如何在 C++ 中读取 PCAP 文件以获取数据包信息
- 获取tcp数据包的序列号
- Solaris 10 -- 从 recvmsg() 的 UDP 组播数据包中获取 IP 源地址
- 从Qt应用程序获取原始数据包数据
- 如何获取 mp3 音频数据包以在 C/C++ 中流式传输
- 如何在WinSock2中的DGRAM套接字上获取传入数据包的IP地址
- 使用libpcap获取数据包的uid
- 使用netfilter以原始形式获取数据包
- libpcap获取数据包的进程号
- 是否有一个库可以从数据包的winpcap原始数据中获取ip地址和端口?
- 正在获取UDP数据包的目标地址
- 从pcap文件中获取上一个数据包
- 获取pcap文件的第一个数据包