2010-11-25 4 views
0

Я новичок в сетевом программировании. Мне нужна помощь в отношении пакета sniffing.i, чтобы обнюхать ip ipsec и pptp-пакеты. они обнюхивают, используя тот же метод (код), или их обнюхивают с использованием другого метода. Я использую linux, а язык - C++. СпасибоПакет sniffing

+3

Почему бы вам не использовать программное обеспечение для пакетного нюхания вместо того, чтобы создавать свои собственные? – zneak 2010-11-25 18:23:07

ответ

0

Я бы посоветовал не писать собственный анализатор или анализатор, если вы не любите писать свой собственный анализатор протокола или не имеете специального требования «в реальном времени».

Предлагаю использовать tcpdump для захвата интересующего вас трафика в качестве первого шага. Например. если у вас есть локальная сеть 192.168.1.0/24 и устроили для зеркалирования портов для предполагаемого захвата ПК, вы можете попробовать следующее:

tcpdump -i eth0 -w output.pcap -s0 -n 'net 192.168.1.0/24' 

Затем написать утилиту анализатора, который пинает из tshark подпроцессов, которые рассекают пакеты, которые вас интересуют; например, pptp-трафик между двумя IP-адресами 192.168.1.1 и 192.168.1.10. В этом случае, следующая команда вызова будет рассекать пакеты и сбросить их полезной нагрузки в виде текстового файла для дальнейшей обработки в C++ или даже лучше Python/Perl:

tshark -r output.pcap -R "pptp and (ip.src_host == 192.168.1.1 ip.dst_host == 192.168.1.10)" -T text 

Естественно, вы можете запустить tshark столько раз, сколько необходимо для вашего предполагаемого анализа на том же единственном файле output.pcap, который вы создали ранее. Каждый раз, когда вы отправляете другой фильтр в соответствии с вашими потребностями.

Этот метод или его вариация должны обеспечить вам 90% на пути к тому, где вы хотите находиться в очень немногих строках кода, и не должны опускаться и не загрязняться спецификацией стандартных протоколов. Диссекторы, внедренные с помощью tshark, будут сильно протестированы и хорошо отлажены, что значительно сократит время и головные боли.