Запись и повторное проигрывание трафика

Запись и повторное проигрывание трафика

Для симулирования трафика, перехваченного сниффером и сохранённого в формате

pcap, удобно использовать сочетание утилит tcpreplay

http://tcpreplay.synfin.net/ для непосредственной переотправки трафика и

tcprewrite http://tcpreplay.synfin.net/wiki/tcprewrite для замены IP-адресов

и других параметров пакетов. Повторная генерация потока может быть полезна для

оценки поведения различных программ на различные атаки, при изучении причин

сбоев в сетевом ПО или при проведении нагрузочного тестирования (можно менять

интенсивность отправки пакетов).

Обе утилиты входят в состав пакета tcpreplay:

sudo apt-get install tcpreplay

Перехват трафика можно произвести утилитой tcpdump:

tcpdump -ni wlan0 -s0 -w dump.pcap port 501

Для замены адреса отправителя 210.1.54.1 на адрес локальной машины 192.168.1.1

используем утилиту tcprewrite:

tcprewrite --skipbroadcast --pnat=210.1.54.1:192.168.1.1 --infile=dump.pcap --outfile=dump2.pcap

Повторно генерируем пакеты, используя интерфейс eth0:

tcpreplay --intf1=eth0 dump2.pcap

Из других похожих проектов, можно отметить:

fragroute - позволяет перехватывать, изменять и переотправлять трафик,

адресованный определённому хосту.

netdude - мощный редактор и просмотрщик содержимого pcap-дампов.

wireplay - простая и удобная утилита для переотправки записанных в

pcap-дампе TCP-сессий с внесением изменений. Например, для переотправки

записанного в http.pcap HTTP-трафика:

wireplay -K --role client --port 80 --target 127.0.0.1 -L -F http.pcap

В ситуации, когда нужно просто сгенерировать поток на основе лога HTTP-сервера,

можно использовать утилиту httperf:

Копируем список запрашиваемых URL из лога:

cat apache.log | awk ‘{print $7}’ > requests.log

Заменяем перевод сроки на нулевой символ, как того требует httperf

tr “\n” “\0” \< requests.log > httperf.log

Симулируем отправку пакетов к IP 192.168.1.1 в 100 одновременных запросов,

прекращаем отправку после 10 тыс. запросов.

httperf --hog --server 192.168.1.1 --port 80 --wlog=n,httperf.log --rate=100