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代码(逐级优化)
May 25 Python
Python抓取Discuz!用户名脚本代码
Dec 30 Python
github配置使用指南
Nov 18 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
小小聊天室Python代码实现
Aug 17 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
Docker如何部署Python项目的实现详解
Oct 26 Python
openstack中的rpc远程调用的方法
Jul 09 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
多重?l件?合查?(二)
2006/10/09 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
python爬虫常用的模块分析
2014/08/29 Python
在Python的Django框架中创建和使用模版
2015/07/15 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
python实现定时发送邮件
2020/12/23 Python
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
学校食堂采购员岗位职责
2013/12/05 职场文书
运动会广播稿100字
2014/09/14 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
离婚财产分割协议书
2015/08/11 职场文书
运动会主持人开幕词
2016/03/04 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
导游词之上海豫园
2019/10/24 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL