0

我正在尝试在 Kali Linux 中的 Pycharm 中制作一个程序,该程序将按顺序:

  • 禁用接口
  • airmon-ng check kill
  • iwconfig interface mode monitor
  • ifconfig interface up
  • 打印是否有效

我正在使用一些我用来为我正在学习的 Udemy 课程制作 MAC 地址更改器的代码,但我不确定它是否会使过程更快或更混乱。我想我明白了大部分,但我有点挂了。

在我运行它之后,它似乎已经工作了。iwconfig 说它处于监视模式,ifconfig 说它已启动。但是,当它完成时,它会给我我编写的错误消息。它真的显示错误吗?

我尝试重新使用用于制作 MAC 地址更改器的代码以尝试节省一些时间,并且我尝试if is true在最后编写一个语句来测试监控模式是否打开。

监控模式代码:

monitor_mode(options.interface)



...

def monitor_mode(interface):
    print("[+] Activating Monitor Mode for " + interface)

    subprocess.call(["ifconfig", interface, "down"])
    subprocess.call(["airmon-ng", "check", "kill"])
    subprocess.call(["iwconfig", interface, "mode", "monitor"])
    subprocess.call(["ifconfig", interface, "up"])


options = get_arguments()

monitor_mode(options.interface)

if monitor_mode is True:
    print("[+] Interface switched to monitor mode.")
else:
    print("[-] Error.")

原始 mac_changer 代码:

def change_mac(interface, new_mac):
    print("[+] Changing MAC Address for " + interface + " to " + new_mac)

    subprocess.call(["ifconfig", interface, "down"])
    subprocess.call(["ifconfig", interface, "hw", "ether", new_mac])
    subprocess.call(["ifconfig", interface, "up"])

def get_current_mac(interface):
    ifconfig_result = subprocess.check_output(["ifconfig", interface])
    mac_address_search_result = re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w", ifconfig_result)

    if mac_address_search_result:
        return mac_address_search_result.group(0)
    else:
        print("[-] Could not read MAC address.")

options = get_arguments()

current_mac = get_current_mac(options.interface)
print("Current MAC = " + str(current_mac))

change_mac(options.interface, options.new_mac)

current_mac = get_current_mac(options.interface)
if current_mac == options.new_mac:
    print("[+] MAC successfully changed to " + current_mac)
else:
    print("[-] MAC unchanged.")

我希望我的 monitor_mode 程序通过 关闭wlan0、运行airmon-ng check kill、将 wlan0 开启监控模式iwconfig,然后wlan0重新启动。

相反,它只是这样做了,但它打印了我给它的错误消息,尽管没有其他任何东西表明它确实是一个失败。

4

1 回答 1

1

您的代码中有两个问题:

  • 测试if monitor_mode is True将始终返回False,因为monitor_mode它是一个函数,因此您将函数与True

  • 相反,您应该将返回值进行比较,monitor_mode例如:

      if monitor_mode(options.interface):
          print("[+] Interface switched to monitor mode.")
      else:
          print("[-] Error.")

monitor_mode但是,除非您将函数更改为实际返回一个指示其成功的有用值,否则这将不起作用......目前它总是返回一个False值。

于 2019-04-10T12:21:46.017 回答