我想知道是否有可能实时捕获网络数据包并将其保存到变量中,例如在python中。 我需要一些信息才能从中获取,而不是将其保存到文件中。
我需要捕获http数据包并获取源地址及其内容(应该是一个HTML代码),以便仅从中提取文本,然后对该信息执行其余工作。 没有理由将每个数据包保存到文件中,因为整个过程会更慢。我找了很长时间才能做到这一点,但没有成功。 如果您知道任何可以帮助我做到这一点的工具,请写下来。
答案 0 :(得分:2)
我确定您已经看过有关处理PCAP文件的库的this link。现在的问题是如何在不存储文件的情况下实时获取。
可能最容易使用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