2009-10-20 10 views
3

Итак, для проекта CS я должен обнюхать сетевой поток и создавать файлы из этого потока. Например, если программа указывает на ~/отвалы/TMP/то структура каталогов будет таким:Создание файлов из трафика TCP/IP?

~/отвалы/TMP /192.168.0.1/ page1.html page2.html [различные ресурсы для страниц1 & 2] загружен файл1 /192.168.0.2/ и так далее.

Я делаю это в C & pcap на linux (так как я уже знаю C++ и цифра обучения будет хорошей).

До сих пор я смотрел на различные форматы заголовков для TCP/IP

TCP header

Как я полагаю, я могу сортировать пакеты по их Dst/SRC, а затем заказать их правильно последовательностью и окна подтверждения.

Но это оставляет меня большим? как узнать, как пакеты a-z являются частью html-файла и частью A-Z какого-либо загружаемого случайного файла и т. д.?

Кроме того, какой другой вид форматов заголовков я должен искать? В настоящее время у меня есть:

я бы разместить более гиперссылок фотографии, но я, видимо, нужна репутация, чтобы сделать это, извините TCP, Ethernet, UDP, и я обойти, чтобы такие вещи, как FTP (но я m довольно уверен, что FTP построен поверх TCP, как и HTTP)

Итак, как я могу найти файлы в сетевом потоке, и не хватает ли каких-либо основных протоколов, которые мне нужны, чтобы читать?

ОТВЕТ Я не могу понять, как ответить, так что это нужно будет сделать.

Я использовал pcap несколько раз и сделаю это снова для этого проекта, но я не буду использовать какой-либо материал Wiresharks (хотя это отличная программа), потому что я не хочу шутить изучать подобные вещи ,

Да, я изучу уровень OSI, любые предложения на хорошем сайте, который охватывает общие протоколы?

И я думаю, я должен остановиться, прежде чем этот «вопрос» станет дискуссией.

ответ

5

Если файл начинается и заканчивается не в TCP. Вы должны иметь дело с протоколом, переданным через TCP. Например, для HTTP вы должны прочитать заголовок Content-Length в заголовке HTTP, который должен быть равен длине тела HTTP (полная html-страница). Затем вы накапливаете тело более одного или более TCP-пакетов, пока не получите общее содержимое, как указано в заголовке Content-Length.

2

Поскольку это школьное задание, вы можете быть ограничены в отношении того, какие инструменты вы можете использовать, но вы можете захотеть заглянуть в Wireshark. Если бы мне задали эту задачу как реальный проект, я бы взял Wireshark и рассмотрел, как использовать возможности его извлечения потока и анализа протокола, и просто обернуть что-то вокруг них, чтобы автоматизировать их и получить желаемый результат.

+0

Да, или tshark с соответствующими аргументами командной строки. Даже tshark, поданный к grep, довольно проклят. Но да, как студент, ваша задача - остановить и почувствовать запах цветов. – JasonSmith

+0

Отличная идея использовать Wireshark для просмотра трафика реального мира. Это даст вам некоторое представление. – noctonura

0

Как это для школы CS, я бы начал с OSI Model, который дает вам хороший обзор и логическую структуру сетевых протоколов.
Файлы находятся на уровне 6 (MIME) и 7 (разные). Затем вам нужно пройти через каждый протокол и проверить, как определить, какие файлы содержат и как их можно захватить.

1

Вам необходимо открыть сырую розетку через неразборчивое устройство Ethernet. Затем используйте libpcap для хранения и анализа пакетов.

Смежные вопросы