在Python中轮询airodump-ng的输出

我正在尝试创建一个 python程序,可以定期轮询airodump-ng的输出,这是一个wifi嗅探工具.我在运行Raspbian和 Python 3.4的RPI上执行此操作

我已经在几个网站上查找了如何做到这一点,但每当我尝试这个时,我会遇到一种僵局,程序会停滞不前.

我正在使用此代码:

import subprocess
airodump = subprocess.Popen(['sudo','airodump-ng','mon0'])
out,err = airodump.communicate(timeout=10)

所以奇怪的是,当我逐一将这些命令输入到在RPI上运行的IDLE时,一切正常,但是10秒后我得到一个超时错误.当不使用超时参数时,程序就会停止.使用额外参数’stdout = subprocess.PIPE’也不起作用.
但是当我使用命令’python3’进入终端并启动python然后键入第一行和第二行时,整个屏幕将填充airodump-ng的输出,我不能再输入任何内容了!

那我怎么解决这个问题呢?我只是想从airodump-ng获得最新的输出,airodum-ng的输出可以在后台更新,在另一个线程中.我只想要最新的输出.

最佳答案 看 doc,按预期工作,尤其是Note

If the process does not terminate after timeout seconds, a TimeoutExpired exception will be raised. Catching this exception and retrying communication will not lose any output.

Note

The data read is buffered in memory, so do not use this method if the
data size is large or unlimited.

我会看一下大量使用airodump的wifite代码!

点赞