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

背景

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

 

分析

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

 

在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.mzph.cn/diannao/2357.shtml

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

相关文章

【前端技术】HTML基础入门篇

1.1 HTML简介 ​ HTML&#xff08;HyperText Markup Language&#xff1a;超文本标记语言&#xff09;是一种标识性的语言。它包括一系列标签&#xff0e;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组…

投资网站汇总

1、 中信证券(600030)历年财务指标——亿牛网https://eniu.com/gu/sh600030/cwzb 2、 3、 4、

上海计算机学会2022年11月月赛C++丙组T3最长平台

题目描述 给定一个整数数列 a1​,a2​,…,an​&#xff0c;请找出最长平台。所谓平台&#xff0c;就是指数列中一段连续的、完全相等的数字&#xff0c;单个数字也可以成为一个平台。最长平台可能不止一个&#xff0c;在找到最长平台的同时&#xff0c;输出最长平台的数量。 …

每日一题 —— 最大子数组之和(动态规划)

1.链接 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 2.描述 3.思路 4.参考代码 class Solution { public:int maxSubArray(vector<int>& nums) {int n nums.size();vector<int> dp(n1,0);int ret INT_MIN;for(int i 1;i<n;i){dp[i] ma…

跟着野火从零开始手搓FreeRTOS(6)多优先级的配置

在 FreeRTOS 中&#xff0c;数字优先级越小&#xff0c;逻辑优先级也越小。 之前提过&#xff0c;就绪列表其实就是一个数组&#xff0c; 里面存的是就绪任务的TCB&#xff08;准确来说是 TCB 里面的 xStateListItem 节点&#xff09;&#xff0c;数组的下标对应任务的优先级&a…

jpa 和 mybatis 的优缺点

JPA&#xff08;Java Persistence API&#xff09;和 MyBatis 是两种广泛使用的 Java 持久化框架&#xff0c;它们各自具有独特的优点和适用场景。下面分别列举了 JPA 和 MyBatis 的主要优缺点&#xff1a; JPA&#xff08;包括 Spring Data JPA&#xff09;的优点&#xff1a;…

MariaDB简介

MariaDB是一个关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;是MySQL的一个分支&#xff0c;主要由开源社区维护和开发。 一&#xff0c; MariaDB的来历 1. **起源**&#xff1a;MariaDB的诞生与MySQL的所有权变更有关。MySQL最初由MySQL AB公司开发&#xff…

【Camera Sensor Driver笔记】五、点亮指南之Actuator配置

<slaveInfo> actuatorName dw9714v dirver IC 型号 slaveAddress 0x18 i2c write address i2cFrequencyMode FAST i2c 操作频率(400KHz) actuatorType VCM/BIVCM 马达类型 BIVCM&#xff08;中置马达&#xff…

ROS 2边学边练(33)-- 写一个静态广播(C++)

前言 通过这一篇我们将了解并学习到如何广播静态坐标变换到tf2&#xff08;由tf2来转换这些坐标系&#xff09;。 发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如&#xff0c;在以激光扫描仪中心的坐标系中推理激光扫描测量数据是最简单的。 这…

服务器 BMC(基板管理控制器,Baseboard Management Controller)认知

写在前面 工作中遇到&#xff0c;简单整理博文内容涉及 BMC 基本认知理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 基板管理控制器&#xff08;BMC&…

数字孪生创新工作流,助力百年大桥翻修

利用 Bentley 的 iTwin Capture 和 iTwin Experience 创建数字孪生模型&#xff0c;将现场施工时间缩短了 20% 重要交通枢纽焕然一新 罗伯特街大桥位于明尼苏达州圣保罗市&#xff0c;外观呈彩虹样拱形&#xff0c;近 100 年来一直是圣保罗市的标志性建筑。这座八跨钢筋混凝土…

Linux复习提纲2

Linux复习提纲 Linux概述 shell&#xff1a;交互式命令解释程序&#xff1b;用户和内核间交互的桥梁Shell不仅是交互式命令解释程序&#xff0c;还是一种程序设计语言shell是一种命令解释程序&#xff0c;批处理shell是linux的外壳&#xff0c;默认是bash2.1 Linux基础概念 log…

深拷贝和浅拷贝讲解

浅拷贝 在JavaScript中&#xff0c;有几种实现浅拷贝的方法。浅拷贝会复制对象的属性值&#xff0c;但是如果属性值是对象的话&#xff0c;它们仍然会共享同一个引用。以下是几种常见的浅拷贝方法&#xff1a; 1、对象展开运算符&#xff08;Spread Operator&#xff09;&…

线上剧本杀小程序开发,未来行业的发展趋势?

当下&#xff0c;剧本杀成为了大众最喜欢的娱乐方式之一&#xff0c;作为以沉浸式为主的剧本杀正成为新时代下的发展潮流。 数据显示&#xff0c;剧本杀行业已达到了百亿元。面对发展迅猛的剧本杀市场&#xff0c;越来越多的资本进入到了市场中&#xff0c;剧本杀的产业链也逐…

SecretFlow之SCQL部署(P2P方案)避雷纯享版

目录 前言一、搭建alice节点1.1、创建工作区1.2、准备状态数据、源数据1.3、配置 SCQLBroker1.4、配置 SCQLEngine1.5、创建 docker-compose 文件1.6、准备身份验证文件1.7、启动服务 二、搭建bob节点2.1、创建工作区2.2、准备状态数据、源数据2.3、配置 SCQLBroker2.4、配置 S…

python实现钉钉通讯录导出Excel表

Python工具开源专栏 Py0004 python实现钉钉通讯录导出Excel表 Python工具开源专栏前言目录结构部分演示完整代码已在GitHub上开源前言 需求来源于公司,需要将钉钉通讯录以Excel表的形式导出到本地,方便定期备份。导出的Excel需要处理钉钉用户兼任多部门的数据问题。功能大致如…

【C语言】手撕二叉树

标题&#xff1a;【C语言】手撕二叉树 水墨不写bug 正文开始&#xff1a; 二叉树是一种基本的树形数据结构&#xff0c;对于初学者学习树形结构而言较容易接受。二叉树作为一种数据结构&#xff0c;在单纯存储数据方面没有 顺序表&#xff0c;链表&#xff0c;队列等线性结构…

Pointnet++改进卷积系列:全网首发DynamicConv |即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入DynamicConv,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二

菜鸟Java面向对象 2. Java 重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload) Java 重写与重载 Java 重写(Override)与重载(Overload)1. 重写(Override)1. 概念解释&#xff1a;2. 好处说明3. 异常规则处理 2. 方法的重写规则3. Super 关键字的使用4. 重载(Overload)**重载规则:**实例 5. 重写与重载之间的区别总结 1…

ReclaiMe Pro:丢失分区的恢复方法

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件的授权代理商。 ReclaiMe Pro 的分区恢复功能 ReclaiMe Pro 提供专业的分区恢复功能&#xff0c;支持从各种文件系统中搜索丢失和损坏的分区&#xff0c;例如 FAT、exFAT、NTFS、EXT、XFS 和 VMFS。 ReclaiMe Pro 启动…