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 的 Socket 编程
Mar 24 Python
zookeeper python接口实例详解
Jan 18 Python
python 自动重连wifi windows的方法
Dec 18 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
Python timer定时器两种常用方法解析
Jan 20 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Python图像处理库PIL详细使用说明
Apr 06 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 addcslashes()函数讲解
2019/02/03 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
利用ctypes提高Python的执行速度
2016/09/09 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python difflib模块示例讲解
2017/09/13 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
美国最大点评网站:Yelp
2018/02/14 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
Bibloo罗马尼亚网站:女装、男装、童装及鞋子和配饰
2019/07/20 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
执行力心得体会
2013/12/31 职场文书
抽奖活动主持词
2014/03/31 职场文书
母亲节演讲稿
2014/05/27 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
《夸父追日》教学反思
2016/02/20 职场文书