Я хотел бы сохранить "куски" ответа http, предпочтительно используя curl или какой-либо другой бесплатный инструмент командной строки, который работает на Mac или Linux, но я открыт для любого типа решения.

Так, например, если ответ отправляется в 10 чанках, я бы хотел сохранить каждый из этих чанков в отдельный файл, chunk1.txt -> chunk10.txt

И, конечно, если файл отправляется в одном фрагменте, файл будет сохранен в одном файле.

Как я могу сохранить фрагменты ответа http, используя curl или другой инструмент?

РЕДАКТИРОВАТЬ: Я хотел бы "увидеть" это, чтобы убедиться, что Transfer-Encoding: chunked обслуживает 1-N чанков, а Content-Length:XXX отправляет один ответ. И сохранить их в файл не обязательно, я думаю. Если в одном файле четко указано, что представляет собой каждый кусок, это здорово!

2 ответа2

3

tcpdump лежит в основе Wireshark и других подобных утилит и имеет интерфейс командной строки, который может выполнить то, что вы хотите. Команда похожа на:

tcpdump -A -i en0 src XXX.YYY.ZZZ.AAA and port 80

Будет ли сбрасывать на консоль все исходные пакеты от XXX.YYY.ZZZ.AAA порт 80 , которые проходят через en0 Вы можете исключить -i en0 для любого интерфейса, и выражение вполне настраивается.

Вы можете найти несколько хороших примеров tecmint.com и danielmiessler.com.

Хотя вы можете сохранить весь захват с помощью этого решения, он не сохраняет фрагменты в разные файлы, как вы просили. Вы должны были бы пост-обработать файл дампа, чтобы получить это.

[Уточнение] Вы будете запускать curl в отдельном терминале одновременно с захватом пакетов.

[Дополнение] Существует также обсуждение Wireshark и http chunking, которые могут быть полезны. И эта трассировка Reassemble pcap для восстановления данных на уровне http имеет приемлемое решение для повторного анализа перехватов с использованием Bro.

-1

Вы можете использовать такую утилиту, как Wireshark, которая обычно является стандартным пакетом в Linux.

Wireshark обеспечивает глубокую проверку сообщений и протоколов на всех уровнях протоколов TCP/IP и предоставляет множество сложных инструментов.

Вы можете с помощью Wireshark отобразить поток байтов сообщения или перейти на уровень протокола и отобразить более высокие уровни абстракции.

Часть, которая вас интересует, называется Packasse Reassembly, описываемой как:

Сетевые протоколы часто должны транспортировать большие порции данных, которые сами по себе полны, например, при передаче файла. Базовый протокол может быть не в состоянии обрабатывать этот размер фрагмента (например, ограничение размера сетевого пакета) или основывается на потоке, как TCP, который вообще не знает фрагменты данных.

В этом случае сетевой протокол должен сам обрабатывать границы чанка и (если требуется) распределять данные по нескольким пакетам. Очевидно, что также необходим механизм для определения границ чанков на принимающей стороне.

Wireshark вызывает этот механизм повторной сборки, хотя в конкретной спецификации протокола для этого может использоваться другой термин (например, десегментация, дефрагментация и т.д.).

Повторная сборка может происходить на нескольких уровнях протокола, поэтому возможно появление нескольких вкладок на панели «Пакетные байты».

Как только вы увидите куски, вы также можете экспортировать их.

Вот пример панели «Байты пакета» с повторно собранной вкладкой:

образ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .