《Python网络安全项目实战》项目4 编写网络扫描程序

news2024/12/26 6:40:27

《Python网络安全项目实战》项目4 编写网络扫描程序

  • 项目4 编写网络扫描程序
    • 任务4.1 扫描内网有效IP地址
      • 任务描述
      • 任务分析
      • 任务实施
      • 任务拓展
    • 任务4.2 编写端口扫描工具
      • 任务描述
      • 任务分析
      • 任务实施
      • 相关知识
      • 任务评价
      • 任务拓展
      • 项目评价

项目4 编写网络扫描程序

许多扫描工具是由Python编写的。本项目中我们将用python写一个IP扫描工具,用来发现内网在线的IP以及开放的端口。
项目目标:
 能够正确获取系统的类型,是Windows还是Linux;
 能够正确获得本机IP的地址;
 能够正确得到IP地址的在线和端口开放情况。

任务4.1 扫描内网有效IP地址

任务描述

在对局域网进行管理时,为了知道网段内的IP在线情况,知道网段IP地址的使用情况,我们可以对网段的所有IP地址进行一次扫描。

任务分析

判断一个IP是否在线,最简单的方法就是去ping这个IP,通过ping返回的信息来判断IP是否在线,在Windows中ping命令默认发送4个数据包,而Linux中默认是一直发送数据,但是这个值也是可以更改的,Windows中只需要加上-n参数后面跟上一个数字,就是发送多少个数据包,而Linux中为-c,为了统一发送数据包的个数,需要先判断系统为Linux还是Windows。
确定好系统之后就是本网段的所有网址,对于一个C类内网网段,,一共有256个内网地址,从0到255,通过获取自己的IP地址,再对IP地址进行编辑,就可以获得内网所有IP,再通过ping命令去ping所有的IP,再通过返回信息就可以得到内网所有有效的IP地址。
使用python编程进行内网的IP扫描,那么需要用到网络相关的模块,在扫描内网前,先要知道自己的IP地址,而自己的IP地址是本地系统上的信息,所以还需要用到os模块,为了一次ping多个IP同时进行,还需要treading模块。

任务实施

【步骤1】:由于这次IP扫描的编程过程中需要使用系统、网络、线程、时间模块,所以在编程前先引用需要的模块(见图4-1-1)。
在这里插入图片描述

图4-1-1 引用需要使用的模块
【步骤2】:先获取系统信息,判断自己的系统是windows,还是linux,返回ping时需要使用-n,还是-c参数来确定数据包的个数(见图4-1-2)。
在这里插入图片描述

图4-1-2 获取系统类型
【步骤3】:获取到系统信息之后,再根据返回判断是windows,还是linux,根据不同的系统使用不同的方法获取IP(见图4-1-3)。
在这里插入图片描述

图4-1-3 获得本机IP地址
【步骤4】:获取到本机内网IP之后,调用系统ping命令来确认IP是否在线(见图4-1-4)。
在这里插入图片描述

图4-1-4 判断IP是否在线
【步骤5】:通过对获取本机内网IP的处理,生成整个网段的IP,生成一个IP就调用ping_IP这个方法看IP是否在线(见图4-1-5)。
在这里插入图片描述

图4-1-5 判断当前网段的在线IP
【步骤6】:在所有方法和功能都编写完成之后,编写主函数调用各方法(见图4-1-6)。
在这里插入图片描述

图4-1-6 编写主函数
【步骤7】:在Python IDLE中打开并运行程序(见图4-1-7)。
在这里插入图片描述

图4-1-7 运行程序
相关知识
platform模块:platform模块中有很多函数用来获取操作系统信息,包括操作系统名称,版本号,操作系统的位数,计算机类型,计算机网络名称等。
threading模块:threading模块的主要做用是来处理和控制线程的,一个进程可以有多个线程。
socket模块:socket模块是用来处理网络连接问题的,可以用做服务端,也可以用作客户端。
subprocess模块:subprocess模块的功能是用来创建个管理子进程的,还提供一些管理标准流和管道的工具,在进程间使用文本通信。
任务评价
请学生按照下表中的要求完成本次评价,并在物理机桌面上以自己的两位学号+姓名的形式命名文件夹,保存所有截图文件,文件保存为jpeg或 png格式。
在这里插入图片描述

任务拓展

  1. 编写程序扫描内网有效IP,并将找到的IP自动记录在文本文件当中。
  2. 编写程序读取记录IP的文本文件,与扫描到的内网有效IP进行对比验证。

任务4.2 编写端口扫描工具

任务描述

使用python对指定端口进行扫描。

任务分析

在对服务器的探测中,能否正确的判断端口的开放是十分重要的,一个服务器开放的端口越多,就代表着打开的窗户越多,而这些打开的窗户,难免就会存在一些问题,那么我们为了能够更好安全性,就必须了解一个服务器开放了哪些端口,利用python,就可以很好的实现端口的发现。
在python编程中,可以使用socket模块中的connect()来与指定IP的指定端口建立连接,连接建立成功则说明IP的端口是开放状态,若长时间没能成功建立连接,我们就认为这个端口是关闭的。
端口一共有65535个,周知端口为0-1023,注册端口为1024-49151,动态端口为49152-65535,而常用的服务一般都在0-1023之间,除了这个1024个端口外,还有一些常见端口,如1433,3389,4899等。
本任务要求在192.168.1网段对指定的IP地址区间进行扫描,扫描每一个IP地址的端口,并将扫描结果保存在一个文件中。
IP地址的生成。
端口号的生成。
扫描端口是否开放。

任务实施

【步骤1】:引用socket模块,如图4-2-1所示。
在这里插入图片描述

图4-2-1 引用模块
【步骤2】:定义变量接收开始IP和结束IP,如图4-2-2所示。
在这里插入图片描述

图4-2-2 IP
【步骤3】:定义变量接受开始端口和结束端口,如图4-2-3所示。
在这里插入图片描述

图4-2-3 端口
【步骤4】:使用socket模块中的connect()函数,函数不报错,不报异常,则表示端口连接成功,端口开放,否则端口就是关闭的,如图4-2-4所示。
在这里插入图片描述

图4-2-4 端口连接
【步骤5】:调用函数,如图4-2-5所示。
在这里插入图片描述

图4-2-5 调用函数
【步骤6】:在python IDLE中运行python程序或扫描指定IP的端口,会在python程序所在的目录生成一个IP_Port.txt文件,文件中会保存python程序运行的结果,如图4-2-6所示。
在这里插入图片描述

图4-2-6 运行python程序
【步骤7】:打开IP_Port.txt文件可以看到程序的运行结果,如图5-2-7所示。
在这里插入图片描述

图4-2-7 IP_Port.txt文件内容

相关知识

Socket模块:在使用socket模块中的connect()函数连接目标IP和端口时,设定一个超时时间,当端口不可达时,则会一直连接,端口可达时,则无状态,将超时的端口定位未开放端口。
Connect()扫描:这种扫描模式,是发起正常的访问请求,通过“三次握手”来确认端口的开放。
(1)服务器端口开放:
客户端发送一个SYN包给服务器。
服务器返回一个SYN/ACK包,表明端口开放。
客户端返回一个ACK包,建立接连。
客户端主动断开连接。
(2)服务器端口关闭:
客户端发送一个SYN包给服务器。
服务器返回一个RST/ACK包,表明端口未开放。

任务评价

请学生按照下表中的要求完成本次评价,并在物理机桌面上以自己的两位学号+姓名的形式命名文件夹,保存所有截图文件,文件保存为jpeg或 png格式。
在这里插入图片描述

任务拓展

  1. 编写慢速内网有效IP扫描程序,避免占用过多的网络资源。
  2. 编写随机延时慢速端口扫描程序,隐藏扫描行为避免被网络管理员发现。

项目评价

在这里插入图片描述

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

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

相关文章

CSS:导航栏三角箭头

用CSS实现导航流程图的样式。可根据自己的需求进行修改,代码精略的写了一下。 注:场景一和场景二在分辨率比较低的情况下会有一个1px的缝隙不太优雅,自行处理。有个方法是直接在每个外面包一个DIV,用动态样式设置底色。 场景一、…

【Python系列】浅析流式模式:基于 SSE 的实时响应体验

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python3.11.9+selenium,选择证书用多线程+键盘enter解决

Python3.11.9+selenium,选择证书用多线程+键盘enter解决 1、遇到问题:弹出证书选择,无法点击确定 import pyautogui pyautogui.press(enter) 键盘enter也无法点击 2、解决办法:用多线程解决同时执行click链接和Enter点击证书的确定 1、点击操作 # # 通过文本链接文本…

前端开发快速进行 Mock 数据的方法

前端开发快速进行 Mock 数据的方法 在前端开发中,模拟数据(Mock Data)是不可或缺的一部分,它可以帮助开发者在没有后端接口的情况下快速推进项目进度。然而,在使用如 Mock.js 这样的工具时,开发者可能会遇…

Unity学习---IL2CPP打包时可能遇到的问题

写这篇主要是怕自己之后打包的时候出问题不知道怎么搞,所以记录一下。 问题一:类型裁剪 IL2CPP打包后会自动对Unity工程的dll进行裁剪,将代码中没有引用到的类型裁剪掉。特别是通过反射等方式调用一些类的时候,很容易出问题。 …

Unity学习笔记(4):人物和基本组件

文章目录 前言开发环境新增角色添加组件RigidBody 2D全局项目设置Edit 给地图添加碰撞体 总结 前言 今天不加班,有空闲时间。争取一天学一课,养成习惯 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶&#xff…

vue3使用element-plus,树组件el-tree增加引导线

vue3使用element-plus,树组件el-tree增加引导线 vue3项目element-plus,树组件el-tree增加引导线 element-plus组件库的el-tree样式 因为element的样式不满足当前的的需求,UI图,所以对el-tree进行增加了引导线 修改样式如下&am…

比ChatGPT更酷的AI工具

相较于寻找比ChatGPT更酷的AI工具,这听起来似乎是个挑战,因为ChatGPT已经以它强大的综合性能在AI界大名鼎鼎。然而,每个工具都有其独特的优势,特别是在特定的应用场景下,其他AI工具可能会展现出与ChatGPT不同的魅力。接…

微服务day08

Elasticsearch 需要安装elasticsearch和Kibana,应为Kibana中有一套控制台可以方便的进行操作。 安装elasticsearch 使用docker命令安装: docker run -d \ --name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \ //设置他的运行内存空间&#x…

微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?

今天咱来聊聊前阵子第十届GitHub开发者大会上发布的AI无代码编程平台GitHub Spark和国产的AI原生无代码工具CodeFlying比起来有没有什么说法。 首先说GitHub Spark这个产品截止到目前为止都很低调呀,甚至没有引起国外主流媒体的广泛关注。 有可能是因为大家都被…

设计模式:工厂方法模式和策略模式

工厂方法模式 什么是开闭原则? 开闭原则是扩展开发,对修改关闭 简单工厂(不是设计模式而是一种编程的习惯) 有三个角色 抽象产品:定义了产品的规范,描述了产品的特性和功能.具体产品:实现或者继承抽象产品的子类具体工厂:提供了创建产品的方法,调用者通过该方法获取产品 实…

docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled

无数次的拉镜像让人崩溃: rootnode11:~/ragflow/docker# more rag.sh #export HTTP_PROXYhttp://192.168.207.127:7890 #export HTTPS_PROXYhttp://192.168.207.127:7890 #export NO_PROXYlocalhost,127.0.0.1,.aliyun.com docker compose -f docker-compose-gpu-C…

【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)

#IEEE出版|EI稳定检索#主讲嘉宾阵容强大!多位外籍专家出席报告 2024健康大数据与智能医疗国际会议(ICHIH 2024)2024 International Conference on Health Big Data and Intelligent Healthcare 会议简介 2024健康大数据与智能医疗国际会议…

字符串处理指南:Air780E软件的全新视角

今天我会把 Air780E软件的字符串处理详细解析,指南如下: 1、Lua字符串介绍 关于字符串,Lua提供了一些灵活且强大的功能,一些入门知识如下: 1.1 字符串定义 在Lua中,字符串可以用单引号或双引号"来定…

【MySQL 保姆级教学】事务的隔离级别(详细)--下(13)

事务的隔离级别 1. 如何理解事务的隔离性2. 事务隔离级别的分类3. 查看和设置事务隔离级别3.1 全局和会话隔离级别3.2 查看和设置隔离级别 4. 事务隔离级别的演示4.1 读未提交(Read Uncommitted)4.2 读已提交(Read Committed)4.3 …

再见 阿里巴巴EasyExcel替代品EasyExcel-Plus即将诞生

最近阿里发布公告通知,停止对EasyExcel 更新和维护,EasyExcel 是一款知名的 Java Excel 工具库,由阿里巴巴开源,作者是玉霄,在 GitHub 上有 30k stars、7.5k forks。 据了解,EasyExcel作者玉霄)去年已经从…

Acrobat Pro DC 2023(pdf免费转化word)

所在位置 通过网盘分享的文件:Acrobat Pro DC 2023(64bit).tar 链接: https://pan.baidu.com/s/1_m8TT1rHTtp5YnU8F0QGXQ 提取码: 1234 --来自百度网盘超级会员v4的分享 安装流程 打开安装所在位置 进入安装程序 找到安装程序 进入后点击自定义安装,这里…

13载匠心独运,BI+AI启航新征程

13载匠心独运,BIAI启航新征程! 思迈特的13年,是在坚守中持续创新,在创新中不断追求卓越,是在挑战与机遇并行中开创全新篇章的历程。感谢每一位陪伴走过这段旅程的人。展望未来,思迈特将继续以初心为舵、以…

【大数据学习 | HBASE高级】storeFile文件的合并

Compaction 操作分成下面两种: Minor Compaction:是选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile,对于删除、过期、多余版本的数据不进行清除。 Major Compaction:是指将所有的StoreFile合并成一个StoreFile&am…

git config是做什么的?

git config是做什么的? git config作用配置级别三种配置级别的介绍及使用,配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级? 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…