如何防止使用 nc 传输文件时字节发生变化?

如何防止使用 nc 传输文件时字节发生变化?

如果您在侦听主机上打开一个端口并使用 nc 向此端口发送字节,则源文件和目标文件的哈希值可能不同。为什么会这样?可以避免这种情况吗?

以下是我使用的命令:

在接收方:

bash@ubuntu $ nc -nlvp 4444 > target # at 192.168.155.51

在发送方:

powershell@windows $ Get-Content binaryFile.exe | nc 192.168.155.51 4444

源的 SHA256(使用 计算Get-FileHash):FFECB298B1381AFBF86247156F625EAECA327015C5BC0658F6FF6E063D59D759

目标的 SHA256(sha256sum):1c1148ace41bc0d22c1523787c64fb34abba456551d62387a085d12c36d34452

答案1

问题不在于nc,而在于Get-Content。如果您Get-Content a.exe > b.exe将有两个不同的文件(文件大小加倍)。

此处提出了这个问题https://stackoverflow.com/questions/10672092/read-parse-binary-files-with-powershell但我还没有找到Get-Content适合二进制文件的用法。

使用nc您提出的参数(但直接从 UNIX 重定向)效果很好。

相关内容