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 help()函数用法详解
Mar 11 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python3实现mysql导出excel的方法
Jul 31 Python
python 非线性规划方式(scipy.optimize.minimize)
Feb 11 Python
使用npy转image图像并保存的实例
Jul 01 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
python 获取剪切板内容的两种方法
Nov 28 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
LeetCode189轮转数组python示例
Aug 05 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
简单的辞职信范文
2014/01/18 职场文书
公证书样本
2014/04/10 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
团队会宣传标语
2014/10/09 职场文书
高中校园广播稿
2014/10/21 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
2015年中秋寄语
2015/07/31 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
MySQL 开窗函数
2022/02/15 MySQL