我有一个小脚本,可以将您的无线设备切换到监视模式。它进行了一个airodump扫描,然后在终止扫描后将输出转储到file.txt或变量中,因此我可以获取BSSID和其他所需信息。
我感觉我还没有掌握subprocess.call()和subprocess.Popen()之间的概念或区别。
这是我目前拥有的:
我感觉我还没有掌握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
参数。什么是PIPE
?
另一件可能需要我自己解决的事情是:
当运行subprocess.Popen()
并运行airodump时,控制台窗口会弹出显示扫描结果。是否有方法可以隐藏这个窗口,以使用户界面更加干净整洁?
airdump-ng
一直运行直到终止,你需要使用Popen()
并将stdout
重定向到你的Python程序。我提供了一个示例。 - Martijn Pietersbreak
来结束循环。 - Martijn Pieters