python3 批量获取对应端口服务的实例
作者:BYS_PrintF_ 发布时间:2021-07-14 11:52:05
标签:python3,批量,端口
思路懒得写了.
依赖python-nmap,先在电脑上装nmap,不然用不了.openpyxl实际上没有用到,可以不安装.
makeEx()没用到,懒得删了.
#依赖python-nmap,openpyxl包
import nmap
import time
import openpyxl
from multiprocessing.dummy import Pool as ThreadPool
import multiprocessing
# 1.同目录下创建一个input.txt,放入ip地址列(从xlsx中直接粘贴即可)
# 2.输出表格位置,需要先创建这个表格
expath=''
inputFile='remain.txt'
#扫描端口
#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 -sV'
#输出文件名
import time
time_rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))
outPutFile = time_rq + inputFile
def readfile(path,lock):
# 返回url列表
file = open(path, 'r',encoding='utf-8')
urlList=[]
portList=[]
for eachline in file.readlines():
#获得地址段
x=eachline.split()
url=x[0]
port=x[1]
# add=IPy.IP(url)#地址段列表
# for u in add:
# ip=u.__str__();
# urlList.append(ip)
urlList.append(url)
portList.append(port)
file.close()
# 造infoList
infoList=[]
for index,url in enumerate(urlList):
info={'hostname':url,'port':portList[index],'arg':arg,'lock':lock}
infoList.append(info)
return infoList
def scan(info):
hostName=info['hostname']
port=info['port']
lock=info['lock']
print(hostName+' '+port+' 扫描开始')
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']+'\n'
# lock.acquire()
out.write(st)
print(st)
# lock.release()
# 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('----------------扫描开始-------------------')
lock=multiprocessing.Manager().Lock()
start=time.time()
pool = ThreadPool(30)
infolist=readfile(inputFile,lock)
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'}
来源:https://blog.csdn.net/BYS_PrintF_/article/details/79702510


猜你喜欢
- 使用Django意味着后台框架的几乎所有内容都会和Django产生互动,排除功能全部手撸的情况.Django 后台admin有大量的属性和方
- 当前登入的用户以及他(她)的权限可以通过 RequestContext 在模板的context中使用。注意从技术上来说,只有当你使用了 Re
- 最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。其中tensorboard
- 在使用Django项目中,From表单提交了图片集合var formdata = new FormData();formdata.appen
- 1.简介本文将介绍首先为什么需要主动关闭goroutine,并介绍如何在Go语言中关闭goroutine的常见套路,包括传递终止信号和协程内
- 本文实例分析了Go语言中关闭带缓冲区的频道。分享给大家供大家参考。具体分析如下:Go语言提供了两种频道,带缓冲区和不带缓冲区的。不带缓冲区的
- 本文介绍了python 支持向量机非线性回归SVR模型,废话不多说,具体如下:import numpy as npimport matplo
- 本文实例讲述了Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息。分享给大家供大家参考,具体如下:进行图像绘制有时候需
- 在进行大量数据训练神经网络的时候,可能需要批量读取数据。于是参考了这篇文章的代码,结果发现数据一直批量循环输出,不会在数据的末尾自动停止。然
- 安装pip install faker使用简单使用本库可生成姓名、地址、电话、邮箱、公司等等一系列数据。首先导入库,实例化:from fak
- 本文实例分析了Python中的异常处理try/except/finally/raise用法。分享给大家供大家参考,具体如下:异常发生在程序执
- 本文实例为大家分享了Python实现24点小游戏的具体代码,供大家参考,具体内容如下玩法:通过加减乘除操作,小学生都没问题的。源码分享:im
- 前言自从学过存储过程后,就再也没有碰过存储过程,这是毕业后写的第一个存储过程。因为项目里设备的种类比较多,分别存在不同的数据表中,java中
- 以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3],如下:>>>
- 类代码:# -*- coding:gbk -*-import ConfigParser, osclass INIFILE: de
- 概述据说fastapi是目前最快的异步框架,遂决定将其和django异步进行并发比较。先说结果fastapi的异步可以使整体运行速度非常均衡
- 年初的时候收藏过一篇关于mysqlreport的报表解读,和内置的show status,和show variables相比mysqlrep
- 1. 二维数据曲线图1.1 绘制二维曲线的基本函数1.plot()函数 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对
- 本文实例讲述了python实现的DES加密算法和3DES加密算法。分享给大家供大家参考。具体实现方法如下:#################
- 摘要:将英文单词首字母变成大写是一个古老的话题,很常用,也很简单。不过如何用更简单的方式批量完成这个工作,则有很多学问,不想来看看吗!将英文