使用 netcat 从远程 HTTPS 主机下载 zip 文件

使用 netcat 从远程 HTTPS 主机下载 zip 文件

我正在尝试从以下位置下载 zip 文件:https://download.sysinternals.com/files/ProcessExplorer.zip(没有curl也没有WGET)。我想通过 netcat 来做到这一点,我使用了这个命令:

echo -e "GET
https://download.sysinternals.com/files/ProcessExplorer.zip HTTP/1.1\r\nHost: download.sysinternals.com\r\n\r\n" | nc download.sysinternals.com 80 > q.zip

该文件写入硬盘上,但当我尝试打开它时,它已损坏。

答案1

因此,据我所知,netcat不能使用 HTTPS,但在您的代码中您连接到端口 80,这意味着 HTTP,而不是 HTTPS。

在之后GET您应该添加相对地址,而不是完整的地址。

像这样的事情会起作用:

echo -e "GET /files/ProcessExplorer.zip HTTP/1.1\r\nHost: download.sysinternals.com\r\n\r\n" | nc download.sysinternals.com 80 > q.temp

传输完成后它不会关闭,您必须手动关闭它。

此时该q.temp文件还包含 HTTP 标头,您必须将其删除。您可以检查二进制内容开头的行号:

nl q.temp | less

在这种情况下,二进制内容从第 16 行开始,因此您可以使用以下命令删除标头:

tail -n +16 q.temp > q.zip

这就是你的 zip 文件!

相关内容