java劫持套接字可能吗?

我突然发现自己想知道这个问题,是否有可能在java中劫持套接字?

假设服务器正在侦听端口5000,是否可以编写一个java程序来侦听端口5000,并通过端口5000将相同的数据转发到服务器。

这样做会涉及什么? 我觉得这涉及编写一个新的网络驱动程序,将数据传递给java编程,然后进行一些处理并将其传递回驱动程序,然后再将其发送到服务器。 当然所有这些处理也可以在驱动程序代码本身中完成〜

出于好奇,你会如何为Windows noob编写这个驱动程序?

网络套接字由操作系统管理,操作系统不允许您绑定到已在使用的套接字。 所以是的,你需要在网络驱动程序级别上做一些技巧。

听起来你很顽皮。 正如Thilo所说,你通常不能劫持一个港口。 您可以代理端口,因此客户端连接到端口5001,程序侦听5001,然后转发到5000.您也可以在主机级别执行相同操作 – 将主机X替换为主机y。 主机y在端口5000上运行程序,并在端口5000上转发到主机X.

或者您可能想要捕获流量并注入通信中的数据包? 如果是这样,那么试试jpcap