2013-12-12 1 views
1

Я хотел бы знать, есть ли возможность жить захватить сетевые пакеты и сохранять их в переменной, например, в python. Мне нужна информация, чтобы получить ее, а не сохранить ее в файл.Прямой захват пакетов на linux

Мне нужно захватить http-пакеты и получить исходные addres и его содержимое, которое должно быть html-кодом, чтобы извлечь только текст из него, а затем выполнить остальную часть задания по этой информации. Нет никаких причин сохранять каждый пакет в файл, потому что весь процесс будет более медленным. Я искал довольно долгое время для любого инструмента, чтобы сделать это, но без успеха. Пожалуйста, если вы знаете какой-либо инструмент, который мог бы мне помочь, напишите об этом.

+0

'tcpdump' - это, вероятно, инструмент для вас, хотя я никогда лично не использовал его в python. – admdrew

+0

http://www.secdev.org/projects/scapy/doc/introduction.html – Blender

ответ

0

Я уверен, что вы видели this link о библиотеке для обработки файлов PCAP. Теперь вопрос заключается в том, как приобретать в реальном времени, не сохраняя в файле.

Вероятно, проще всего это использование ФИФО

$ mkfifo /tmp/tcpdump.fifo 

Теперь вы можете захватывать и данные подачи в названный ФИФО

$ sudo tcpdump -s0 -i eth0 -f /tmp/tcpdump.fifo tcp port 80 

А в вашем питона программы вы можете открыть «/ TMP/ТСРйитр. fifo 'в качестве входного файла в соответствии с инструкциями в ссылке.

В качестве альтернативы вы можете попробовать открыть '/ dev/stdin' в своей программе и прочитать данные оттуда; вы можете передать данные PCAP прямо в stdin, используя оболочку, и пропустить промежуточное имя fifo.

$ sudo tcpdump -s0 -i eth0 -f - tcp port 80 | ./youprogram.py 
+0

благодарит за ответ! Я действительно ценю это! :) – vit0

+0

@ vit0, тогда вы могли бы принять ответ или, по крайней мере, перенести его! – abasterfield

+0

извините, я попытался подняться, но слишком мало репутации: (одобрено как ответ :) – vit0