2013-12-12 100 views
1

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

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

+0

'tcpdump'可能是你的工具,虽然我从来没有亲自用过python。 – admdrew

+0

http://www.secdev.org/projects/scapy/doc/introduction.html – Blender

回答

0

我相信你看过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将PCAP数据直接输入到stdin,然后跳过名为fifo的中间程序。

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

感谢您的回复!我非常感谢! :) – vit0

+0

@ vit0那么你可以接受的答案,或者至少upvote它! – abasterfield

+0

对不起,我试过upvote但名气太少:(。批准为答案:) – vit0