linux上的实时数据包捕获

linux上的实时数据包捕获,linux,networking,live,capture,packet,Linux,Networking,Live,Capture,Packet,我想知道是否有可能实时捕获网络数据包并将其保存到一个变量(例如python中)。 我需要一些信息从中获取,而不是将其保存到文件中 我需要捕获http数据包并获取源地址及其内容(应该是html代码),以便仅从中提取文本,然后对该信息执行其余工作。 没有理由将每个数据包都保存到一个文件中,因为整个过程会更慢。我花了很长时间寻找任何工具来实现这一点,但没有成功。 如果您知道任何可以帮助我实现这一点的工具,请写下来。我相信您已经了解了处理PCAP文件的库。现在的问题是如何在不存储在文件中的情况下实时获取

我想知道是否有可能实时捕获网络数据包并将其保存到一个变量(例如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将PCAP数据直接导入stdin,并跳过名为fifo的中间层

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

tcpdump
可能是您的工具,尽管我个人从未在python中使用过它。@vit0那么您可以接受答案,或者至少对它进行投票!抱歉,我试图提高投票率,但声望太低:(.作为答案批准:)