Предположим, что существует сервер, скажем, WebServer, который получает параметр GET "url" и загружает данные с URL-адреса, который мы передаем ему. Он посещает URL-адрес и извлекает его содержимое (в основном HTML) и возвращает его в кодированном формате application / json. Вот так:
{"response: "200 OK", "body": "<html>hello</html>"}
Теперь я пытаюсь посетить URL внутреннего сервера, который обслуживает ZIP-файл. Например:
https://web.server/download?url=https://internal.server/files/abc.zip
Возвращаемое содержимое - application / octet-stream (двоичный файл ZIP из https://internal.server), закодированный как application / json. Выглядит примерно так:
{"response: "200 OK", "body":"PK\u0003\u0004\n\u0000\u0000\u0000\b\u0000�jCO\u0012[\u001du�\u0000\u0000\u0000�\u0000\u0000\u0000\r\u0000\t\u0000.editorc [..snip..]}
Есть ли в любом случае JSON декодировать вышеуказанные данные и извлечь из него двоичный файл application / octet-stream.
Я пробовал с jq -r .body response.json
, но zip-файл поврежден.
jq -c '.body | fromjson'
возвращает
jq: error (at randomzip2.txt:1): Invalid numeric literal at line 2, column 0 (while parsing 'PK')
Любая помощь в чистом извлечении двоичного файла высоко ценится. Спасибо.
PS: Я делаю тест на проникновение для компании, которая позволила мне выполнять такие операции. Никаких злонамеренных намерений при загрузке содержимого внутреннего файла.