Я захватил TCP-пакет с помощью libpcap и хочу отправить весь этот пакет (без его изменения) на определенный порт на другом хосте (у которого есть другой сниффер, прослушивающий этот порт).
Есть ли способ сделать это?
Большое спасибо!
Я захватил TCP-пакет с помощью libpcap и хочу отправить весь этот пакет (без его изменения) на определенный порт на другом хосте (у которого есть другой сниффер, прослушивающий этот порт).
Есть ли способ сделать это?
Большое спасибо!
Вы не указали, какой язык программирования вы используете и что уже пробовали.
Измените поле IP-адреса на целевой IP-адрес, а поле порта TCP на нужный порт. Не забудьте обновить обе контрольные суммы.
Если вам нужна переадресация TCP, ядро Linux уже сделает это за вас а>.
netcat может работать в этом случае, хотя я думаю, что вам, возможно, придется восстановить заголовок, но я не пробовал.
Как экранировать шестнадцатеричные значения в netcat
Другой вариант — использовать iptables, чтобы направить пакет другому снифферу, в то же время перехватывая его в анализаторе пакетов.
http://www.bjou.de/blog/2008/05/howto-copyteeclone-network-traffic-using-iptables/
Другим вариантом является использование зеркала портов, которое имеет несколько разных имен в зависимости от используемого коммутатора, но позволяет настроить порт на коммутаторе как концентратор.
Я думаю, что вам лучше всего, если вы не можете заставить работать netcat, использовать iptables, и вы даже можете добавить к нему фильтры.
Я не знаю, ДОЛЖНЫ ли вы использовать C или нет, но даже если вы это сделаете, я бы рекомендовал для начала создать прототип с помощью Python/Scapy.
Используя scapy, выполните следующие действия:
Это все довольно просто с Python/Scapy, но я ожидаю, что это будет намного сложнее с C, когда придется вручную вычислять правильные смещения, контрольные суммы и прочее. Удачи, и я надеюсь, что это поможет.