首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用python收集所有入站TCP流量

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

Stack Overflow用户
提问于 2018-07-12 06:39:07
回答 1查看 132关注 0票数 -1

我正在尝试创建一个python linux脚本,用于侦听所有入站流量。我不想在一个端口上侦听所有流量。任何正确方向的指令或指针都将受到高度赞赏。非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 09:05:33

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

让我们首先为我们的项目创建一个虚拟环境:

代码语言:javascript
复制
python -m venv venv

现在让我们激活它:

代码语言:javascript
复制
source venv/bin/activate

现在让我们安装scapy:

代码语言:javascript
复制
pip install scapy

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

代码语言:javascript
复制
#! ./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中。让我们来测试一下。

代码语言:javascript
复制
chmod u+x sniff_it.py
sudo ./sniff_it.py

捕获10个数据包后,应将其写入capture.pcap。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51295099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档