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实现的各种排序算法代码
Mar 04 Python
python中__call__方法示例分析
Oct 11 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
以windows service方式运行Python程序的方法
Jun 03 Python
Python网络编程详解
Oct 31 Python
python实现报表自动化详解
Nov 16 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Django处理文件上传File Uploads的实例
May 28 Python
python画折线图的程序
Jul 26 Python
浅谈python之新式类
Aug 12 Python
Python实现八皇后问题示例代码
Dec 09 Python
python 中[0]*2与0*2的区别说明
May 10 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许愿墙模块功能分析
2013/06/25 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
PHP7新特性
2021/03/09 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
上班上网检讨书
2014/01/29 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
新学期开学标语2015
2015/07/16 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android