tcpdump для печати только URL-адресов
Есть ли способ сделать
tcpdump -i lo -A
И пусть он напечатает все URL-адреса, любые сделанные соединения?
Я сделал:
sudo tcpdump -i lo -A | grep Host:
Который отлично работает. Но мне было интересно, есть ли варианты сделать то же самое в tcpdump
Наконец, есть ли способ сделать это в python без использования команды sys или Popen / subprocess
3 ответа:
Вы можете использовать scapy функцию sniff и использовать regex или grep
import scapy tcpdump = sniff(count=5,filter="host 64.233.167.99",prn=lambda x:x.summary()) print tcpdump
Измените фильтр для вашего текста фильтра:)
Или, может быть, вы хотите сохранить трафик и посмотреть его в wireshark
wrpcap("temp.cap",pkts)
Tcpdump не может фильтровать на основе содержимого пакетов (нет глубокой проверки пакетов), так как он использует только pcacp-фильтр. Вы можете улучшить свою производительность, только сбрасывая эти пакеты для
incoming TCP connections to your HTTP port
.tcpdump -i lo -A tcp port 80
TCPDUMP python: use Pcapy
Другой вариант-использовать tshark
То, что вы хотите использовать, - это libpcap, библиотека захвата пакетов, которую использует tcpdump. Для этого существует оболочка python, которую можно найти здесь.
Вы можете, в python, затем построить любую фильтрацию, которую вы хотите, поверх фильтрации, уже предоставленной pcap/tcpdump. Затем отобразите этот отфильтрованный вывод (или то, что вы хотите сделать в своем скрипте python).