自己手动在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://xiahunao.cn/news/2979919.html

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

相关文章

【进收藏夹吃灰系列】数据库学习指南

文章目录 [toc]MySQLRedisMongoDB 个人主页&#xff1a;丷从心 系列专栏&#xff1a;进收藏夹吃灰系列 MySQL 博客标题博客url【Python基础】MySQLhttps://blog.csdn.net/from__2024_04_11/article/details/137888646?spm1001.2014.3001.5502 Redis 博客标题博客url【Pytho…

基于 SpringCloud 的在线交易平台商城的设计与实现

摘 要 随着互联网的快速发展&#xff0c;人们对商品经济的消费和思考不再停留在传统 的经济模式上&#xff0c;网上购物商城是企业与企业进行、企业与消费者进行电子商 务交易的一个很好平台。网上购物商城极大地降低了企业商家的交易成本&#xff0c; 缩短企业供应链周期&…

混合现实(MR)技术的应用场景

混合现实&#xff08;MR&#xff09;技术将虚拟世界和现实世界融合在一起&#xff0c;用户可以在现实世界中看到和与虚拟物体进行交互&#xff0c;同时还可以感知周围的真实环境。MR技术具有广阔的应用前景&#xff0c;可以应用于各行各业。以下是一些MR的应用场景。北京木奇移…

【科学研究】饭圈女孩的流量战争

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【C/C++笔试练习】线程作用、磁盘的固定块、多进程、进行调度、cache、内存抖动、非抢占CPU调度、inode描述、文件操作、进制、最难的问题、因子个数

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;线程作用&#xff08;2&#xff09;磁盘的固定块&#xff08;3&#xff09;多进程&#xff08;4&#xff09;进行调度&#xff08;5&#xff09;cache&#xff08;6&#xff09;内存抖动&#xff08;7&#xff09;非抢占…

【Linux高性能服务器编程】两种高性能并发模式剖析——半同步/半异步模式

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之两种高性能并发模式介绍&#xff0c;在这篇文章中&#xff0c;你将会学习到高效的创建自己的高性能服务器&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助大家来理解…

232 基于matlab的MIMO雷达模型下一种子空间谱估计方法

基于matlab的MIMO雷达模型下一种子空间谱估计方法&#xff0c;采用过估计的方法&#xff0c;避免了信源数估计的问题&#xff0c;对数据协方差矩阵进行变换&#xff0c;构造信号子空间投影矩阵和噪声子空间投影矩阵&#xff0c;不需要像经典的MUSIC一样对其进行特征分解&#x…

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

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…

WEB前端-笔记(三)

目录 一、事件 1.1类型 1.2对象 1.3页面加载事件 1.4滚动事件 1.5尺寸事件 1.6捕获&冒泡事件 1.7阻止表单提交 1.8全选案例 1.9事件委托 ​编辑 1.10client&offset 1.11换取元素的位置 1.12创建节点 1.13克隆节点 1.14删除节点 1.15setTimeout 1.16s…

springcloud alibaba 整合seata的TCC

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

OpenHarmony实战开发-

简介 SmartPerf-Host是一款深入挖掘数据、细粒度展示数据的性能功耗调优工具&#xff0c;可采集CPU调度、频点、进程线程时间片、堆内存、帧率等数据&#xff0c;采集的数据通过泳道图清晰地呈现给开发者&#xff0c;同时通过GUI以可视化的方式进行分析。该工具当前为开发者提…

C++ 性能分析的实战指南(gperftools工具)[建议收藏]

文章目录 使用gperftools进行 C 性能分析的实战指南一、编译安装 gperftools1. 下载源代码&#xff1a;2. 编译和安装&#xff1a; 二、编写测试程序三、使用 gperftools 代码示例四、查看分析结果五、一份实际代码实例及实操1.代码实例2.操作命令3.结果分析根据上述数据&#…

【Cookie和Session的区别(面试重点)】

Cookie和Session的区别 1. Cookie1.1 认识Cookie1.2 Cookie的引出1.3 Cookie工作原理1.4 Cookie重要结论 2. Session2.1 认识Session2.2 Session的引出2.3 Session的工作原理 3. Cookie和Session的区别 1. Cookie 1.1 认识Cookie Cookie&#xff1a;是小型文本文件&#xff0…

实验七 智能手机互联网程序设计(微信程序方向)实验报告

请编写一个用户登录界面&#xff0c;提示输入账号和密码进行登录&#xff0c;要求在输入后登陆框显示为绿色&#xff1b; 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; index.wxml <view class"content"> <view class"a…

概率图模型在机器学习中的应用:贝叶斯网络与马尔可夫随机场

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

C++ stl容器list的底层模拟实现

目录 前言&#xff1a; 1.创建节点 2.普通迭代器的封装 3.反向迭代器的封装 为什么要对正向迭代器进行封装&#xff1f; 4.const迭代器 5.构造函数 6.拷贝构造 7.赋值重载 8.insert 9.erase 10.析构 11.头插头删&#xff0c;尾插尾删 12.完整代码简单测试 总结&…

Iterator 迭代器

意图 提供一个方法顺序访问一个聚合对象中的各个元素&#xff0c;且不需要暴漏该对象的内部表示。 结构 Iterator&#xff08;迭代器&#xff09;定义访问和遍历元素的接口。ConcreteIterator&#xff08;具体迭代器&#xff09;实现迭代器接口&#xff1b;对该聚合遍历是跟踪…

爽!极品AI大模型,抓紧收藏!

今天给大家分享一个基于视觉和文本的聊天机器人&#xff0c;使用DeepSeek-VL-7B模型提供文本和图像的自动化生成回复&#xff0c;它允许用户在与机器人交互时提交文本和图像输入。 DeepSeek-VL简介 DeepSeek-VL系列代表了在多模态AI领域的一大突破&#xff0c;提供了两种不同规…

阿赵UE学习笔记——30、HUD简单介绍

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎&#xff0c;这次来学习一下HUD的基础使用。 一、 什么是HUD HUD(Head-Up Display)&#xff0c;也就是俗称的抬头显示。很多其他领域里面有用到这个术语&#xff0c;比如开车的朋友可能会接触过&#xf…

Linux驱动开发——(四)内核定时器

一、内核的时间管理 1.1 节拍率 Linux内核中有大量的函数需要时间管理&#xff0c;比如周期性的调度程序、延时程序等等&#xff0c;对于驱动编写者来说最常用的是定时器。 硬件定时器提供时钟源&#xff0c;时钟源的频率可以设置&#xff0c;设置好以后就周期性的产生定时中…