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语句。
使用方法
- 准备好你的字典文件,确保格式符合要求。
- 替换代码中的
dictionary_file为你的实际文件路径。 - 运行脚本,就会自动逐个验证账号密码。
内容的提问来源于stack exchange,提问作者luve71
相关产品推荐
相关产品推荐

