Python3 批量扫描端口的例子
作者:BYS_PrintF_ 发布时间:2021-12-20 05:17:37
标签:Python3,批量,扫描,端口
用法
本脚本用于批量扫描端口
1.在同目录下创建输入文件,属性inputFile为输入文件名
2.属性th为线程数
3.属性port为探测的目标端口
4.属性arg为默认的命令
不推荐扫描全端口,速度非常慢.脚本中有常见端口,可直接使用
默认命令下端口对应服务可能存在不准确的情况,可加-sV对版本进行详细探测,或对本脚本的输出使用此脚本进行专门的探测
代码
#依赖python-nmap,openpyxl包
import nmap
import openpyxl
import IPy
from 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 time
time_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 infoList
def 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.94
61.128.111.246
61.128.122.111
222.83.20.18
61.128.108.67
120.70.226.131
输出文件示例
106.124.93.76 22 ssh open
106.124.93.76 23 telnet open
106.124.93.76 8000 http-alt open
106.124.93.83 23 telnet open
来源:https://blog.csdn.net/BYS_PrintF_/article/details/79706238


猜你喜欢
- 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如
- 阅读上一篇教程:WEB2.0网页制作标准教程(8)CSS布局入门接下来开始要真正设计布局了。和传统的方法一样,你首先要在脑海里有大致的轮廓构
- 在网站中经常会生成表格,CSV和Excel都是常用的报表格式,CSV相对来说比较简单,如果大家有疑问我会相继发布一些CSV的实例,这里主要介
- 2008年的圣诞节LOGO依旧延续着2007年的圣诞老人、鹿车、红帽子、圣诞树、蜡烛等元素装点。当然,也少不了雪花,但在LOGO设计上,较0
- 在新版的Vue CLI 3中,如何导入公共less文件在文档里已经描述的很清楚了,但是在2.*的版本中,我没有查到相关的办法,网友的办法又相
- 这次代码主要是实现列表的排序,使用sort函数实现,sort函数是对列表中的元素按照特定顺序进行排序,默认reverse,为false,从小
- 最近要做数据库同步,如果网上找了例子,成功,记录下来,下回再看。这个是网上找的一编文章。以下配置在本机上已经成功:实现功能:A为主服务器,B
- Python中的切片知识.在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。
- 一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作
- 导语:举例:Python做一个根据后缀名整理文件的工具,先来看看效果:自动整理前:自动整理后:这样看起来就好很多了。1.准备开始之前,你要确
- 前面讲解了使用纯numpy实现数值微分和误差反向传播法的手写数字识别,这两种网络都是使用全连接层的结构。全连接层存在什么问题呢?那就是数据的
- 和我之前写的通过导入jdbc驱动jar包来连接mysql数据库而言,用mybatis来说可以有很多好处呀,首先mybatis,就是对jdbc
- 本文实例讲述了Python实现清理微信僵尸粉功能。分享给大家供大家参考,具体如下:原理通过Pyhton调用itchat模块登录网页版微信,给
- 在vue-router控制前端权限是常见需求:有一种做法是直接在后端完成判断,提供页面列表和操作列表,在前端进行渲染,但这个方案并不优雅,前
- 1. 引言本文是数独游戏问题求解的第二篇,在前文中我们使用回溯算法实现了最简单版本的数独游戏求解方案。本文主要在前文解决方案的基础上,来思考
- configparser中默认值的设定在做某一个项目时,在读配置文件中,当出现配置文件中没有对应项目时,如果要设置默认值,以前的做法是如下的
- 【人工智能项目】Python Flask搭建yolov3目标检测系统后端代码from flask import Flask, request
- 本文实例讲述了asp.net实现图片以二进制流输出的两种方法。分享给大家供大家参考,具体如下:方法一:System.IO.MemoryStr
- 从控制台输入要出的拳 —— 剪刀(0)/石头(1)/布(2) 电脑 **随机*
- 假设访问的views.py如下1.使用url配置默认页from django.conf.urls import urlfrom django