简单的方法来编辑来自tcp主机的stream量(linux)

在处理连接的进程获取stream之前,我需要对来自已知tcp主机:端口的传入stream量进行一些小的修改。

例如,让192.168.1.88是运行Web服务器的远程主机。
我需要的是,当我的本地主机上的进程接收到来自192.168.1.88:80(例如浏览器)的数据时,数据首先被replace为text-B text-A ,如下所示:

假设我有一个基于stream的方式来进行更改(例如使用sed ),预处理传入的tcpstream最简单的方法是什么?

我想这会涉及iptables ,但我不是很擅长。

请注意,应用程序应该觉得要处理原来的主机,所以设置代理不可能是一个解决scheme。

使用netsed和iptables代理。

 iptables -t nat -D PREROUTING -s yourhost -d desthost -p tcp --dport 80 -j REDIRECT --to 10101 

然后运行:

 netsed tcp 10101 desthost 80 s/text-A/text-B 

NetSED是一个小巧而实用的实用程序,旨在实时更改通过networking转发的数据包内容。 这对于networking数据包的变更,锻造或者操作是非常有用的。 NetSED支持:

  • 黑匣子协议审计 – 每当有两个或更多专有的箱子使用某些未公开的协议进行通信时。 通过执行正在进行的传输更改,您将能够testing被检查的应用程序是否可以声称是安全的。

  • 模糊生成实验,完整性testing – 只要您对应用程序进行稳定性testing,看看它是如何关心数据完整性的;

  • 其他常见用例:欺骗性转移,内容过滤,协议转换 – 最适合您的任务。

你可以通过使用iptables 透明地代理squid代理连接 ,然后让squid为你重写http内容来做到这一点。

iptables + libnetfilter_qu的使用是另一个select,将做你想做的事情:

“… [重新发送]更改的数据包到内核nfnetlink_queue子系统。”

它可能会给你最大的可扩展性,因为它是由你来编写软件。

还有一个python包装可用。