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