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版
Dec 07 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
在Python的web框架中中编写日志列表的教程
Apr 30 Python
Python 描述符(Descriptor)入门
Nov 20 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
深入了解Python 方法之类方法 & 静态方法
Aug 17 Python
python代码实现图书管理系统
Nov 30 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php随机抽奖实例分析
2015/03/04 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
python实现电子词典
2020/03/03 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
keras输出预测值和真实值方式
2020/06/27 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
自荐书模板
2013/12/19 职场文书
给学校建议书范文
2014/05/13 职场文书
个人授权委托书
2014/09/15 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
详解Vue slot插槽
2021/11/20 Vue.js