首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中轮询airodump-ng的输出

在Python中轮询airodump-ng的输出
EN

Stack Overflow用户
提问于 2015-11-25 16:08:42
回答 2查看 6.6K关注 0票数 6

我正在尝试创建一个python程序,它可以定期轮询来自wifi嗅探工具airodump-ng的输出。我是在运行Raspbian和Python3.4的RPI上这样做的,我已经在几个网站上查找了如何做到这一点,但是每当我尝试这样做时,我就会遇到一种死锁和程序停顿。

我正在使用以下代码:

代码语言:javascript
复制
import subprocess
airodump = subprocess.Popen(['sudo','airodump-ng','mon0'])
out,err = airodump.communicate(timeout=10)

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

那我该怎么解决呢?我只想从airodump-ng获得最新的输出,并且可以简单地在后台、另一个线程中更新airodump的输出。我只想要最新的结果。

EN

回答 2

Stack Overflow用户

发布于 2020-10-17 19:24:11

您可以使用吡咯裂,一种python绑定。

PyrCrack是一个Python,它公开了一个常见的aircrack。由于AircrackNg将在后台进程中运行,并在文件和标准输出中产生可解析的输出,因此最重要的仿生方法是上下文管理器,然后进行清理。

安装:

这个库可以在Pypi上使用,您可以直接用pip安装它:

pip install pyrcrack

使用:

这个库导出了一个基本的aircrack,目的是始终保持一个可读的小代码库。

这导致了一个简单的库,它执行aircrack的每个套件命令,并自动检测其使用指令。在此基础上,它以docstring和run()方法的形式构建继承该用法的类,该方法接受关键字参数和参数,并在尝试运行它们之前对它们进行检查。

一些类将自己公开为异步迭代器,并将其作为airodump-ng的wich返回与其关联客户端的访问点。

您可以查看一些使用示例的示例/文件夹,例如基本的“目标扫描”,它将列出可用的接口,让您选择一个,将其置于监视器模式,并每2秒扫描一次目标更新结果。

代码语言:javascript
复制
import asyncio

import pyrcrack

from rich.console import Console
from rich.prompt import Prompt


async def scan_for_targets():
    """Scan for targets, return json."""
    console = Console()
    console.clear()
    console.show_cursor(False)
    airmon = pyrcrack.AirmonNg()

    interface = Prompt.ask(
        'Select an interface',
        choices=[a['interface'] for a in await airmon.interfaces])

    async with airmon(interface) as mon:
        async with pyrcrack.AirodumpNg() as pdump:
            async for result in pdump(mon.monitor_interface):
                console.clear()
                console.print(result.table)
                await asyncio.sleep(2)


asyncio.run(scan_for_targets())
票数 2
EN

Stack Overflow用户

发布于 2015-11-25 16:23:59

参见文档,按预期工作,特别是注意事项

如果进程在超时秒后未终止,则将引发TimeoutExpired异常。捕获此异常并重新尝试通信不会丢失任何输出。 备注 数据读取是在内存中缓冲的,所以如果数据大小是大的或无限的,就不要使用这种方法。

我想看看威菲特代码,它广泛地使用了airodump!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33921229

复制
相关文章

相似问题

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