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实现simhash算法实例
Apr 25 Python
python实现数组插入新元素的方法
May 22 Python
python简单分割文件的方法
Jul 30 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
详解Python3注释知识点
Feb 19 Python
Python tkinter和exe打包的方法
Feb 05 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
Python中zipfile压缩包模块的使用
May 14 Python
Python list列表删除元素的4种方法
Nov 01 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.ini 中文版
2006/10/28 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python一键升级所有pip package的方法
2017/01/16 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers