netcatを使用してリモートHTTPSホストからzipファイルをダウンロードする

netcatを使用してリモートHTTPSホストからzipファイルをダウンロードする

以下からzipファイルをダウンロードしようとしています。https://download.sysinternals.com/files/ProcessExplorer.zip(カーリングと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は利用できませんが、コードではHTTPSではなくHTTPを意味するポート80に接続しています。

次に、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ファイルです!

関連情報