今天開始讀《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()