当前位置: 首页 > news >正文

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

《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. 编写随机延时慢速端口扫描程序,隐藏扫描行为避免被网络管理员发现。

项目评价

在这里插入图片描述

相关文章:

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

《Python网络安全项目实战》项目4 编写网络扫描程序 项目4 编写网络扫描程序任务4.1 扫描内网有效IP地址任务描述任务分析任务实施任务拓展 任务4.2 编写端口扫描工具任务描述任务分析任务实施相关知识任务评价任务拓展项目评价 项目4 编写网络扫描程序 许多扫描工具是由Pytho…...

Python金融大数据分析概述

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【海拥导航】💅 想寻找共同学习交流,摸鱼划水的小伙伴,请点击【全栈技术交流群】 金融大数据分析在金融科技领域越来越重要,它涉及从海量数据中提取洞察,为金…...

黑马产品经理

1、合格的产品经理 什么是产品? 什么是产品经理? 想清楚产品怎么做的人。 合格的产品经理 2、产品经理的分类 为什么会有不同的分类? 按服务对象划分 按产品平台划分 公司所属行业不同(不限于以下) 工作内容划分 …...

机器学习——损失函数、代价函数、KL散度

🌺历史文章列表🌺 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…...

首次超越扩散模型和非自回归Transformer模型!字节开源RAR:自回归生成最新SOTA!

文章链接:https://arxiv.org/pdf/2411.00776 项目链接:https://yucornetto.github.io/projects/rar.html 代码&模型链接:https://github.com/bytedance/1d-tokenizer 亮点直击 RAR(随机排列自回归训练策略)&#x…...

C语言最简单的扫雷实现(解析加原码)

头文件 #define ROW 9 #define COL 9 #define ROWS ROW2 #define COLS COL2 #include <stdio.h> #include <stdlib.h> #include <time.h> #define numlei 10do while可以循环玩 两个板子&#xff0c;内板子放0&#xff0c;外板子放* set函数初始化两个板子 …...

20. 类模板

一、什么是类模板 类模板用于建立一个通用类&#xff0c;类中的成员数据类型可以不具体指定&#xff0c;用一个虚拟的类型来代替。它的语法格式如下&#xff1a; template<typename T>类模板与函数模板相比主要有两点区别&#xff1a;1) 类模板没有自动类型推导的方式。…...

SSL证书以及实现HTTP反向代理

注意&#xff1a; 本文内容于 2024-11-09 19:20:07 创建&#xff0c;可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容&#xff0c;请访问原文地址&#xff1a;SSL证书以及实现HTTP反向代理。感谢您的关注与支持&#xff01; 之前写的HTTP反向代理工具&…...

多种算法解决组合优化问题平台

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月11日7点12分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17302099790265&uidef7618fa204346ff9…...

【笔记】LLC电路工作频点选择 2-1 输出稳定性的限制

LLC工作模式的分析参考了&#xff1a;现代电力电子学&#xff0c;电力出版社&#xff0c;李永东 1.LLC电路可以选择VCS也可以选择ZVS 1.1选择ZCS时&#xff0c;开关管与谐振电感串联后&#xff0c;与谐振电容并联&#xff1a; 1.2选择ZVS时&#xff0c;开关管仅仅安装在谐振电…...

Linux系统程序设计--2. 文件I/O

文件I/O 标准C的I/O FILE结构体 下面只列出了5个成员 可以观察到&#xff0c;有些函数没有FILE类型的结构体指针例如printf主要是一些标准输出&#xff0c;因为其内部用到了stdin&#xff0c;stdout&#xff0c;stderr查找文件所在的位置:find \ -name stat.h查找头文件所…...

右值引用——C++11新特性(一)

目录 一、右值引用与移动语义 1.左值引用与右值引用 2.移动构造和移动赋值 二、引用折叠 三、完美转发 一、右值引用与移动语义 1.左值引用与右值引用 左值&#xff1a;可以取到地址的值&#xff0c;比如一些变量名&#xff0c;指针等。右值&#xff1a;不能取到地址的值…...

JavaScript 观察者设计模式

观察者模式:观察者模式&#xff08;Observer mode&#xff09;指的是函数自动观察数据对象&#xff0c;一旦对象有变化&#xff0c;函数就会自动执行。而js中最常见的观察者模式就是事件触发机制。 ES5/ES6实现观察者模式(自定义事件) - 简书 先搭架子 要有一个对象&#xff…...

鸿蒙进阶篇-网格布局 Grid/GridItem(二)

hello大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天让我们来继续学习鸿蒙进阶篇-网格布局 Grid/GridItem&#xff0c;上一篇博文我们已经学习了固定行列、合并行列和设置滚动&#xff0c;这一篇我们将继续学习Grid的用法&#xff0c;实现翻页滚动、自定义滚动条样式&…...

数据仓库之 Atlas 血缘分析:揭示数据流奥秘

Atlas血缘分析在数据仓库中的实战案例 在数据仓库领域&#xff0c;数据血缘分析是一个重要的环节。血缘分析通过确定数据源之间的关系&#xff0c;以及数据在处理过程中的变化&#xff0c;帮助我们更好地理解数据生成的过程&#xff0c;提高数据的可靠性和准确性。在这篇文章中…...

AndroidStudio-滚动视图ScrollView

滚动视图 滚动视图有两种: 1.ScrollView&#xff0c;它是垂直方向的滚动视图;垂直方向滚动时&#xff0c;layout_width属性值设置为match_parent&#xff0c;layout_height属性值设置为wrap_content。 例如&#xff1a; &#xff08;1&#xff09;XML文件中: <?xml ve…...

嵌入式硬件实战基础篇(一)-STM32+DAC0832 可调信号发生器-产生方波-三角波-正弦波

引言&#xff1a;本内容主要用作于学习巩固嵌入式硬件内容知识&#xff0c;用于想提升下述能力&#xff0c;针对学习STM32与DAC0832产生波形以及波形转换&#xff0c;对于硬件的降压和对于前面硬件篇的实际运用&#xff0c;针对仿真的使用&#xff0c;具体如下&#xff1a; 设…...

ElasticSearch的Python Client测试

一、Python环境准备 1、下载Python安装包并安装 https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe 2、安装 SDK 参考ES官方文档: https://www.elastic.co/guide/en/elasticsearch/client/index.html python -m pip install elasticsearch一、Client 代…...

【eNSP】企业网络架构链路聚合、数据抓包、远程连接访问实验(二)

一、实验目的 网络分段与VLAN划分&#xff1a; 通过实验了解如何将一个大网络划分为多个小的子网&#xff08;VLAN&#xff09;&#xff0c;以提高网络性能和安全性。 VLAN间路由&#xff1a; 学习如何配置VLAN间的路由&#xff0c;使不同VLAN之间能够通信。 网络设备配置&am…...

独立站 API 接口的性能优化策略

一、缓存策略* 数据缓存机制 内存缓存&#xff1a;利用内存缓存系统&#xff08;如 Redis 或 Memcached&#xff09;来存储频繁访问的数据。例如&#xff0c;对于商品信息 API&#xff0c;如果某些热门商品的详情&#xff08;如价格、库存、基本描述等&#xff09;被大量请求…...

不一样的CSS(一)

目录 前言&#xff1a; 一、规则图形 1.介绍&#xff1a; 2.正方形与长方形&#xff08;实心与空心&#xff09; 2.1正方形&#xff1a; 2.2长方形 3.圆形与椭圆形&#xff08;空心与实心&#xff09; 3.1圆形与椭圆形 4.不同方向的三角形 4.1原理 4.2边框属性 5.四…...

题目:Wangzyy的卡牌游戏

登录 - XYOJ 思路&#xff1a; 使用动态规划&#xff0c;设dp[n]表示当前数字之和模三等于0的组合数。 状态转移方程&#xff1a;因为是模三&#xff0c;所以和的可能就只有0、1、2。等号右边的f和dp都表示当前一轮模三等于k的组合数。以第一行为例&#xff1a;等号右边表示 j转…...

国外云服务器高防多少钱一年?

国外云服务器高防多少钱一年&#xff1f;入门级高防云主机&#xff1a;这类主机通常具有较低的防御峰值&#xff0c;如30G或60G&#xff0c;价格相对较低。例如&#xff0c;30G峰值防御的高防云主机年费可能在2490元左右&#xff0c;而60G峰值防御的则可能在5044元左右。中等防…...

架构篇(04理解架构的演进)

目录 学习前言 一、架构演进 1. 初始阶段的网站架构 2. 应用服务和数据服务分离 3. 使用缓存改善网站性能 4. 使用应用服务器集群改善网站的并发处理能力 5. 数据库读写分离 6. 使用反向代理和CDN加上网站相应 7. 使用分布式文件系统和分布式数据库系统 8. 使用NoSQL和…...

【363】基于springboot的高校竞赛管理系统

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统高校竞赛管理系统信息管理难度大&#xff0c;容错率低&am…...

Spring Boot 监视器

一、Spring Boot 监视器概述 &#xff08;一&#xff09;什么是 Spring Boot 监视器 定义与作用 Spring Boot 监视器&#xff08;Spring Boot Actuator&#xff09;是一个用于监控和管理 Spring Boot 应用程序的工具集。它提供了一系列的端点&#xff0c;可以获取应用程序的运…...

Javascript如何获取指定网页中的内容?

这两天有一个需求&#xff0c;就是通过JS去获取网页的内容&#xff0c;当然&#xff0c;除了今天我要分享的这个方法以外&#xff0c;其实通过Ajax的Get方法也是可以实现这个功能的&#xff0c;但是Ajax就比较麻烦一些了&#xff0c;如果只是单纯的想要获取一下纯内容&#xff…...

第2章2.3立项【硬件产品立项的核心内容】

硬件产品立项的核心内容 2.3 硬件产品立项的核心内容2.3.1 第一步&#xff1a;市场趋势判断2.3.2 第二步&#xff1a;竞争对手分析1.竞争对手识别2.根据竞争对手分析制定策略 2.3.3 第三步&#xff1a;客户分析2.3.4 第四步&#xff1a;产品定义2.3.5 第五步&#xff1a;开发执…...

区块链:Raft协议

Raft 协议是一种分布式共识机制&#xff0c;这种机制适用于网络中存在一定数量的故障节点&#xff0c;但不考虑“恶意”节点的情况&#xff0c;所以更适合作为私有链和联盟链的共识算法。 在此协议中&#xff0c;每个节点有三种状态&#xff1a; 候选者 &#xff0c;可以被选…...

【C语言】位运算

我们在上学计算机的第一节课&#xff0c;就应该见过这些常见的运算符。然而&#xff0c;你可能有印象&#xff0c;但记不住众多操作符当中的位运算符&#xff0c;以及它们的作用和使用场景&#xff0c;我们的大脑会选择性地遗忘它认为没用的信息&#xff0c;存储下那些“有实际…...

权威的唐山网站建设/seo专业优化方法

需要将pdf转成内存小的jpg&#xff0c;A4大小&#xff0c;300k以内&#xff0c;并且要保证清晰。 使用网站先转换pdf为jpg。 https://www.aconvert.com/cn/pdf/ 转换的jpg非常清晰&#xff0c;但是大小也很大。使用Photoshop打开&#xff0c;建立横向297mm&#xff0c;纵向2…...

找作文做读书笔记去什么网站/网推什么意思

链接&#xff1a;https://ac.nowcoder.com/acm/contest/188/C?&headNavwww 来源&#xff1a;牛客网 题目描述 小w不会离散数学&#xff0c;所以她van的图论游戏是送分的 小w有一张n个点n-1条边的无向联通图,每个点编号为1~n,每条边都有一个长度 小w现在在点x上 她想知…...

广州做企业网站的公司/商城小程序开发哪家好

我正在处理一个我无法编辑的第三方PHP库,它已经运行了将近一年.它对远程服务器的响应使用simplexml_load_string.最近,它一直在阻止大量的回应.这是房地产列表的数据R_301_349,格式如下所示&#xff1a;sysid 1 2 3 4 5 6 252370080 Residential 0.160 No ADDR0 06051252370081…...

张家港网站包年/长春网站建设公司哪家好

def func(str):n0c 0space 0o 0 #定义四个类型的初始值为0for i in str: #使字符串内字符逐个输出if i.isdigit(): #如果使全数字则n1&#xff0c;下同n 1elif i.isalpha(): c 1elif i.isspace():space 1else:o1print(n,c,space,o) …...

资阳网站设计/网络营销软件哪个好用

粒子滤波 particle filter —从贝叶斯滤波到粒子滤波——Part-I&#xff08;贝叶斯滤波&#xff09; 原创不易&#xff0c;路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合/导航等探讨代码联系WX: ZB823618313 粒子滤波PF—从贝叶斯滤波到粒子滤波PF——Part-I&a…...

seo网站优化详解/外贸做网站公司哪家好

固件库下载地址 转载于:https://www.cnblogs.com/Lieyuanbingshi/p/10890675.html...