- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这个小脚本可以让您的无线设备进入监控模式。它执行 airodump 扫描,然后在终止扫描后将输出转储到 file.txt 或变量,这样我就可以抓取 BSSID 和我可能需要的任何其他信息。
我觉得我还没有掌握 subprocess.call()
和 subprocess.Popen()
之间的概念或区别。
这是我目前拥有的:
def setup_device():
try:
output = open("file.txt", "w")
put_device_down = subprocess.call(["ifconfig", "wlan0", "down"])
put_device_mon = subprocess.call(["iwconfig", "wlan0", "mode", "monitor"])
put_device_up = subprocess.call(["iwconfig", "wlano", "up"])
start_device = subprocess.call(["airmon-ng", "start", "wlan0"])
scanned_networks = subprocess.Popen(["airodump-ng", "wlan0"], stdout = output)
time.sleep(10)
scanned_networks.terminate()
except Exception, e:
print "Error:", e
我仍然不知道何时何地以何种方式使用 subprocess.call()
和 subprocess.Popen()
我认为最让我困惑的是 stdout
和 stderr
args。什么是 PIPE
?
一旦我更好地掌握,我可能会解决的另一件事是:
运行 subprocess.Popen()
并运行 airodump 时,会弹出控制台窗口显示扫描结果。有没有办法向用户隐藏此信息以进行清理?
最佳答案
如果您不想,则不必使用 Popen()
。模块中的其他函数,例如 .call()
使用 Popen()
,为您提供更简单的 API 来执行您想要的操作。
所有控制台应用程序都有 3 个"file"流:stdin
用于输入,stdout
和 stderr
用于输出。应用程序决定在哪里写什么;通常错误和诊断信息发送到stderr
,其余的发送到stdout
。如果您想在您的 Python 程序中捕获这些输出中的任何一个,您可以指定 subprocess.PIPE
参数,以便将“流”重定向到您的程序中。因此得名。
如果你想捕获airodump-ng wlan0
命令的输出,最简单的方法是使用subprocess.check_output()
功能;它会为您处理 PIPE
参数:
scanned_networks = subprocess.check_output(["airodump-ng", "wlan0"])
现在 output
包含写入其 stdout
流的任何 airodump-ng
。
如果你需要对进程有更多的控制,那么你确实需要使用Popen()
类:
proc = subprocess.Popen(["airodump-ng", "wlan0"], stdout=subprocess.PIPE)
for line in proc.stdout:
# do something with line
proc.terminate()
关于python - 何时使用 subprocess.call() 或 subprocess.Popen(),运行 airodump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882112/
我正在开发一个大学项目,该项目是aircrack-ng套件的GUI包装器,我们正在Python 3中实现该项目 当我手动运行命令时,我似乎遇到了脚本问题,就像我运行 airodump-ng 写入 .c
我在 Oracle VM VirtualBox 上使用 Kali-linux 32 位,并且 airodump-ng 遇到此问题, 我获取了无线卡的接口(interface)名称,并使用airmon-
我需要 airodump-ng 的库接口(interface)吗? C++/C 或 Python 或任何东西都可以。我只需要找到我所在地区周围的 ap 和电台以及它的速率和信号。不需要数据。如果 Ai
我试图使用子进程从 airodump-ng 获取标准输出,但没有成功。我认为我的代码导致了死锁。 airodump = subprocess.Popen(['airodump-ng','mon0
当我执行命令 airodump-ng mon0 >> output.txt 时,output.txt 为空。我需要能够运行 airodump-ng mon0 并在大约 5 秒后停止命令,然后才能访问其
这简直要了我的命。我一整天都在做这个,但被困住了。 我的目标是运行 airodump-ng 大约 10 秒,然后终止该进程,以便生成的 csv 文件停止不断更新。 由于各种原因,我尝试了很多实现,但都
我要做的是每 10 秒记录一次 airodump-ng 的输出。 第一次尝试: 通过 airodump-ng documentation他们提到了这样一个命令--write-interval当我尝试使
在我的 Raspberry Pi 上,我想在 pi 每次启动时执行一些代码。所以我将以下行添加到/etc/rc.local /home/pi/Documents/start.sh & 在该文件中我有以
我正在尝试创建一个 python 程序,该程序可以定期轮询 airodump-ng(一种 wifi 嗅探工具)的输出。我在运行 Raspbian 和 Python 3.4 的 RPI 上执行此操作我已
我有这个小脚本可以让您的无线设备进入监控模式。它执行 airodump 扫描,然后在终止扫描后将输出转储到 file.txt 或变量,这样我就可以抓取 BSSID 和我可能需要的任何其他信息。 我觉得
您好,我正在尝试从 airodump-ng mon0 获取连续输出 出于这个原因,我尝试在一段时间后使用 Popen.communicate 读取 airodump-ng mon0 的输出,但仍然无法
我是一名优秀的程序员,十分优秀!