繁体   English   中英

使用python收集所有入站TCP流量

[英]Using python to collect all inbound TCP traffic

我正在尝试创建一个python linux脚本来侦听所有入站流量。 我不想在一个端口上监听所有流量。 朝正确方向的任何指令或指针将不胜感激。 万分感谢!

这只是使用python捕获数据包的一种选择。 虽然这个例子很简短,但它确实说明了您可以捕获发往系统的数据包并将其保存到PCAP。 您可以做更多的事情来进一步过滤/处理那些数据包,但是出于演示目的,它应该足以使您入门。 另外,我将其安装到虚拟环境中,而不是安装到主系统中。 这会给权限带来一些麻烦,但是出于演示目的,我将以sudo的身份执行脚本。 我不会在生产中这样做。

让我们从为我们的项目创建虚拟环境开始:

python -m venv venv

现在激活它:

source venv/bin/activate

现在让我们安装scapy:

pip install scapy

现在已经安装了scapy,让我们编写一个示例脚本来捕获一些发往我的计算机的数据包,这些数据包位于10.1.10.127:

#! ./venv/bin/python
from scapy.all import sniff, PcapWriter

pkts = sniff(filter="dst 10.1.10.127", count=10)
my_pcap = PcapWriter('capture.pcap')
my_pcap.write(pkts)
my_pcap.close()

我们将其保存在一个名为sniff_it.py的文件中。 sniff功能将在任何接口上捕获发往我的IP地址的前10个数据包。 它将接收这些数据包并将其写入名为capture.pcap的PCAP文件中。 同样,您可以轻松地对数据包进行额外的过滤/处理。 您还可以建立一个循环,将每1000个数据包放入不同的PCAP中。 让我们测试一下。

chmod u+x sniff_it.py
sudo ./sniff_it.py

一旦捕获了10个数据包,就应该将它们写入capture.pcap

tshark -r capture.pcap | head -n 5
1   0.000000 XXX.XXX.XXX.XXX → 10.1.10.127  QUIC 83 Payload (Encrypted), PKN: 38913
2   1.020419 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 5228 → 46064 [ACK] Seq=1 Ack=1 Win=248 Len=0 TSval=1894173688 TSecr=2911532757
3   1.634172 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 443 → 45268 [ACK] Seq=1 Ack=1 Win=36 Len=0 TSval=145613895 TSecr=3189134159
4   4.921444 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 443 → 55626 [ACK] Seq=1 Ack=1 Win=325 Len=0 TSval=751056060 TSecr=3131256344
5   4.921498 XXX.XXX.XXX.XXX → 10.1.10.127  TCP 68 443 → 55626 [ACK] Seq=1 Ack=1397 Win=331 Len=0 TSval=751056060 TSecr=3131256349

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM