【发布时间】:2011-04-20 23:58:07
【问题描述】:
libpcap 只能读取数据包,我该如何更改它?
基本上我想注册一个对所有传入数据包进行操作的回调函数,
如何做到这一点?
【问题讨论】:
-
请指定一个操作系统,这样的东西通常很不便携。
-
如果您希望对发往某个特定进程的每个数据包进行转换(但不影响其他进程),您需要进行一组修改 - 可能在程序本身中。如果您希望每个程序的每个数据包都通过您的代码,则必须将代码放入 TCP/IP 堆栈中,该堆栈通常位于内核内部。这是一件更难做的事情(也是一件好事——让通信被系统篡改,有点警察国家的味道)。
-
在linux内核上,你可以修改系统调用。
-
编写/修改 IP 驱动程序。我建议阅读 IP 协议 RFC。此外,您可能想花一些时间认真学习,这项任务并不容易。
标签: c network-programming