0

我正在使用 python 编写一个脚本,首先我将 ettercap 设置为 ARP 中毒,然后启动 urlsnarf 来记录 URL。我想让ettercap先启动,然后在中毒时启动urlsnarf。问题是这些作业必须同时运行,然后urlsnarf显示输出。所以我认为如果我可以在后台运行ettercap而不等待退出然后运行urlsnarf会很好。我尝试了命令 nohup 但当时 urlsnarf 必须显示脚本刚刚结束的 url。我跑:

subprocess.call(["ettercap",
                 "-M ARP /192.168.1.254/ /192.168.1.66/ -p -T -q -i wlan0"])

但我得到:

ettercap NG-0.7.4.2 版权所有 2001-2005 ALoR & NaGA

不支持 MITM 方法' ARP /192.168.1.254/ /192.168.1.66/ -p -T -q -i wlan0'...

这意味着以某种方式没有正确传递参数

4

1 回答 1

1

您可以使用 Python 标准库中的 subprocess 模块将 ettercap 作为一个单独的进程生成,该进程将与父进程同时运行。使用子进程中的 Popen 类,您将能够生成您的 ettercap 进程运行您的其他处理,然后在完成后终止 ettercap 进程。更多信息:Python 子进程包

import shlex, subprocess

args = shlex.split("ettercap -M ARP /192.168.1.254/ /192.168.1.66/ -p -T -q -i wlan0")
ettercap = subprocess.Popen(args)

# program continues without waiting for ettercap process to finish.
于 2013-05-11T15:00:20.877 回答