通過編寫一個簡單的漏洞掃描程序學習Python基本語句


    今天開始讀《Python絕技:運用Python成為頂級黑客》一書,第一章用一個小例子來講解Python的基本語法和語句。主要學習的內容有:1. 安裝第三方庫。2. 變量、字符串、列表、詞典。3. 網絡的編程。4. 條件選擇語句和for循環。5. 異常處理。6. 函數。7. 文件輸入/輸出。8. sys模塊和os模塊。把最后的代碼貼在這里,做個記錄。

import socket
import os
import sys

port = 21
banner = "FreeFloat FTP Server"

portList = [21,22,80,110]
portOpen = True

services = {'ftp':21, 'ssh':22, 'smtp':25, 'http':80}

def retBanner(ip,port):
    try:
        socket.setdefaulttimeout(2)
        s = socket.socket()
        s.connect((ip,port)) 
        banner = s.recv(1024)
        return banner
    except:
        return
    
def checkVulns(banner,filename):
    f = open(filename,'r')
    for line in f.readlines():
        if line.strip('\n') in banner:
            print '[+] Server is vulnerable: ' + banner.strip('\n')


def main():
    if len(sys.argv) == 2:
        filename = sys.argv[1]
        if not os.path.isfile(filename):
            print '[-] ' +filename + ' does not exist.'
            exit(0)
        if not os.access(filename, os.R_OK):
            print '[-] ' +filename + ' access denied.'
            exit(0)
    else:
        print '[-] Usage: ' + str(sys.argv[0]) + ' <vuln filename>'
        exit(0)
    
    portList = [21,22,25,80,110,443]
    for x in range(147,150):
        ip = '192.168.95.' + str(x)
        for port in portList:
            banner = retBanner(ip,port)
            if banner:
                print '[+] ' + ip + ': ' + banner
                checkVulns(banner, filename)
        
if __name__ == '__main__':
    main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM