我有一个可以被视为接入点的嵌入式系统。有一个程序在该系统中运行,并与连接到该接入点的设备进行一些网络通信。它正在发送包含一些诊断信息(数据结构)和接收命令的 UDP 数据包。问题是有时传出数据结构的某些字段没有填充数据(例如,有零或一些垃圾)。我需要每次都正确填写这些字段,并且我知道应该将哪些值放在那里。
我需要完成的另一项任务是过滤进入该程序的传入数据包(我知道它监听的端口)——通常我需要简单地传递它们,但偶尔(例如,当我从传感器获得一些信息时) ) 有必要用我生成的新数据包完全替换它们。
我有几个不同的想法,从巧妙地使用 iptables 和 pcap 到编写我自己的内核模块。我不拥有该嵌入式应用程序的源代码,因此我无法将此功能嵌入其代码中。性能在这里很重要,我想听听您的建议:我应该做什么?编写我自己的内核模块对我来说似乎是最好的解决方案,但我没有网络黑客经验,所以也许有一些其他方法更适合这个问题。任何意见将不胜感激!
最佳答案
一种标准方法是使用 libnetfilter_queue 直接拦截和修改数据包。在尝试编写自己的内核模块之前,您至少应该尝试一下。
关于linux - 在 Linux 中劫持应用程序和网络之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614631/