我有一个可以被视为接入点的嵌入式系统。有一个程序在该系统中运行,并与连接到该接入点的设备进行一些网络通信。它发送包含一些诊断信息(数据结构)和接收命令的UDP数据包。问题是有时候那个传出数据结构的某些字段没有填充数据(例如,有零或一些垃圾)。我需要每次都正确地填充这些字段,我知道应该在那里放置什么值。
我需要完成的另一项任务是过滤进入此程序的传入数据包(我知道它侦听的是哪些端口) - 通常我只需要传递它们,但偶尔也会传递它们(例如,当我从传感器获取一些信息时) )有必要用我将生成的新数据包完全替换它们。
我有几个想法,从iptables和pcap的一些聪明用法到编写我自己的内核模块。我不拥有该嵌入式应用程序的源代码,因此我无法在其代码中嵌入此功能。表演在这里是至关重要的,我想听听你的建议:我该怎么办?编写我自己的内核模块对我来说似乎是最好的解决方案,但我没有网络黑客的经验,所以也许还有其他一些方法更适合这个问题。任何意见都将受到高度赞赏!
答案 0 :(得分:2)
一种标准方法是使用libnetfilter_queue直接拦截和修改数据包。在尝试编写自己的内核模块之前,至少应该尝试这个。
答案 1 :(得分:1)
您可以在用户空间中执行此操作。只需编写一个接收数据包的服务器更改它们并再次发送它们。您必须将应用程序配置为仅使用localhost作为目标IP(或将系统配置为具有目标地址)。它是典型的“中间人”设置。