首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python subprocess.Popen耦合方法输出airodump-ng

用python subprocess.Popen耦合方法输出airodump-ng
EN

Stack Overflow用户
提问于 2017-07-13 07:59:15
回答 1查看 1.6K关注 0票数 5

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

由于这个原因,在使用airodump-ng mon0之后,我试图读取Popen.communicate的输出,但仍然得不到任何信息。

代码语言:javascript
复制
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)

当我运行这个程序时,它会被困在:

代码语言:javascript
复制
o_airodump, unused_stderr = airodump.communicate()

我现在完全被困住了。也找不到其他方法。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2018-09-12 06:21:51

在60秒后,我使用了以下代码来提取可供选择的wifi网络列表:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45074734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档