我想知道是否有可能实时捕获网络数据包并将其保存到变量中,例如在 python 中。 我需要从中获取一些信息,而不是将其保存到文件中。
我需要捕获 http 数据包并获取源地址及其内容(应该是 html 代码)以仅从中提取文本,然后根据该信息完成其余工作。 没有理由将每个数据包都保存到文件中,因为整个过程会更慢。我一直在寻找任何工具来执行此操作但没有成功。 如果您知道任何可以帮助我做到这一点的工具,请写下来。
最佳答案
我相信你已经看到了this link关于处理 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 数据直接通过管道传输到标准输入中。
$ sudo tcpdump -s0 -i eth0 -f - tcp port 80 | ./youprogram.py
关于linux - linux 上的实时数据包捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20555947/