自己手动在Linux上实现一个简易的端口扫描器

news2025/1/14 0:52:42

背景

常常听到网络攻击有一个东西叫做端口扫描器,可以扫描指定服务器开放的端口,然后尝试连接,并寻找漏洞,最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序,看上去很厉害的样子。而实际上这些东西对于懂行的人的来说,那可就太简单了。本文就演示一下快速写一个端口扫描器,仅供参考,来揭开一下端口扫描器的神秘面纱。

 

分析

所谓端口扫描,就是探测服务器哪些端口被公开。如果这些端口是无意中公开了,且没有设置良好的安全策略,就存在安全漏洞。通过端口扫描,锁定端口后,利用已知的漏洞和攻击方法,然后尝试攻击。一旦攻破,就可以拿到服务器的控制权,就可以和服务器主人一样拿到最高权限。换句话说,就相当于可以随便使用这个服务器了。一般就被当作肉鸡,悄悄运行着一些程序,在必要的时候会去攻击别人。当然,如果服务器上有重要资料,就可能会被勒索。我以前不懂,服务器就被人攻击勒索过,不过也没有重要资料就没有勒索成功,然后重装了系统解决了。

 

在Linux上我们一般常用检测端口是否能通的工具为telnet。例如:

telnet <网址或IP> 22

不过如果不通,会等比较长的时间。而端口扫描则需要进行大量的端口的探测,所以效率不行。

在《telnet测试端口并超时后退出》一文中,我们实现了超时退出,不过不总是好用。

 

所以今天介绍一个很厉害的命令,即nc。这个命令被称为瑞士军刀,足见这个命令的好用强大。

nc 是一个常用的网络工具,也称为 netcat。它可以在网络中读写数据,支持 TCP、UDP 协议,同时还能监听端口、进行端口扫描等。 

 

centos7中,nc命令位于/usr/bin/nc,这是一个软链接,指向 /usr/bin/ncat。

ncat 是 netcat 的改进版本,提供了更多的功能和选项。它可以用于监听和传输数据,支持 TCP、UDP 和 SCTP 协议。ncat 提供了更多的安全性和扩展性,支持 SSL 加密、IPv6 地址等特性。

 

nc的-z参数可以提供不发数据的探测,-v可以提供详细信息,-w提供超时时间,单位为秒。

nc的用法:

nc -zv {主机} {端口} -w 超时时间

如果测试端口是开放的,日志有Ncat: Connected to。如果端口没有开放,则有不会有Connected字样。所以我们可以根据这个来编写一个shell脚本,就是简易的端口扫描器了。

 

下面是代码scan_port.sh:

 

 

#! /bin/bash

host="110.80.135.11"

start_port=1

end_port=65536

echo -n "opened port:"                                                                                                             

for (( port=$start_port; port<=$end_port; port++ )); do

    #echo "scan port:$port"

    r=$(nc -zv $host $port -w 1 2>&1 | grep "Connected")

    if [ "$r" ];then

        echo -n "$port,"

    #else

    #    echo "close"

    fi  

done

执行脚本:

sh scan_port.sh

这个脚本会扫描1-65536个端口,这个是允许开放的所有端口。这样扫描会比较慢,所以一般我们会扫描常用的端口,比如22、80、443这样的,都扫不到之后再从头到尾扫描。这里只是演示,就不写过多的逻辑了。

然后用循环遍历65536个端口,每一个都使用nc命令检测一下,如果返回连通过,就输出一个端口,并将端口连在一起。现在是默认输出到屏幕。如果要保存结果,则可以再将结果重定向到文件,我们就可以挂在后台扫描了。扫描完再看看即可。

 

下面的执行的效果:

 

0ab43ba22db34644836848e513269729.png

 

这里仅用一段简单的shell脚本,就可以实现一个端口扫描器。如果有更多需要,可以进行定制化编写。真正的黑客,不只是用别人现成的工具,大部分都是自己写脚本来实现定制化的。

 

所以只是简单用一些软件,都是入门级的黑客哟。高级的黑客一定有自己私人的工具库哦。

 

总结

端口扫描其实很简单,使用telnet就可以实现。只是nc使用更有性价比,非常好用。看着高大上的端口扫描器,其实你分分钟也可以编写一个哦。


原文地址: http://www.yu7s.com/article/20240418193923831.html

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

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

相关文章

springcloud alibaba 整合seata的TCC

一、seata服务端搭建同上篇。 Seata的AT模式客户端两阶段提交流程源码分析 二、seata客户端的结构 1.示例DEMO工程 下单&#xff0c;扣余额&#xff0c; 减库存。 2. MAVEN配置。 父工程&#xff1a;由于spring-cloud-starter-alibaba-seata依赖的seata-spring-boot-starter…

深度学习-数据预处理

目录 创建一个人工数据集处理缺失的数据插入对inputs中的类别值或离散值&#xff0c;将NaN视为一个类别对inputs和outputs中的数值类型转换为张量格式 创建一个人工数据集 import os import pandas as pd os.makedirs(os.path.join(.., data), exist_okTrue) data_file os.p…

C++判断一个点是否在一个在任意空间中的长方体中

目录 不旋转的长方体计算旋转矩阵及旋转后的长方体计算旋转矩阵计算旋转后的长方体 判断点是否在旋转后的长方体内 不旋转的长方体 如果这个长方体是规则的&#xff0c;不进行任何旋转&#xff0c;可以先计算长方体的BoundingBox&#xff0c;判断点是否在3D的BoundingBox中即可…

自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决

自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决 文章目录 1.前言2.doris是什么&#xff1f;2.1简介2.2介绍2.3使用场景2.4架构 3.官网4.构建部署4.1 构建环境4.2 doris2.0.4的fe和be镜像构建4.2.1 fe2.0.4镜像构建脚本4.2.2 be2.0.4镜像构建4.2.3 启动脚…

Matlab对多个输入信号进行数值排序提取特定值

1、将多个信号转为一个数组信号输出&#xff0c;在这里需要注意&#xff0c;数据类型是否统一&#xff1b; 2、使用Sort模块&#xff0c;进行排序&#xff08;可设置排序方向&#xff09;&#xff0c;得到排序后的新数组以及对应的索引号&#xff1b; 3、设置想要的索引号&…

YOLOv8改进项目汇总-超全改进-ultralyticsPro介绍:订阅了《芒果YOLOv8原创改进专栏》的读者免费赠送,包括很多稀有改进

&#x1f525;&#x1f525;&#x1f525;专注于YOLOv8改进&#xff0c;NEW - YOLOv8 &#x1f680; in PyTorch >, Support to improve Backbone, Neck, Head, Loss, IoU, LA, NMS and other modules&#x1f680; Makes YOLOv8 improvements easy again 芒果出品 YOLOv8…

前端CSS基础8(盒子模型(margin、border、padding、content))

前端CSS基础8&#xff08;盒子模型&#xff08;margin、border、padding、content&#xff09;&#xff09; CSS盒子模型CSS中常用的长度单位元素的分类&#xff0c;各个元素的显示模式修改元素的显示模式&#xff08;类型&#xff09;盒子模型的组成部分盒子内容区-contentCSS…

Python的venv虚拟环境

venv 是 Python 的一个内置模块&#xff0c;用于创建和管理虚拟环境&#xff08;virtual environments&#xff09;。虚拟环境可以独立于系统的全局环境&#xff0c;并且可以在其中安装特定版本的包和库&#xff0c;以便于项目之间的隔离和管理。下面是 venv 的使用教程&#x…

【SpringCloud】Consul-服务注册中心及配置中心快速入门

【SpringCloud】Consul-服务注册中心及配置中心快速入门 文章目录 【SpringCloud】Consul-服务注册中心及配置中心快速入门1. 下载安装及启动2. 服务注册2.1 引入依赖2.2 yml配置2.3 启动类配置2.4 测试 3. 服务配置3.1 引入依赖3.2 yml配置3.3 创建配置文件3.4 动态刷新配置3.…

有没有学网络空间安全的学长,想知道学长们毕业以后都去干嘛了?

我作为一个零基础小白到白帽黑客&#xff0c;也认识到了很多零基础小白的&#xff0c;有一些网络空间安全的学员&#xff0c;但是大多数还是非计算机相关专业的学员。他们通过系统学习网络安全&#xff0c;掌握黑客技术之后&#xff0c;都找到了自己满意的工作。 同学A&#x…

从0到1实现RPC | 接入Apollo配置中心

一、代码实现 添加依赖 添加apollo客户端的依赖和spring配置相关依赖 添加监听器 通过实现ApplicationContextAware接口&#xff0c;获取Spring上下文。 使用ApolloConfigChangeListener注解监听命名空间rpc-demo-provider.yaml和默认的application.properties。 监听逻辑…

Meta Llama 3本地部署

感谢阅读 环境安装收尾 环境安装 项目文件 下载完后在根目录进入命令终端&#xff08;windows下cmd、linux下终端、conda的话activate&#xff09; 运行 pip install -e .不要控制台&#xff0c;因为还要下载模型。这里挂着是节省时间 模型申请链接 复制如图所示的链接 然后…

翱途O2OA新手上路-服务器下载及私有云部署

本篇主要简要描述从官网下载服务器&#xff0c;进行部署&#xff0c;启动的过程&#xff0c;并且描述在部署过程中常见的问题与报错以及云服务器安全策略配置和O2OA服务器端口修改的方式。 O2OA部署的服务器要求不高&#xff0c;一般使用4C8G以上的服务器均可正常运行。 一、检…

Unity进阶之ScriptableObject

目录 ScriptableObject 概述ScriptableObject数据文件的创建数据文件的使用非持久数据让其真正意义上的持久ScriptableObject的应用配置数据复用数据数据带来的多态行为单例模式化的获取数据 ScriptableObject 概述 ScriptableObject是什么 ScriptableObject是Unity提供的一个…

Vue+OpenLayers7入门到实战,OpenLayers加载GeoJson数据并叠加GeoJson中的要素到地图上

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上加载GeoJson数据并叠加GeoJson中的要素到OpenLayers矢量图层上。 GeoJson数据格式可以参考博主另一篇文章《GIS开发入门,GeoJSON是什么?GeoJSON格式标准介绍》,那么…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中&#xff0c;由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件&#xff0c;下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的&#xff1a; from selenium import webdriver …

在excel中,如何在一个表中删除和另一个表中相同的数据?

现在有A表&#xff0c;是活动全部人员的姓名和学号&#xff0c;B表是该活动中获得优秀人员的姓名和学号&#xff0c; 怎么提取没有获得优秀人员的名单&#xff1f; 这里提供两个使用excel基础功能的操作方法。 1.条件格式自动筛选 1.1按住Ctrl键&#xff0c;选中全表中的姓…

电机控制专题(一)——最大转矩电流比MTPA控制

文章目录 电机控制专题(一)——最大转矩电流比MTPA控制前言理论推导仿真验证轻载1Nm重载30Nm 总结 电机控制专题(一)——最大转矩电流比MTPA控制 前言 MTPA全称为Max Torque Per Ampere&#xff0c;从字面意思就可以知道MTPA算法的目的是一个寻优最值问题&#xff0c;可以从以…

如何高效的压缩GIF图片?一键搞定GIF动图压缩 就是这么简单

一&#xff0c;引言 压缩GIF动图是一个常见的需求&#xff0c;无论是在社交媒体上分享动态表情&#xff0c;还是在网页设计中添加动态元素&#xff0c;GIF动图都扮演着重要的角色。然而&#xff0c;过大的GIF文件大小可能会导致加载速度慢&#xff0c;影响用户体验。因此&…

【每日刷题】Day22

【每日刷题】Day22 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1669. 合并两个链表 - 力扣&#xff08;LeetCode&#xff09; 2. 11. 盛最多水的容器 - 力扣&#…