这是一个真正的错误,还是我只是误解了正在发生的事情?

时间:2019-04-09 17:18:37

标签: python python-2.7 terminal pycharm kali-linux

我正在尝试在Kali Linux的Pycharm中创建一个程序,该程序将按以下顺序进行:

  • 禁用界面
  • 运行airmon-ng check kill
  • 运行iwconfig interface mode monitor
  • 运行ifconfig interface up
  • 打印是否有效

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

运行它后,它似乎起作用了。 Iwconfig说它处于监视模式,而ifconfig说它处于启动状态。但是,完成后,它会给我我编写的错误消息。真的显示错误吗?

我尝试重新使用用于制作MAC地址转换器的代码,以节省一些时间,并尝试在最后编写一个if is true语句以测试是否启用了监视模式。 / p>

显示器模式代码:

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,通过iwconfig将wlan0设置为监视模式,然后再备份wlan0

它只是这样做了,但是它打印了我给它的错误消息,尽管关于它的其他信息都没有表明它确实是失败的。

1 个答案:

答案 0 :(得分:1)

您的代码中有两个问题:

  • 测试if monitor_mode is True将始终返回False,因为monitor_mode函数,因此您正在将函数与{{1 }}

  • 相反,您应该像这样比较True的返回值:

monitor_mode

但是,只有在更改 if monitor_mode(options.interface): print("[+] Interface switched to monitor mode.") else: print("[-] Error.") 函数以真正地返回一个有用的值(表示其成功或其他...当前总是返回)的情况下,该方法才起作用monitor_mode值。