gpt4 book ai didi

c - 通过内核模块发送数据包

转载 作者:IT王子 更新时间:2023-10-29 00:22:30 25 4
gpt4 key购买 nike

我正在尝试创建一个内核模块,它将能够从通过 netfilter Hook 接收的数据包中发送修改后的数据包。我正在使用提供的代码框架 here .我仅使用以下代码在内核中创建一个原始套接字:

struct socket *sockptr;
sock_create(PF_INET, SOCK_RAW, IPPROTO_TCP, &sockptr);

sendpacket 函数是这样调用的:

len = sendpacket(sockptr, dev, IPPROTO_TCP, duplicate, ntohs(dupiph->tot_len));

socketptr 是我创建的原始套接字,dev 是 Hook 函数传递给我的 net_device,duplicate 是原始数据包的修改副本。

调用 dev_queue_xmit 的返回表明数据包已成功传输,但我看不到线路上的数据包。我有两个问题:首先,我希望能够更好地调试正在发生的事情,因此非常感谢任何与此相关的建议。另外,我想知道我是否正确处理了套接字创建,或者是否缺少某种类型的配置。这对我来说都是全新的,所以很可能是我遗漏了一些愚蠢的东西。

最佳答案

您不太可能需要修改内核来完成您的任务。您是否考虑过使用 tun 或 tap 接口(interface)以便可以在用户空间中完成所有工作?这是一个教程:http://backreference.org/2010/03/26/tuntap-interface-tutorial/

关于c - 通过内核模块发送数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com