Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改以太网数据包(来自NIC的数据包)?我可以使用Netfilter挂钩吗? 我想在这个包出现TCP/IP层之前捕获一个包,并用C++和UI将其提供给用户空间。_C++_Linux_Qt_Netfilter - Fatal编程技术网

如何更改以太网数据包(来自NIC的数据包)?我可以使用Netfilter挂钩吗? 我想在这个包出现TCP/IP层之前捕获一个包,并用C++和UI将其提供给用户空间。

如何更改以太网数据包(来自NIC的数据包)?我可以使用Netfilter挂钩吗? 我想在这个包出现TCP/IP层之前捕获一个包,并用C++和UI将其提供给用户空间。,c++,linux,qt,netfilter,C++,Linux,Qt,Netfilter,我该怎么做?Qt&Netfilter可以做到这一点吗?Qt对此无能为力。您需要编写一个netlink队列处理程序。当您的数据包被一条规则匹配时,即-j NFQUEUE,您的用户空间程序将接收这些数据包,从而允许您接受、丢弃或修改数据包(仅在mangle表中)。如果您可以使用GPLv2库,那么应该使用来帮助您 但是请注意,mac层并不完整。这是因为网络代码需要支持各种设备类型,而一些非以太网设备没有MAc地址。在以太网设备上,您得到的通常只是发送方的MAC地址。Qt在那里无能为力。您需要编写一个n

我该怎么做?Qt&Netfilter可以做到这一点吗?

Qt对此无能为力。您需要编写一个netlink队列处理程序。当您的数据包被一条规则匹配时,即-j NFQUEUE,您的用户空间程序将接收这些数据包,从而允许您接受、丢弃或修改数据包(仅在mangle表中)。如果您可以使用GPLv2库,那么应该使用来帮助您


但是请注意,mac层并不完整。这是因为网络代码需要支持各种设备类型,而一些非以太网设备没有MAc地址。在以太网设备上,您得到的通常只是发送方的MAC地址。

Qt在那里无能为力。您需要编写一个netlink队列处理程序。当您的数据包被一条规则匹配时,即-j NFQUEUE,您的用户空间程序将接收这些数据包,从而允许您接受、丢弃或修改数据包(仅在mangle表中)。如果您可以使用GPLv2库,那么应该使用来帮助您


但是请注意,mac层并不完整。这是因为网络代码需要支持各种设备类型,而一些非以太网设备没有MAc地址。在以太网设备上,您得到的通常只是发送方的MAC地址。

您可以使用NFQUEUE和libnetfilter\u队列

iptables -t raw -I PREROUTING -p tcp -j NFQUEUE --queue-num 1
您可以在此网站上看到一个示例:


您可以使用NFQUEUE和libnetfilter\u队列

iptables -t raw -I PREROUTING -p tcp -j NFQUEUE --queue-num 1
您可以在此网站上看到一个示例:


您还可以使用称为数据包套接字的东西。 它们用于在第2层发送或接收原始数据包。因此,基本上,数据包将直接到达您的程序,您可以在其上实现自己的第3层和第4层协议。 检查此官方手册页上的数据包套接字


您还可以使用称为数据包套接字的东西。 它们用于在第2层发送或接收原始数据包。因此,基本上,数据包将直接到达您的程序,您可以在其上实现自己的第3层和第4层协议。 检查此官方手册页上的数据包套接字


非常感谢您的帮助。如何在netfilter钩子预路由到用户空间之前对数据包进行排队,以及如何使用NFQueue Handler处理队列非常感谢您的帮助。如何在netfilter钩子预路由到用户空间之前对数据包进行排队,以及如何使用NFQueue Handler处理队列我想在数据包之前收到数据包时将数据包发送到用户空间从数据链路层交叉并更改它们,然后将更改后的数据包发送到特定的网络。我想在数据包从数据链路层交叉并更改它们之前,将数据包发送到用户空间,然后将更改后的数据包发送到特定的网卡