利用Python腳本寫端口掃描器socket,python-nmap

    目錄

    前言:

    一個用python寫得簡單得端口掃描器,python環境為 3.7.0,windows系統

    Socket模塊編寫

    掃描給定主機是否開放了指定得端口

    TCP連接掃描是利用TCP得三次握手來確定主機得端口是否開放。確定主機端口開放之后,給端口發送消息,接收端口返回得消息,然后判斷該端口運行得服務。

    使用時,-H 參數可以提供主機得域名或者ip地址,-p/-P 寫要掃描得端口,多個端口用逗號分隔

    # -*- coding: utf-8 -*-import optparsefrom socket import *import threadingthreadLock=threading.Lock() #實例化threadLock對象def connScan(Host,Port):try:conn=socket(AF_INET,SOCK_STREAM)conn.connect((Host,Port))conn.send('test message'.encode("utf-8")) #發送測試信息給端口results=conn.recv(100) #接收主機返回得信息threadLock.acquire() #加鎖print('[+]%d/tcp open'% Port)print('[+] '+results.decode("utf-8"))conn.close()except Exception as e:threadLock.acquire()print(e)print('[-]%d/tcp closed'% Port)finally:threadLock.release() #釋放鎖conn.close()def portScan(Host,Ports):try:IP=gethostbyname(Host) ##獲得對應主機得ip地址except:print("[-] Cannot resolve '%s':Unknown host" %Host)returntry:Name=gethostbyaddr(Host) ##獲得ip對應主機得信息print ("n[+] Scan Results for:"+Name[0])except:print ("n[+] Scan Results for:"+IP)setdefaulttimeout(1)for Port in Ports:print ("Scanning port "+Port)connScan(Host,int(Port))def main():usage="usage %prog -H <target host> -p/-P <target ports>"parser=optparse.OptionParser(usage) #創建對象實例parser.add_option('-H',dest='Host',type='string',help='target host') ##需要得命令行參數parser.add_option('-P','-p',dest='Ports',type='string',help='target ports')(options,args)=parser.parse_args()Host=options.HostPorts=str(options.Ports).split(',')if (Host==None)|(Ports==None): ##如果主機和端口都是空得話print(parser.usage)exit(0)portScan(Host,Ports)if __name__=='__main__':main()

    python-nmap模塊編寫 

    我們還可以通過調用nmap進行端口掃描。

    掃描給定ip或給定網段內指定端口是否開放

    -H 參數可以掃描一個ip地址也可以掃描一個網段,-p 只能指定一個端口

    # -*- coding: utf-8 -*-import nmapimport optparsedef Test(Hosts,port):nm=nmap.PortScanner()nm.scan(Hosts,port)port_int=int(port) #將端口從字符串轉化為int類型得for t in nm.all_hosts():if nm[t].has_tcp(port_int): #如果445端口提供了TCP協議state=nm[t]['tcp'][port_int]['state'] #判斷該TCP 445 端口得狀態if state=='open':print ('[+]Found Target Host:'+t)returndef main():usage="usage %prog -H <target host> -p/-P <target port>"parser=optparse.OptionParser(usage) #創建對象實例parser.add_option('-H',dest='Host',type='string',help='target host') ##需要得命令行參數parser.add_option('-P','-p',dest='Port',type='string',help='target ports')(options,args)=parser.parse_args()Hosts=options.HostPort=options.Portif (Hosts==None)|(Port==None): #如果主機和端口都是空得話print(parser.usage)exit(0) #退出else:Test(Hosts,Port)if __name__=='__main__':main()

    到此這篇關于利用Python寫端口掃描器socket,python-nmap得內容就介紹到這了,更多相關Python socket,python-nmap內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 亚欧在线精品免费观看一区| 曰韩人妻无码一区二区三区综合部| 老熟妇仑乱一区二区视頻| 日本一区二区视频| 免费看一区二区三区四区| 一色一伦一区二区三区| 成人免费区一区二区三区| 美女视频免费看一区二区| 曰韩人妻无码一区二区三区综合部| 精品亚洲一区二区三区在线观看 | 亚洲乱码国产一区三区| 亚洲综合av一区二区三区不卡| 国产一区二区三区不卡AV| 国产精品538一区二区在线| 国产精品一区二区久久精品涩爱| 亚洲福利视频一区| 综合无码一区二区三区| 99久久精品国产高清一区二区| 国产一区二区三区播放| 国产精品一区二区香蕉| 久久精品国内一区二区三区| 亚洲第一区二区快射影院| 亚洲一区电影在线观看| 日韩一区二区三区无码影院| 久久se精品一区精品二区| 亚洲日韩激情无码一区| 香蕉久久av一区二区三区| 无码一区二区三区| 人妻aⅴ无码一区二区三区| 久久青草精品一区二区三区| 性色A码一区二区三区天美传媒 | 国产激情з∠视频一区二区| 日韩人妻无码一区二区三区综合部 | 国产精品合集一区二区三区| 日韩精品无码中文字幕一区二区| 亚洲爆乳精品无码一区二区三区| 国99精品无码一区二区三区| 在线播放一区二区| 亚洲爆乳精品无码一区二区| 国产aⅴ一区二区三区| 亚洲中文字幕丝袜制服一区 |