我正在尝试在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
。
它只是这样做了,但是它打印了我给它的错误消息,尽管关于它的其他信息都没有表明它确实是失败的。
答案 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
值。