masscan 端口扫描——(Golang 简单使用总结)

1. 前言

在这里插入图片描述
最近要做一个扫描 ip 端口的功能

扫描的工具有很多,但是如何做到短时间扫描大量的 ip 是个相对困难的事情。

市场上比较出名的工具有 masscannmap

masscan 支持异步扫描,对多线程的利用很好,同时仅仅支持 syn 半开扫描,这让 masscan 对端口进行粗糙扫描的性能达到了非常高的地步

半开扫描是指发送一个 SYN 包(SYN-SENT 状态),等待目标主机回复 SYN+ACK 包(SYN-RECEIVED 状态),然后发送一个 RST 包(ESTABLISHED 状态),以终止连接。半开扫描的优点是速度快,因为它只需要发送一个 SYN 包和一个 RST 包,而不需要完成整个三次握手过程。缺点是容易被一些防火墙和 IDS/IPS 检测到,因为它不是一个完整的连接过程

缺点就是结果比较模糊,无法知道是否是被防火墙 ban 掉的端口

那么用 mmsacn 作为第一层的预处理是很好用的

2. masscan 的安装

准备 (这里不提倡使用yum,yum的版本比较低 )

  1. git 工具
  2. c 编译环境
  1. 克隆、编译
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
  1. 安装
make install
  1. 测试是否安装
masscan --version

在这里插入图片描述

3. masscan 的简单使用

masscan 的主要关乎性能的参数有两个

选项意义
/ --rate发送包的速率,和扫描端口速度正相关
/ --wait发送完包等待时间,和性能负相关,不过时间越久可以扫到的端口就可以越多

实际上,masscan 扫描速度非常快, masscan rate 1000 扫描一个 C 段(256 个 IP 地址)的主机,需要约 3-5 秒钟的时间,一般来说不用担心 masscan 性能不足的问题

  1. 扫描端口范围
masscan -p 1-65535 115.42.32.45
  1. 扫描多个不连续端口
masscan -p 32,43,5453,45 115.42.32.45
  1. 扫描网段
masscan -p 1-65535 10.0.0.0/16

4. Golang 使用

golang 可以通过 cmd 直接和 masscan 进行交互,这里我们直接捕获输出值

startPort := 1
endPort := 65535
portRange := fmt.Sprintf("%d-%d", startPort, endPort)// 构建 masscan 命令cmd := exec.Command("sudo", "masscan", ip, "-p", portRange, "--rate", "50k")// 获取命令输出var out bytes.Buffercmd.Stdout = &outerr := cmd.Run()var stderr bytes.Buffercmd.Stderr = &stderrif err != nil {fmt.Printf("Error running masscan: %v\n", err)return nil, err}fmt.Printf(out)

通过golang 结合命令行可以很方便的对 masscan 结果进行处理

我们也可以把它解析为数组

func parseMasscanOutput(output string) []int {var openPorts []intre := regexp.MustCompile(`port (\d+)/tcp`)matches := re.FindAllStringSubmatch(output, -1)for _, match := range matches {if len(match) > 1 {portStr := match[1]portInt, err := strconv.Atoi(portStr)if err != nil {fmt.Printf("Error running masscan: %v\n", err)continue}openPorts = append(openPorts, portInt)}}return openPorts
}

5. 总结

masscan 是非常高性能的端口扫描工具(高到不需要考虑优化),我们可以使用masscan 进行一次扫描后,再后续使用其他工具进行处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384269.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】——红黑树(手撕红黑树,彻底弄懂红黑树)

目录 前言 一 红黑树简介 二 为什么需要红黑树 三 红黑树的特性 四 红黑树的操作 4.1 变色操作 4.2 旋转操作 4.3 插入操作 4.4 红黑树插入代码实现 4.5 红黑树的删除 五 红黑树迭代器实现 总结 前言 我们之前都学过ALV树,AVL树的本质就是一颗平…

magento2 安装win环境和linux环境

win10 安装 安装前提,php,mysql,apach 或nginx 提前安装好 并且要php配置文件里,php.ini 把错误打开 display_errorsOn开始安装 检查环境 填写数据库信息 和ssl信息,如果ssl信息没有,则可以忽略 填写域名和后台地址&#xff0…

Vue入门(二)常用指令

一、Vue 常用指令 Vue 常用指令 - 指令:是带有 v- 前缀的特殊属性,不同指令具有不同含义。例如 v-html,v-if,v-for。 - 使用指令时,通常编写在标签的属性上,值可以使用 JS 的表达式。 - 常用指令 二、常用…

ControlNet on Stable Diffusion

ControlNet on Stable Diffusion 笔记来源: 1.Adding Conditional Control to Text-to-Image Diffusion Models 2.How to Use OpenPose & ControlNet in Stable Diffusion 3.ControlNet与DreamBooth:生成模型的精细控制与主体保持 4.Introduction t…

计算机毕业设计django+hadoop+scrapy租房可视化 租房推荐系统 租房大屏可视化 租房爬虫 spark 58同城租房爬虫 房源推荐系统

python scrapy bootstrap jquery css javascript html 租房信息数据展示 租房地址数量分布 租房类型统计 租房价格统计分析 租房面积分析 房屋朝向分析 房屋户型平均价格统计分析 房屋楼层统计分析 房屋楼层与价格统计分析 房屋地址与价格统计分析 房屋相关信息词云展示 租房…

自定义prometheus监控获取nginx_upstream指标

1、前言 上篇文章介绍了nginx通过nginx_upstream_check_module模块实现后端健康检查,这篇介绍一下如何自定义prometheus监控获取nginx的upstream指标来实时监控nginx。 2、nginx_upstream_status状态 支持以下三种方式查看nginx_upstream的状态 /status?formatht…

【PyTorch】基于LSTM网络的气温预测模型实现

假设CSV文件名为temperature_data.csv,其前五行和标题如下: 这里,我们只使用Temperature列进行单步预测。以下是整合的代码示例: import pandas as pd import numpy as np import torch import torch.nn as nn import torch.op…

NLP基础知识2【各种大模型的注意力】

注意力 传统Attention存在的问题优化方向变体有哪些现在的主要变体集中在KVMulti-Query AttentionGrouped-query AttentionFlashAttention 传统Attention存在的问题 上下文约束速度慢,显存占用大(因为注意力考虑整体信息,所以每一个位置都要…

Redis7(二)Redis持久化双雄

持久化之RDB RDB的持久化方式是在指定时间间隔,执行数据集的时间点快照。也就是在指定的时间间隔将内存中的数据集快照写入磁盘,也就是Snapshot内存快照,它恢复时再将硬盘快照文件直接读回到内存里面。 RDB保存的是dump.rdb文件。 自动触发…

Docker-Compose实现MySQL之主从复制

1. 主服务器(IP:192.168.186.77) 1.1 docker-compose.yml services:mysql-master:image: mysql:latest # 使用最新版本的 MySQL 镜像container_name: mysql-master # 容器的名称environment:MYSQL_ROOT_PASSWORD: 123456 # MySQL root 用户的密码MYSQL_DATABASE: masterd…

-XX:MaxDirectMemorySize和-Dio.netty.maxDirectMemory区别

-XX:MaxDirectMemorySize是java运行参数,用户控制java程序可以使用的最大直接内存(堆外/本地); -Dio.netty.maxDirectMemory是netty运行参数,用户控制netty程序可以使用的最大直接内存(堆外/本地&#xff…

【深度学习】yolov8-seg分割训练,拼接图的分割复原

文章目录 项目背景造数据训练 项目背景 在日常开发中,经常会遇到一些图片是由多个图片拼接来的,如下图就是三个图片横向拼接来的。是否可以利用yolov8-seg模型来识别出这张图片的三张子图区域呢,这是文本要做的事情。 造数据 假设拼接方式有…

Django—admin后台管理

Django官网 https://www.djangoproject.com/ 如果已经有了Django跳过这步 安装Django: 如果你还没有安装Django,可以通过Python的包管理器pip来安装: pip install django 创建项目: 使用Django创建一个新的项目: …

常见的CSS属性(一)——字体、文本、边框、内边距、外边距、背景、行高、圆角、透明度、颜色值

一、字体 二、文本 三、边框 四、外边距 五、内边距 六、背景 七、行高 八、圆角 九、透明度 九、颜色值 元素的继承性是指给父元素设置了某些属性,子元素或后代元素也会有作用。 一、字体 “font-*”是字体相关的属性,具有继承性。代码如下&a…

普乐蛙VR航天航空体验馆知识走廊VR体验带你登陆月球

VR航天航空设备是近年来随着虚拟现实(VR)技术的快速发展而兴起的一种新型设备,它结合了航天航空领域的专业知识与VR技术的沉浸式体验,为用户提供了前所未有的航天航空体验。以下是对VR航天航空设备的详细介绍: 一、设备…

nodejs编译报错 集合

目录 一、使用命令编译typescript时报错,报错文件tsconfig.json 二、npm start运行后报错,could not find module 一、使用命令编译typescript时报错,报错文件tsconfig.json npx tsc 报错: Specified include paths were [&…

PyTorch安装CUDA标准流程(可解决大部分GPU无法使用问题)

最近一段时间在研究PyTorch中的GPU的使用方法,之前曾经安装过CUDA,不过在PyTorch中调用CUDA时无法使用。考虑到是版本不兼容问题,卸载后尝试了其他的版本,依旧没有能解决问题,指导查阅了很多资料后才找到了解决方案。 …

uni-app声生命周期

应用的生命周期函数在App.vue页面 onLaunch:当uni-app初始化完成时触发(全局触发一次) onShow:当uni-app启动,或从后台进入前台时显示 onHide:当uni-app从前台进入后台 onError:当uni-app报错时触发,异常信息为err 页面的生命周期 onLoad…

什么是设备运维管理系统?有什么作用?(6款设备运维管理系统推荐)

一、什么是设备运维管理系统? 设备运维管理系统是一种集成了监控、管理、维护和优化设备性能的软件平台。它旨在通过自动化的手段,提高设备运行的可靠性和效率,降低运维成本,并优化资源利用。 设备运维管理系统能够实时监控设备…

图片上传成功却无法显示:静态资源路径配置问题解析

1、故事的背景 最近,有个学弟做了一个简单的后台管理页面。于是他开始巴拉巴拉撘框架,写代码,一顿操作猛如虎,终于将一个简单的壳子搭建完毕。但是在实现功能:点击头像弹出上传图片进行头像替换的时候,卡壳…