基于字符串变量

时间:2017-08-21 14:03:42

标签: java tcp

全部, 不确定是创建一些Java代码还是使用“现成的”代码。用于产生监听器/路由器/重定向器的产品,它将监听单个传入的IP流,然后重定向&#39数据包基于固定位置字符串变量到适当的TCP服务器。

即。如果传入数据包的变量= 1重定向到192.168.150.211的TCP服务器,则如果2然后重定向到192.168.150.212的TCP服务器。

理想情况下,代码/产品还应能够在侦听器/路由器启动之前在同一台计算机上预启动多个TCP服务器(在一个IP地址和不同的IP端口或不同的IP地址)。

考虑使用OPC服务器,但这对于单个相对较慢的传入流来说似乎过于复杂/昂贵。

赞赏的想法。

1 个答案:

答案 0 :(得分:1)

这取决于分析的深度。如果您想在TCP级别分析每个数据包,那么 C 等低级语言将是最佳选择:只需听取 eth0 (或任何接口)的所有内容),搜索特定的字符串(BTW"字符串"定义太宽。字符串可以被视为准备处理数据的时间在' 80s。现在字符串是一块垃圾,直到你知道什么是编码,如何终止行等。)

正如@f1sh已经提到的,您可以使用Java重定向流量。但Java使用流操作,它对网络数据包一无所知。此外,在Java中,您只能侦听某些端口 - 无法在整个网络接口上进行过滤(但JNI可以实现真正的保护)。

如果你想在没有大量编码的情况下获得PoC,可以考虑使用Socat。 Socat不仅可以将数据从一个套接字传输到另一个套接字。它还可以将数据写入文件。所以你可以结合 Socat (不要忘记fork选项),尾巴 grep 和一些Bash东西,让简单的重定向服务器工作。