Как я могу захватывать и редактировать сетевые пакеты на лету с помощью Perl?

Кто-нибудь знает о модуле CPAN на Win32, который перехватывает сетевые пакеты и редактирует их на лету? Насколько мне известно, единственным модулем Perl для Win32, который работает с пакетами на лету, является Net: :Pcap, но он поддерживает только пассивный мониторинг и не влияет на стек TCP/IP.

Есть ли такой модуль, может ли кто-нибудь предоставить пример/ссылку/документацию?


person dan    schedule 07.12.2009    source источник
comment
схватить? Вы имеете в виду захват, или grep, или что-то еще?   -  person John Weldon    schedule 07.12.2009
comment
Я думаю, что невозможно отправлять необработанные пакеты в Win32 после исправления WinXP SP2.   -  person Ivan Nevostruev    schedule 07.12.2009
comment
См. этот вопрос stackoverflow.com/questions/1842971/   -  person Ivan Nevostruev    schedule 07.12.2009
comment
Вы пытаетесь редактировать входящие/исходящие пакеты на/с вашего компьютера или пакеты между двумя произвольными хостами в сети?   -  person Mike Miller    schedule 17.12.2009


Ответы (3)


Насколько я знаю, libpcap позволяет читать копии входящих и исходящих пакетов, а некоторые реализации позволяют вводить необработанный пакет, но не перезаписывать пакет. В основном вам придется отбросить исходный пакет (что libpcap не может сделать), а затем вставить новый на его место.

Приложения брандмауэра, которые позволяют фильтровать входящие и исходящие пакеты, могут делать что-то подобное. Однако, поскольку вы говорите о Perl и Win32, ваши возможности, вероятно, ограничены.

person benzado    schedule 07.12.2009

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

Если это работает в вашем сценарии, попробуйте реализовать прокси-сервер. Слушайте тот же порт, что и ваша целевая служба, и читайте весь входящий трафик. Если вам нужна модификация пакета, сделайте это и перенаправьте весь трафик на целевой сервис. Конечно, вы должны реализовать оба направления.

Вы можете найти базовый фрагмент демона TCP в Perl или, может быть, вы можете реализовать только модуль для существующего прокси-сервера для вашего сервиса. Это HTTP или какой трафик вам нужно обрабатывать?

person Community    schedule 21.12.2009

Я бы предложил использовать Net::Pcap для захвата трафика, а затем порт Cygwin для TCPReplay для изменения и воспроизведения. трафик. Очевидно, установка Linux будет более надежной, поскольку TCPreplay будет работать на ней из коробки, не требуя cygwin.

person loginx    schedule 19.01.2010