5

嗨,我正在尝试从airodump-ng mon0获得连续输出

出于这个原因,我试图在一段时间后使用 Popen.communicate 读取airodump-ng mon0的输出,但仍然无法得到任何东西。

import subprocess

airodump = subprocess.Popen(['airodump-ng', 'mon0'],
                        stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE)
try:
    o_airodump, unused_stderr = airodump.communicate(timeout=15)
except subprocess.TimeoutExpired as e:
    airodump.kill()
    o_airodump, unused_stderr = airodump.communicate()
    print(o_airodump)
    print(unused_stderr)

当我运行它时,它会卡在:

o_airodump, unused_stderr = airodump.communicate()

我现在完全被困住了。并且无法找到任何其他方法。请帮忙。

4

1 回答 1

1

我使用以下代码在 60 秒后检索可用的 wifi 网络列表:

def find_wifi(interface):
    table = ''
    stdout = []
    timeout = 60
    table_start = re.compile('\sCH')
    start_time = time.time()

    airodump = subprocess.Popen(['airodump-ng', interface], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, bufsize=1)

    while time.time() < start_time + timeout:
        line = airodump.stdout.readline()
        if table_start.match(line):
            table = ''.join(stdout)
            stdout = []
        stdout.append(line)
    airodump.terminate()
    print(table)
于 2018-09-12T06:21:51.220 回答