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

news2024/9/23 17:24:17

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.Buffer
	cmd.Stdout = &out
	err := cmd.Run()
	var stderr bytes.Buffer
	cmd.Stderr = &stderr
	if 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 []int
	re := 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.coloradmin.cn/o/1950439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Emacs之解决无法输入中文问题(一百四十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

研究生选择学习Android开发的利与弊?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「Android的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!产品经理可以学学Axure快…

ForCloud赢战攻防 无惧突发0day漏洞 ForCloud虚实结合快速处置

攻防演练前夕,亚信安全威胁情报中心监测到一个存在于Nacos Derby中的0day漏洞,漏洞利用代码为公开状态,攻击者利用此漏洞可在目标服务器上执行任意代码。 造成的破坏程度?你可能正在使用! Nacos(Dynamic …

【React】事件绑定:深入解析高效处理用户交互的最佳实践

文章目录 一、什么是事件绑定?二、基本事件绑定三、绑定 this 上下文四、传递参数五、事件对象六、事件委托七、常见事件处理八、优化事件处理 React 是现代前端开发中最受欢迎的框架之一,其组件化和高效的状态管理能力使得构建复杂的用户界面变得更加容…

Java成为最适合中国人体质编程语言的缘由

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! 语言的流行度Java在中国的普及…

被工信部认可的开源软件治理解决方案

近日,工信部网络安全产业发展中心正式发布了“2023年信息技术应用创新解决方案”,开源网安凭借“基于SCA技术开源软件治理解决方案”顺利入选,成为经工信部认可的优秀解决方案,这是开源网安连续两届荣获此荣誉。 工业和信息化部网…

线性表的链式存储结构————循环链表(java)

线性表的链式存储结构————循环链表(java) 文章目录 线性表的链式存储结构————循环链表(java)什么是循环链表循环链表的实现结语 嗨!收到一张超级美丽的风景图,愿你每天都能顺心! 什么是…

【Django】anaconda环境变量配置及配置python虚拟环境

文章目录 配置环境变量配置python虚拟环境查看conda源并配置国内源在虚拟环境中安装django 配置环境变量 control sysdm.cpl,,3笔者anaconda安装目录为C:\ProgramData\anaconda3 那么需要加入path中的有如下三个 C:\ProgramData\anaconda3 C:\ProgramData\anaconda3\Scripts C:…

由bext安装“异常”引出的话题:windows上转义字符的工作原理

由bext安装“异常”引出的话题:Windows上转义字符的工作原理,与ai“闲扯”不经意学习知识点。 (笔记模板由python脚本于2024年07月25日 19:21:13创建,本篇笔记适合喜欢用ai学习的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff…

【反转链表 II】python刷题记录

印象中,这是遍历r2了,还好没放弃。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def reverseBetween(self, head: Optional…

RFID温度标签: 冷链管理迈向智能化、精准化的新时代。

在现代商业和社会发展中,冷链物流扮演着至关重要的角色。它不仅涉及食品、药品等敏感物资的安全运输,更是保障公众健康与福祉的重要环节。随着人们对生鲜冷链需求的日益增长,冷链物流行业也迎来了以物联网技术为主导发展新阶段。我国冷链物流…

.NET程序集编辑器/调试器 dnSpy 使用介绍

原文链接:https://www.cnblogs.com/zhaotianff/p/17352882.html dnSpy dnSpy是一个.NET程序集调试器和编辑器。它可以用它来编辑和调试程序集,即使在没有源码的情况下。 主要功能: 调试.NET和Unity程序集 编辑.NET和Unity程序集 项目地…

Windows11安装WSL2 笔记240726

以管理员身份打开控制台输入 wsl --status wsl --status如果什么也没有,说明系统还未安装WSL , 执行 wsl --install 进行安装 wsl --install安装完成后, 再次执行 wsl --status 可看到 wsl --status 默认版本: 2 当前计算机配置不支持 WSL1。 若要使用 WSL1,请启用…

vuex学习day01-vuex简述、基于脚手架创建项目、基于脚手架创建项目

1、vuex简述 之所以采用vuex是因为当我们有多个公共状态的组件时,vue的简单性容易崩溃 (1)概念 Vuex 是Vue.js 应用程序的状态管理模式库。简单讲,vuex是vue的一个状态管理工具。 (2)作用 管理vue中的…

SSRF过滤攻击

SSRF绕过: 靶场地址:重庆橙子科技SSRF靶场 这个是毫无过滤的直接读取,但是一般网站会设置有对SSRF的过滤,比如将IP地址过滤。 下面是常用的绕过方式: 1.环回地址绕过 http://127.0.0.1/flag.php http://017700…

三目操作符

双目操作符有、-、*、/、% 单目操作符有--、、、- 三目操作符有表达式1&#xff1f;表达式2&#xff1a;表达式3 如果表达式1为真则表达式2计算否则表达式3计算&#xff0c;计算结果为整个表达式的结果 #include<stdio.h> int main() {int a 0;int b 0;scanf(&quo…

Transformer-Bert---散装知识点---mlm,nsp,较之经典tran的区别和实际应用方式

本文记录的是笔者在了解了transformer结构后嗑bert中记录的一些散装知识点&#xff0c;有时间就会整理收录&#xff0c;希望最后能把transformer一个系列都完整的更新进去。 1.自监督学习 bert与原始的transformer不同&#xff0c;bert是使用大量无标签的数据进行预训练&#…

14 集合运算符和矩阵乘法运算符@

集合的交集、并集、对称差集等运算借助于位运算符来实现&#xff0c;而差集则使用减号运算符实现。 print({1, 2, 3} | {3, 4, 5}) # 并集&#xff0c;自动去除重复元素 print({1, 2, 3} & {3, 4, 5}) # 交集 print({1, 2, 3} - {3, 4, 5}) # 差集 print({1, 2, 4, 6, …

STM32CUBEMX部署生成FreeRTOS创建LED闪烁任务

目录 一、前言 二、详细步骤 三、总结 一、前言 从本文开始&#xff0c;将会逐步介绍FreeRTOS的一些功能&#xff0c;由浅入深。本文将上手通过STM32CUBEMX快速实现FreeRTOS的移植。随后创建点灯任务。 芯片选型&#xff1a;STM32F103C8T6 二、FreeRTOS 如果你想要在单片机…

昇思25天学习打卡营第22天|munger85

LSTMCRF序列标注 我们希望得到这个模型来对词进行标注&#xff0c;B是开始&#xff0c;I是实体词的非开始&#xff0c;O是非实体词。 我们首先需要lstm对序列里token的记忆&#xff0c;和计算每个token发到crf的分数&#xff0c;发完了再退出来&#xff0c;最后形成1模型。那么…