有办法吗
tcpdump -i lo -A
并打印所有网址,是否有连接?
我做了:
sudo tcpdump -i lo -A | grep Host:
效果很好。但我想知道是否有选项可以在tcpdump
中做同样的事情最后,有没有办法在python中执行此操作而不使用sys命令或Popen / subprocess
答案 0 :(得分:3)
tcpdump无法根据数据包的内容进行过滤(无深度数据包检查),因为它只使用pcacp-filter。
您只需转储incoming TCP connections to your HTTP port
的包裹即可提高性能。
tcpdump -i lo -A tcp port 80
TCPDUMP python:使用Pcapy
另一种选择是使用tshark
答案 1 :(得分:2)
你可以使用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)
答案 2 :(得分:1)
你想要使用的是libpcap,它是tcpdump使用的数据包捕获库。有一个python包装器,可以找到here。
你可以在python中,然后在pcap / tcpdump提供的过滤之上构建你想要的任何过滤。然后显示这个过滤后的输出(或者你想在你的python脚本中做什么)。