You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python FTP账号密码批量验证脚本开发求助:如何将字典遍历逻辑整合至FTP登录代码中

批量FTP账号密码验证脚本实现方案

没问题!我帮你把字典遍历逻辑整合到现有代码中,实现批量验证FTP账号密码的功能。下面是完整的实现代码,我会逐部分解释关键细节:

完整代码

import ftplib

def ftp_login(hostname, username, password):
    """尝试使用指定的用户名和密码登录FTP服务器"""
    try:
        ftp = ftplib.FTP(hostname)
        # 尝试登录
        ftp.login(username, password)
        print(f'\n[+] {hostname} FTP Logon Succeeded! Username: {username}, Password: {password}')
        ftp.quit()
        return True
    except ftplib.error_perm:
        # 权限错误,说明账号密码不对
        print(f'\n[-] {hostname} FTP Logon Failed for Username: {username}, Password: {password}')
        return False
    except Exception as e:
        # 处理其他异常,比如连接超时、服务器不可达等
        print(f'\n[!] {hostname} Connection Error: {str(e)}')
        return False

def load_credentials(dictionary_file):
    """从字典文件中加载用户名和密码组合"""
    credentials = []
    try:
        with open(dictionary_file, 'r') as f:
            for line in f:
                # 去除首尾空白字符,避免空行或多余空格影响
                line = line.strip()
                if not line:
                    continue
                # 拆分用户名和密码(假设每行用空格分隔)
                parts = line.split()
                if len(parts) == 2:
                    username, password = parts
                    credentials.append((username, password))
                else:
                    print(f'\n[!] 无效的行格式: {line},跳过该行')
    except FileNotFoundError:
        print(f'\n[!] 字典文件 {dictionary_file} 未找到!')
        exit(1)
    return credentials

def main():
    host = '127.0.0.1'
    dictionary_file = 'ftp_creds.txt'  # 替换成你的字典文件路径
    
    print(f'[*] 开始验证 {host} 的FTP账号密码...')
    credentials = load_credentials(dictionary_file)
    
    if not credentials:
        print('[!] 未加载到有效的账号密码组合,退出')
        return
    
    for username, password in credentials:
        # 如果找到有效账号,可以选择停止继续验证,或者继续遍历
        if ftp_login(host, username, password):
            # 可选:找到第一个有效账号后退出,注释掉下面的行可以继续遍历所有组合
            print('[*] 找到有效账号,停止验证')
            break

if __name__ == '__main__':
    main()

关键细节说明

  • 重构登录函数:把原来的匿名登录函数改成通用的ftp_login,接受用户名和密码参数,针对性处理不同异常(权限错误对应账号密码不匹配,其他异常对应连接类问题)。
  • 安全读取文件:使用with语句自动关闭文件,避免资源泄漏;同时处理空行和格式错误的行,防止脚本因为无效内容崩溃。
  • 字典文件格式要求:每行一个用户名和密码,用空格分隔(比如admin 123456)。如果你的文件用其他分隔符(比如逗号),只需要把split()改成split(',')即可。
  • 可选逻辑:代码中设置了找到有效账号后停止验证,如果你想遍历所有组合,只需要注释掉break语句。

使用方法

  1. 准备好你的字典文件,确保格式符合要求。
  2. 替换代码中的dictionary_file为你的实际文件路径。
  3. 运行脚本,就会自动逐个验证账号密码。

内容的提问来源于stack exchange,提问作者luve71

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:34:07