我正在尝试创建一个python程序,它可以定期轮询来自wifi嗅探工具airodump-ng的输出。我是在运行Raspbian和Python3.4的RPI上这样做的,我已经在几个网站上查找了如何做到这一点,但是每当我尝试这样做时,我就会遇到一种死锁和程序停顿。
我正在使用以下代码:
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的输出。我只想要最新的结果。
发布于 2020-10-17 19:24:11
您可以使用吡咯裂,一种python绑定。
PyrCrack是一个Python,它公开了一个常见的aircrack。由于AircrackNg将在后台进程中运行,并在文件和标准输出中产生可解析的输出,因此最重要的仿生方法是上下文管理器,然后进行清理。
安装:
这个库可以在Pypi上使用,您可以直接用pip安装它:
pip install pyrcrack
使用:
这个库导出了一个基本的aircrack,目的是始终保持一个可读的小代码库。
这导致了一个简单的库,它执行aircrack的每个套件命令,并自动检测其使用指令。在此基础上,它以docstring和run()方法的形式构建继承该用法的类,该方法接受关键字参数和参数,并在尝试运行它们之前对它们进行检查。
一些类将自己公开为异步迭代器,并将其作为airodump-ng的wich返回与其关联客户端的访问点。
您可以查看一些使用示例的示例/文件夹,例如基本的“目标扫描”,它将列出可用的接口,让您选择一个,将其置于监视器模式,并每2秒扫描一次目标更新结果。
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())https://stackoverflow.com/questions/33921229
复制相似问题