繁体   English   中英

在Linux上实时捕获数据包

[英]Live packet capture on linux

我想知道是否有可能实时捕获网络数据包并将其保存到例如python中的变量中。 我需要一些信息来获取它,而不是将其保存到文件中。

我需要捕获http数据包并获取源地址及其内容(应该是html代码),以从中提取文本,然后对该信息进行其余的工作。 没有必要将每个数据包保存到文件中,因为整个过程会更慢。 我一直在寻找很长一段时间的任何工具来做到这一点,但没有成功。 请,如果您知道有什么工具可以帮助我做到这一点,请写下它。

我确定您已经看过有关处理PCAP文件的库的链接 现在的问题是如何实时获取而不存储在文件中。

可能最简单的方法是使用FIFO

$ mkfifo /tmp/tcpdump.fifo

现在您可以捕获数据并将其输入到名为fifo的数据中

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

并且在您的python程序中,您可以按照链接中的说明打开“ /tmp/tcpdump.fifo”作为输入文件。

另外,您可以尝试在程序中打开'/ dev / stdin'并从那里读取数据。 然后,您可以使用Shell并跳过名为fifo的中间件,将PCAP数据直接传递到stdin中。

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

暂无
暂无

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

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