Python3 批量扫描端口的例子
Python  /  管理员 发布于 7年前   251
用法
本脚本用于批量扫描端口
1.在同目录下创建输入文件,属性inputFile为输入文件名
2.属性th为线程数
3.属性port为探测的目标端口
4.属性arg为默认的命令
不推荐扫描全端口,速度非常慢.脚本中有常见端口,可直接使用
默认命令下端口对应服务可能存在不准确的情况,可加-sV对版本进行详细探测,或对本脚本的输出使用此脚本进行专门的探测
代码
#依赖python-nmap,openpyxl包import nmapimport openpyxlimport IPyfrom multiprocessing import Pool as ThreadPool# 同目录下创建一个input.txt,放入ip地址列(从xlsx中直接粘贴即可)expath=''inputFile='2001_3000.txt'th=20#扫描端口#port='1521,1158,2100,3306,1433,1434,5000,5432,27017,6379,11211,80,8080,443,8000,8081,7001,9080,9090,22,23,10027,3389,5631,111,6000,135,445,139,21,25,110,69,161,162,53,5901,5902,2601-2609 'port='1-65535'#默认命令arg='-Pn -T4'#输出文件名import timetime_rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))outPutFile = time_rq + '2001_3000.txt'def readfile(path): # 返回url列表 file = open(path, 'r',encoding='utf-8') urlList=[] for eachline in file.readlines(): #获得地址段 url=eachline.rsplit()[0] # add=IPy.IP(url)#地址段列表 # for u in add: # ip=u.__str__(); # urlList.append(ip) urlList.append(url); file.close() # 造infoList infoList=[] for url in urlList: info={'hostname':url,'port':port,'arg':arg} infoList.append(info) return infoListdef scan(info): hostName=info['hostname'] port=info['port'] print(hostName+'扫描开始') scanner=nmap.PortScanner() scanner.scan(hosts=hostName,ports=port,arguments=arg) # print(res) out=open(outPutFile,'a+',encoding='utf-8') # out.write() state=scanner[hostName].state() tcp_ports=scanner[hostName].all_tcp() print(hostName+' '+state) for ports in tcp_ports: if scanner[hostName]['tcp'][ports]['state'] =='open' : st=hostName+' '+str(ports)+' '+scanner[hostName]['tcp'][ports]['name']+' '+scanner[hostName]['tcp'][ports]['state']+'\n' out.write(st) print(st) # print(hostName) out.close()def makeEx(): print('----------------开始写入-------------------') wb=openpyxl.load_workbook(expath) sheet=wb.active c=open(outPutFile,'r',encoding='utf-8') i=1 for line in c.readlines(): linelist=line.split() ip=linelist[0] port=linelist[1] name=linelist[2] status=linelist[3] for j in range(4): if j==3: n=linelist[j] n=n.rsplit() n=n[0] sheet.cell(row=i, column=j + 1, value=n) else: sheet.cell(row=i,column=j+1,value=linelist[j]) i=i+1 c.close() wb.save(expath) print('----------------写入完成-------------------')if __name__ == '__main__': print('----------------扫描开始-------------------') start=time.time() pool = ThreadPool(th) infolist=readfile(inputFile) pool.map(scan,infolist) pool.close() pool.join() finish=time.time() print('----------------扫描完成-------------------') t=finish-start print('用时 %f'%t) out = open(outPutFile, 'a+', encoding='utf-8') out.write('\n用时 %f'%t) # makeEx() # info={'hostname':'135.233.115.55','port':'22,23,21,80,3389,5901,5902','arg':'-Pn -sV -T4'}
输入文件示例
61.128.108.9461.128.111.24661.128.122.111222.83.20.1861.128.108.67120.70.226.131
输出文件示例
106.124.93.76 22 ssh open106.124.93.76 23 telnet open106.124.93.76 8000 http-alt open106.124.93.83 23 telnet open
以上这篇Python3 批量扫描端口的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号