Сетевой трафик

Озадачился возможностью перехватывать сетевые пакеты, модернизировать их и отправлять обратно в сеть. Ну драйвера я писать не умею, поэтому надо что-то попроще.Для захвата сетевых пакетов есть специальная opensource библиотека: pcap. Она кроссплатформенная. Она позволяет принимать пакеты с выбранного интерфейса, парсить его, записывать в файл, а также отправлять пакеты обратно в сеть. На базе этой библиотеки созданы известные утилиты: tcpdump доя линуксов и windump доя винды.
Я скачал все это к себе и начал эксперименты. Наткнулся на то, что windump говорил при запуске, что не может войти в “неразборчевый режим”. Пришлось rtfm дальше. Этот режим означает, что сетевая карта принимает все пакеты без фильтрации по получателю. Как выяснилось, на некоторых картах этот режим можно включить только вручную. Поэтому мне пришлось запускать windump с ключом -p. Следующий момент это выбор интерфейса. Сначало надо листинг сделать, а потом уже выбирать ключем -i .
Следующий вопрос – как поиметь простые дата пакеты от одного узла к другому? Сел, написал для этого клиент серверую программу. Функционал дико прост: запускаешь сервер, запускаешь клиент. На клиенте нажимаешь “передать”. Происходит передача 3х байт. Перехватчик рапортует: 4 пакета обработано. Из них: 1 сама передача пакета от клиента, второй пакет – это ответ сервера о получении. Еще 2 пакета udp. Что это за пакеты я пока не фкурил.

netsndrcv

Проблема, которую я проморгал была очевидна: для бытрого теста, я не могу перехватить tcp трафик, а потом засунуть его обратно, так как я не могу установить такую же сессию. С трафиком tcp можно было бы поступить так: одна машина передает, вторая – это приемник, обработчик, передатчик, третья машина это приемник. То есть вторая машина это самопальный маршрутизатор или прокси. Но такой вариант требует более кропотливого программирования. Поэтому я попробую использовать более простой вариант: я могу записать udp трафик, а потом воспроизвести его.
Для реализации этих экспериментов я создал 2 виртуальные машины на базе virtualbox. Эти две машины работают с одним жестким диском, на котором установлена ОС windows xp. Диск с ОС находится в спец режиме: общего доступа. Вообще режимы дисков для виртуальных машин – это целая наука. Есть обычные диски, которые работают только в одной виртуалке. Есть диски только для чтения – это аля сд. Есть диск общего доступа и тп. Вопрос выбора, это вопрос – нужно ли сохранять изменения, сделанные на диске или же при новом запуске все изменения исчезнут. Или же изменения для каждой виртуалки будут индивидуальны.

20130830-135517.jpg
Между делом заметил, что кто-то повредил мне матрицу на мониторе… Интересно, через сколько времени она расползется непроглядным мраком… Думаю, что Темка втихоря отличился. Айпад бля живучее сони(((

20130830-135716.jpg