linux - 在 Linux 中劫持应用程序和网络之间的通信

标签 linux networking network-programming linux-kernel embedded-linux

我有一个可以被视为接入点的嵌入式系统。有一个程序在该系统中运行,并与连接到该接入点的设备进行一些网络通信。它正在发送包含一些诊断信息(数据结构)和接收命令的 UDP 数据包。问题是有时传出数据结构的某些字段没有填充数据(例如,有零或一些垃圾)。我需要每次都正确填写这些字段,并且我知道应该将哪些值放在那里。

我需要完成的另一项任务是过滤进入该程序的传入数据包(我知道它监听的端口)——通常我需要简单地传递它们,但偶尔(例如,当我从传感器获得一些信息时) ) 有必要用我生成的新数据包完全替换它们。

我有几个不同的想法,从巧妙地使用 iptables 和 pcap 到编写我自己的内核模块。我不拥有该嵌入式应用程序的源代码,因此我无法将此功能嵌入其代码中。性能在这里很重要,我想听听您的建议:我应该做什么?编写我自己的内核模块对我来说似乎是最好的解决方案,但我没有网络黑客经验,所以也许有一些其他方法更适合这个问题。任何意见将不胜感激!

最佳答案

一种标准方法是使用 libnetfilter_queue 直接拦截和修改数据包。在尝试编写自己的内核模块之前,您至少应该尝试一下。

关于linux - 在 Linux 中劫持应用程序和网络之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614631/

相关文章:

c++ - Boost ASIO 异步接受器不打开监听端口

通过调用 shutdown 和 close 关闭套接字

linux - 是否有与 freebsd hwpmc 等效的 linux/端口?

c - 如何使用 execv() 在 ls 中传递额外选项?

linux - Python3 - 从文件中删除最后 (n) 行并 append 新数据

networking - 如何在两台防火墙后面的多台计算机之间建立 TCP 连接?

C#捕获桌面视频并通过网络发送

linux - 当路由器端口转发外部连接时,如何从 LAN 内部连接到 ftp 服务器

ios - 如何使用 NSURLProtocol 在 iOS 中拦截网络调用 (REST)

允许文件附件的 C++ SMTP