Это истинная ошибка, или я просто неправильно понимаю, что происходит? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь создать программу на Pycharm в Kali Linux, которая будет по порядку:

  • Отключен интерфейс
  • Выполнить airmon-ng check kill
  • Пробег iwconfig interface mode monitor
  • Выполнить ifconfig interface up
  • Распечатать, сработало или нет

Я использую часть кода, который использовал для смены MAC-адресов для курса Udemy, который я прохожу, но я не уверен, ускоряет ли он процесс или просто сбивает с толку. Я думаю, что понимаю большинство из них, но я немного повесил трубку.

После того, как я его запустил, похоже, он заработал 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 в исходное состояние.

Вместо этого он сделал именно это, но напечатал сообщение об ошибке, которое я дал ему, хотя больше ничего не говорит о том, что это действительно был сбой.

1 Ответ

1 голос
/ 10 апреля 2019

У вас есть две проблемы в вашем коде:

  • тест 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 значение.

...