世界微动态丨利用Python脚本写端口扫描器socket,python-nmap
(资料图)
目录
Socket模块编写扫描给定主机是否开放了指定的端口python-nmap模块编写扫描给定ip或给定网段内指定端口是否开放前言:
一个用python写的简单的端口扫描器,python环境为 3.7.0,windows系统
Socket模块编写
扫描给定主机是否开放了指定的端口
TCP连接扫描是利用TCP的三次握手来确定主机的端口是否开放。确定主机端口开放之后,给端口发送消息,接收端口返回的消息,然后判断该端口运行的服务。
使用时,-H参数可以提供主机的域名或者ip地址,-p/-P写要扫描的端口,多个端口用逗号分隔
# -*- coding: utf-8 -*- import optparse from socket import * import threading threadLock=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) return try: 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-p/-P " 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.Host Ports=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 nmap import optparse def 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) return def main(): usage="usage %prog -H-p/-P " 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.Host Port=options.Port if (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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单