Для симулирования трафика, перехваченного сниффером и сохранённого в формате 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
Из других похожих проектов, можно отметить:
[[http://www.monkey.org/~dugsong/fragroute/ fragroute]] - позволяет перехватывать, изменять и переотправлять трафик, адресованный определённому хосту.
[[http://netdude.sourceforge.net/ netdude]] - мощный редактор и просмотрщик содержимого pcap-дампов.
[[http://code.google.com/p/wireplay/ 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
URL:
Обсуждается: http://www.opennet.dev/tips/info/2528.shtml