利用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 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 亚洲精品伊人久久久久| 国产精品igao视频| 人妻中文字幕乱人伦在线| 中文字幕免费在线| 色妞色综合久久夜夜| 日本免费看视频| 国产乱女乱子视频在线播放| 久久国产精品免费一区| 邱淑芬一家交换| 无码人妻精品一区二区三区9厂| 国产亚洲综合视频| 久久久久久久性| 久久只有这才是精品99| 香蕉视频网页版| 无码国产精品一区二区免费vr| 国产mv在线天堂mv免费观看| 中国黄色毛片大片| 第四色最新网站| 国语自产精品视频在线第| 亚洲成人免费网址| 狠狠色欧美亚洲综合色黑a| 日韩欧国产精品一区综合无码| 国产交换配乱婬视频| 两个人看的www高清免费观看| 皇后羞辱打开双腿调教h孕| 夜夜未满18勿进的爽影院| 亚洲欧美日韩久久精品第一区 | 亚洲偷偷自拍高清| 亚洲国产香蕉视频欧美| 日本高清免费xxx在线观看| 四虎国产精品成人| a级毛片高清免费视频在线播放| 香港aa三级久久三级老师| 成年男女免费视频网站| 免费一级毛片在线播放泰国| 中文字幕一区在线观看| 百合潮湿的欲望| 国产精品精品自在线拍| 久久怡红院亚欧成人影院| 精品视频一区二区三三区四区| 在线观看的免费视频网站|