Python3 批量扫描端口的例子


Posted in Python onJuly 25, 2019

用法

本脚本用于批量扫描端口

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

以上这篇Python3 批量扫描端口的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的id()函数介绍
Feb 10 Python
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
Python实现屏幕录制功能的代码
Mar 02 Python
如何用python处理excel表格
Jun 09 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
python3 批量获取对应端口服务的实例
Jul 25 #Python
Python实现微信小程序支付功能
Jul 25 #Python
Form表单及django的form表单的补充
Jul 25 #Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 #Python
python按修改时间顺序排列文件的实例代码
Jul 25 #Python
在python中用url_for构造URL的方法
Jul 25 #Python
对python中url参数编码与解码的实例详解
Jul 25 #Python
You might like
php异常处理技术,顶级异常处理器
2012/06/13 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
浅析Git版本控制器使用
2017/12/10 Python
Python求出0~100以内的所有素数
2018/01/23 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
What is EJB
2016/07/22 面试题
计算机大学生的自我评价
2013/10/15 职场文书
中学生学习生活的自我评价
2013/10/26 职场文书
活动策划邀请函
2014/02/06 职场文书
师德建设实施方案
2014/03/21 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers