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的Django中django-userena组件的简单使用教程
May 30 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
python实现读Excel写入.txt的方法
Apr 29 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
详解python中sort排序使用
Mar 23 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 Python
基于python实现检索标记敏感词并输出
May 07 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python3.9之你应该知道的新特性详解
Apr 29 Python
Python函数式编程中itertools模块详解
Sep 15 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计算两个日期相差天数的方法
2015/03/14 PHP
php跨服务器访问方法小结
2015/05/12 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
学习python处理python编码问题
2011/03/13 Python
python中base64加密解密方法实例分析
2015/05/16 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python冲顶大会 快来答题!
2018/01/17 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
html5唤起app的方法
2017/11/30 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
财产公证书格式
2014/04/10 职场文书
产假请假条
2014/04/10 职场文书
十佳党员事迹材料
2014/08/28 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
贪污检举信范文
2015/03/02 职场文书
公司年夜饭通知
2015/04/25 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
教师节主持词开场白
2015/05/29 职场文书
企业法人代表证明书
2015/06/18 职场文书
Django程序的优化技巧
2021/04/29 Python
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python