0
A
回答
2
没有必要编写自己的netfilter模块。你可以从用户空间使用来自iptables的QUEUE目标,并编写一个处理队列的守护程序。
这方面的例子相对较少,但有些确实存在。它通常用于过滤,但你也可以(我相信)重新输入修改的数据包(至少在iptables的mangle表中)。
1
试试下面的程序
写iptables规则来传递数据包到用户空间包
# iptables -A INPUT -p TCP -j QUEUE
编译和执行为
$ gcc test.c -lipq
$ sudo ./a.out
源代码
#include <netinet/in.h>
#include <linux/netfilter.h>
#include <libipq.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 2048
static void die(struct ipq_handle *h)
{
ipq_perror("passer");
ipq_destroy_handle(h);
exit(1);
}
int main(int argc, char **argv)
{
int status, i=0;
unsigned char buf[BUFSIZE];
struct ipq_handle *h;
h = ipq_create_handle(0, NFPROTO_IPV4);
if (!h) die(h);
status = ipq_set_mode(h, IPQ_COPY_PACKET, BUFSIZE);
if (status < 0) die(h);
do{
i++;
status = ipq_read(h, buf, BUFSIZE, 0);
if (status < 0) die(h);
switch (ipq_message_type(buf)) {
case NLMSG_ERROR:
fprintf(stderr, "Received error message %d\n",
ipq_get_msgerr(buf));
break;
case IPQM_PACKET:
{
ipq_packet_msg_t *m = ipq_get_packet(buf);
printf("\nReceived Packet");
/****YOUR CODE TO MODIFY PACKET GOES HERE****/
status = ipq_set_verdict(h, m->packet_id, NF_ACCEPT, 0, NULL);
if (status < 0) die(h);
break;
}
default:
fprintf(stderr, "Unknown message type!\n");
break;
}
} while (1);
ipq_destroy_handle(h);
return 0;
}
相关问题
- 1. 修改数据包的netfilter
- 2. 在netfilter模块中重新注入修改的数据包
- 3. Linux传入/传出数据包修改模块
- 4. 本地处理的数据包上的netfilter事件(netfilter C内核模块代码)
- 5. 如何使用netfilter捕获数据包?
- 6. 修改子模块
- 7. 修改Webform模块
- 8. LSP数据包修改
- 9. DPDK - 数据包修改
- 10. 修改linux内核中的现有模块
- 11. 如何破解Linux Netfilter-iptable?
- 12. 如何使用winpcap修改数据包
- 13. 关于linux内核模块
- 14. 在NetFilter中使用NF_QUEUE排队网络数据包的示例
- 15. 修改开发模块
- 16. 修改基于数据包长度等参数
- 17. 使用netfilter以原始格式获取数据包
- 18. 如何修改模块用Python pycharm
- 19. 用于数据修改的primefaces数据表对话框
- 20. Linux:数据包重新排序模拟
- 21. 即时修改TCP数据包
- 22. 修改JSON数据(加包装托架)
- 23. Windows网络数据包修改
- 24. 修改Magento2模块的css文件
- 25. 跳过未修改模块的maven build?
- 26. 修改默认模块的源路径
- 27. 如何在linux中包含python模块?
- 28. 的Netfilter的内核模块会导致我的系统崩溃
- 29. 的Linux模块loadables
- 30. 基于PHP的PDF修改框架/包
你有什么试过吗? (http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-04-29 13:47:28
我什么也没试,因为我找不到东西 – user1262425 2012-04-29 15:18:58