#python #python-2.7 #terminal #pycharm #kali-linux
#python #python-2.7 #терминал #pycharm #kali-linux
Вопрос:
Я пытаюсь создать программу в Pycharm в Kali Linux, которая будет, чтобы:
- Отключен интерфейс
- Выполнить
airmon-ng check kill
- Выполнить
iwconfig interface mode monitor
- Выполнить
ifconfig interface up
- Выведите, сработало ли это или нет
Я использую часть кода, который я использовал для изменения MAC-адреса для курса Udemy, который я прохожу, но я не уверен, ускоряет ли это процесс или просто запутывает. Я думаю, что понимаю большую часть этого, но я немного зациклен.
После того, как я его запустил, похоже, он сработал. Iwconfig говорит, что он находится в режиме монитора, а ifconfig говорит, что он включен. Однако, когда он завершается, он выдает мне сообщение об ошибке, которое я запрограммировал в нем. Действительно ли это показывает ошибку?
Я попытался изменить код, который я использовал для смены MAC-адреса, чтобы попытаться сэкономить время, и я попытался запрограммировать if is true
оператор в конце, чтобы проверить, включен ли режим монитора.
код monitor_mode:
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"ww:ww:ww:ww:ww:ww", 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
обратно.
Вместо этого он сделал именно это, но напечатал сообщение об ошибке, которое я ему дал, хотя ничто другое в нем не говорит о том, что это действительно был сбой.
Ответ №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
значение.