嗅探器可以重建我传输的文件吗?

问题描述

我有以下代码

// in = InputStream inputStream = filePart.getInputStream()
// out = OutputStream out = socket.getoutputStream()

int read = 0;
byte[] bytes = new byte[25 * 1024];
while ((read = inputStream.read(bytes)) != -1) {
    out.write(bytes,read);
}

现在,假设有人正在嗅探我的数据,他们能否以某种方式重建正在传输的每个字节以重建正在传输的文件?我想是的。

解决方法

视情况而定。

让我们假设 socket 指的是网络套接字,即 java.net.Socket。然后它取决于套接字连接到的接口。例如,如果这是相当常见的:

  • 接口是此设备中的网络端口,连接到该端口的电缆连接到普通的 jane 商用家用电缆调制解调器,然后连接到街上的分线盒,并从那里连接到玻璃纤维,到广泛的互联网上,例如靠近有大量数据中心的地方的数据中心交换站,通过管道连接到这些数据中心之一,通过它们的交换基础设施到正确的“房间”,到路由器,到壁橱中的集线器,最后到服务器。

然后在几乎任何可以“窥探”的地方。这就是为什么大多数互联网流量都是加密的。特别是可以在壁橱中的那个集线器上窥探,如果该盒子中的所有其他服务器以混杂模式打开它们的卡,则可能只能看到它。如果有人在外面闲逛并夹在您房子和街道尽头的分线盒之间的电缆上,他们可能会听到。通过使用例如解决此问题https。

但是,如果它是这样的:套接字连接到由 VPN 驱动程序生成的虚拟接口,那么好吧,关于它如何到达另一端的其余故事可能无关紧要。至少在信号从 VPN 跳回之前的整个段都在 VPN“空间”内,并且通过间接层进行物理路由。除非您有一些奇怪的 VPN 实现,否则该层将被加密。如果有人在您的 PC 上安装了窥探驱动程序,那么唯一可以“嗅探”到这一点的人。如果有人在您不知情或未经您同意的情况下安装 root 级访问软件,您将受到打击,您所做的一切都将是安全的。

所以如果我们可以忽略这种情况,那么在后一种情况下:不,没有人可以窥探这一点。