百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

高级测试工程师必会——Python带你入门安全测试

off999 2024-10-01 14:02 20 浏览 0 评论

在上一篇文章中《测试人必会 —— Python带你上手 Web Socket》,给大家分享了Web Socket套接字方面的知识,以及如何用Python实现套接字,通过Python代码进行Web Socket简单实践。

今天我们继续聊一聊网络端口扫描那些事,以及Python如何助力于端口扫描。无论今后你是否从事网络安全或者安全渗透测试一职,只要你在测试,测开领域行走着,奔跑着,“网络端口扫描”将是你知识技能储备中不可或缺的一角。

1. 闲聊:端口扫描那些事

端口扫描可视为一种监控技术,用来依次定位某个指定主机上可用的,开放的端口。一般而言,这类技术常见于网络管理员,渗透测试人员甚至黑客等人的日常工作实践中。这类人员可以根据当前工作任务需求,配置端口扫描器,最大程度地获取目标系统中的信息。

通常经过对目标主机端口扫描后,可以获取的信息主要包括:

(1)目标主机上开放的所有端口

(2)在每个端口上运行的服务及其相关信息

(3)目标主机的操作系统和MAC地址信息

我们可以把端口扫描想象成一个小偷悄悄进入一间房子(目标主机可视为房子),检查每个门窗是否关好(端口可视作门窗),看看哪些门窗是打开的(哪些端口是开放的)。

互联网中,用于通信的是TCP/IP协议,该协议套件由两个协议组成,即TCP和UDP。这两种协议都有0到65535个端口。这些端口按范围可分为如下三类:

(1)系统或公认端口: 0 —— 1023

(2)用户或注册端口:1024 —— 49151

(3)动态或私有端口: 49151 —— 65535

可见系统服务器上的端口众多,但实际上常用的端口才几十个,由此可以看出未定义的端口相当多。为了安全起见,通常建议关闭系统中不必要的端口,不对外开放。如此一来,我们就有超过65000个端口需要关闭。

2. 使用 Socket 进行端口扫描

在上一篇文章中《测试人必会 —— Python带你上手 Web Socket》,介绍了套接字相关知识。现在,我们将使用套接字构建一个简单的端口扫描器。

使用套接字进行端口扫描器的构建,通过 Python 脚本实现如下:

from socket import *

import time

startTime = time.time()

if __name__ == '__main__':

target = input('需要扫描的主机: ')

t_IP = gethostbyname(target)

print('开始扫描主机: ', t_IP)

for i in range(100, 450):

print('当前正扫描端口号:'+str(i))

# 创建 socket 对象

s = socket(AF_INET, SOCK_STREAM)

# socket.connect_ex(IP,port),如果端口连接成功 则返回 0

conn = s.connect_ex((t_IP, i))

if (conn == 0):

print('端口 %d: 处于开放状态' % (i,))

s.close()

print('扫描共花费的时间:', time.time() - startTime)

运行上述脚本后,首先会提示输入目标主机名,这里可以输入你想要扫描的任何主机名。

值得一提的是,未经授权下的端口扫描可能被视为违法行为。

所以在未经服务器或计算机所有者,明确书面许可的情况下,不应对任何网站/IP 地址执行端口扫描程序。

在自行练习实践的情况下,强烈建议在本地主机或自己的网站上执行端口扫描。

以上程序我们仅以自己本机为例,进行实践展示,为了节省时间,我们仅将扫描的端口范围设置在 100 到 450;

扫描结果如下:

需要扫描的主机: 127.0.0.1

开始扫描主机: 127.0.0.1

当前正扫描端口号:100

当前正扫描端口号:101

当前正扫描端口号:102

当前正扫描端口号:103

......

当前正扫描端口号:135

端口 135: 处于开放状态

当前正扫描端口号:136

当前正扫描端口号:137

当前正扫描端口号:138

当前正扫描端口号:139

当前正扫描端口号:140 ......

当前正扫描端口号:439

当前正扫描端口号:440

当前正扫描端口号:441

当前正扫描端口号:442

当前正扫描端口号:443

当前正扫描端口号:444

当前正扫描端口号:445

端口 445: 处于开放状态

当前正扫描端口号:446

当前正扫描端口号:447

当前正扫描端口号:448

当前正扫描端口号:449

扫描共花费的时间: 700.8146049976349

Process finished with exit code 0

输出显示,在 100 到 450 的端口范围内(不包括 450),经过 Python Socket 脚本创建的扫描程序,扫描后发现两个端口( 端口 135 和 445)是开放的。读者朋友们也可以更改此范围,检查其他端口的开放情况。

……

由于作者版权要求,仅展示文章的一部分,如需阅读完整版文章,可以私信回复”文章“即可免费获取。

最后:

1)关注+私信回复:“测试”,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

2)关注+私信回复:"入群" 就可以邀请你进入软件测试群学习交流~~

相关推荐

Python钩子函数实现事件驱动系统(created钩子函数)

钩子函数(HookFunction)是现代软件开发中一个重要的设计模式,它允许开发者在特定事件发生时自动执行预定义的代码。在Python生态系统中,钩子函数广泛应用于框架开发、插件系统、事件处理和中...

Python函数(python函数题库及答案)

定义和基本内容def函数名(传入参数):函数体return返回值注意:参数、返回值如果不需要,可以省略。函数必须先定义后使用。参数之间使用逗号进行分割,传入的时候,按照顺序传入...

Python技能:Pathlib面向对象操作路径,比os.path更现代!

在Python编程中,文件和目录的操作是日常中不可或缺的一部分。虽然,这么久以来,钢铁老豆也还是习惯性地使用os、shutil模块的函数式API,这两个模块虽然功能强大,但在某些情况下还是显得笨重,不...

使用Python实现智能物流系统优化与路径规划

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。在现代物流系统中,优化运输路径和提高配送效率是至关重要的。本文将介绍如何使用Python实现智能物流系统的优化与路...

Python if 语句的系统化学习路径(python里的if语句案例)

以下是针对Pythonif语句的系统化学习路径,从零基础到灵活应用分为4个阶段,包含具体练习项目和避坑指南:一、基础认知阶段(1-2天)目标:理解条件判断的逻辑本质核心语法结构if条件:...

[Python] FastAPI基础:Path路径参数用法解析与实例

查询query参数(上一篇)路径path参数(本篇)请求体body参数(下一篇)请求头header参数本篇项目目录结构:1.路径参数路径参数是URL地址的一部分,是必填的。路径参...

Python小案例55- os模块执行文件路径

在Python中,我们可以使用os模块来执行文件路径操作。os模块提供了许多函数,用于处理文件和目录路径。获取当前工作目录(CurrentWorkingDirectory,CWD):使用os....

python:os.path - 常用路径操作模块

应该是所有程序都需要用到的路径操作,不废话,直接开始以下是常用总结,当你想做路径相关时,首先应该想到的是这个模块,并知道这个模块有哪些主要功能,获取、分割、拼接、判断、获取文件属性。1、路径获取2、路...

原来如此:Python居然有6种模块路径搜索方式

点赞、收藏、加关注,下次找我不迷路当我们使用import语句导入模块时,Python是怎么找到这些模块的呢?今天我就带大家深入了解Python的6种模块路径搜索方式。一、Python模块...

每天10分钟,python进阶(25)(python进阶视频)

首先明确学习目标,今天的目标是继续python中实例开发项目--飞机大战今天任务进行面向对象版的飞机大战开发--游戏代码整编目标:完善整串代码,提供完整游戏代码历时25天,首先要看成品,坚持才有收获i...

python 打地鼠小游戏(打地鼠python程序设计说明)

给大家分享一段AI自动生成的代码(在这个游戏中,玩家需要在有限时间内打中尽可能多的出现在地图上的地鼠),由于我现在用的这个电脑没有安装sublime或pycharm等工具,所以还没有测试,有兴趣的朋友...

python线程之十:线程 threading 最终总结

小伙伴们,到今天threading模块彻底讲完。现在全面总结threading模块1、threading模块有自己的方法详细点击【threading模块的方法】threading模块:较低级...

Python信号处理实战:使用signal模块响应系统事件

信号是操作系统用来通知进程发生了某个事件的一种异步通信方式。在Python中,标准库的signal模块提供了处理这些系统信号的机制。信号通常由外部事件触发,例如用户按下Ctrl+C、子进程终止或系统资...

Python多线程:让程序 “多线作战” 的秘密武器

一、什么是多线程?在日常生活中,我们可以一边听音乐一边浏览新闻,这就是“多任务处理”。在Python编程里,多线程同样允许程序同时执行多个任务,从而提升程序的执行效率和响应速度。不过,Python...

用python写游戏之200行代码写个数字华容道

今天来分析一个益智游戏,数字华容道。当初对这个游戏颇有印象还是在最强大脑节目上面,何猷君以几十秒就完成了这个游戏。前几天写2048的时候,又想起了这个游戏,想着来研究一下。游戏玩法用尽量少的步数,尽量...

取消回复欢迎 发表评论: