Это настоящая ошибка, или я просто неправильно интерпретирую происходящее?

#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 значение.