Skip to content

Latest commit

 

History

History
87 lines (44 loc) · 5.94 KB

File metadata and controls

87 lines (44 loc) · 5.94 KB

第一章:为什么要在渗透测试中使用 Python?

在本章中,我们将涵盖以下内容:

  • 为什么 Python 是安全脚本的绝佳选择

  • Python 3 语言基础知识和差异

介绍

深入研究 Python 及其模块在安全脚本编写中的用途之前,我们需要了解一下语言基础知识和不同版本。此外,如果我们能了解一下为什么 Python 是安全脚本的绝佳选择,那就太好了。

为什么 Python 是安全脚本的绝佳选择

在大规模安全攻击和泄露之后,安全/渗透测试在质量领域日益受到重视。作为编程领域中的一种流行语言,从过去几年出版的工具、书籍和脚本来看,Python 已经成为安全研究人员和黑客最喜欢的脚本语言。

准备就绪

尽管网络和应用程序安全充斥着许多自动化和半自动化测试工具,但并不总能保证成功。工具和脚本的改进是渗透测试的关键,总会有一些任务需要自动化或以其他方式完成。成为成功的现实世界渗透测试人员涉及许多自定义脚本和编程任务。

如何做...

这些是 Python 在安全脚本和编程中受欢迎的主要原因。

Python 可以以解释和编译形式使用

Python 程序可以在任何需要编译的情况下编译,并且不需要频繁更改。这将使 Python 程序运行得更快,并提供更好的机会来消除漏洞和错误。此外,解释程序比编译程序运行得慢得多,并且更容易受到漏洞和攻击的影响。

Python 代码不使用编译器,可以在几乎任何运行 Python shell 的设备上运行。此外,它与脚本语言有一些其他相似之处。因此,Python 可以用于执行脚本语言的功能。

语法和缩进布局

Python 的语法和缩进布局使得在审查程序时很容易弄清楚发生了什么。缩进还使程序更易读,并有助于使协作编程更容易。

简单的学习曲线

学习一门新的编程语言总是一项艰巨的任务。但 Python 的设计是为了让即使是初学者程序员也能轻松学会。Python 之所以得到程序员的广泛接受,主要是因为它易于学习,并且其设计理念强调代码的可读性,这将帮助初学者开发人员通过阅读代码本身学到很多东西。此外,Python 的读取评估打印循环REPL)为开发人员提供了一个机会来玩弄代码并进行实验。标准的 Python 库保留了许多功能,我们可以轻松地执行复杂的功能。

强大的第三方库

一旦学会了 Python,你就可以利用支持大量库的平台。Python 软件包索引PyPI)是一个存储库,其中包含超过 85,000 个可重用的 Python 模块和脚本,你可以在你的脚本中使用。Python 是安全研究人员学习的最佳语言,因为它拥有大量的逆向工程和利用库。

跨平台(随处编码)

Python 可以在 Linux、Microsoft Windows、macOS X 和许多其他操作系统和设备上运行。在 macOS X 计算机上编写的 Python 程序将在 Linux 系统上运行,反之亦然。此外,只要计算机安装了 Python 解释器,Python 程序就可以在 Microsoft Windows 计算机上运行。

Python 3 语言基础知识和差异

Python 3.0 首次发布于 2008 年。尽管 Python 3 被认为与旧版本不兼容,但许多其特性都被移植以支持旧版本。了解 Python 版本及其差异有助于更好地理解我们的配方。

准备就绪

如果您是 Python 的新手,可能会对可用的不同版本感到困惑。在进一步了解细节之前,让我们先看一下 Python 的最新主要版本以及 Python 2 和 Python 3 之间的主要区别。

如何做...

这些是主要的 Python 版本。

Python 2

2000 年末发布,它具有许多更多的编程功能,包括帮助自动化内存管理的循环检测垃圾收集器。增加的 unicode 支持有助于标准化字符,列表推导有助于基于现有列表创建列表等其他功能。在 Python 版本 2.2 中,类型和类被合并为一个层次结构。

Python 3

Python 3 于 2008 年末发布,以更新和修复先前版本 Python 的内置设计缺陷。Python 3 开发的主要重点是清理代码库并减少冗余。

起初,由于与 Python 2 的不兼容性,Python 3 的采用过程非常缓慢。此外,许多软件包库仅适用于 Python 2。后来,随着开发团队宣布将终止对 Python 2 的支持,并且更多的库已被移植或迁移到 Python 3,Python 3 的采用率有所增加。

Python 2.7

Python 2.7 于 2010 年发布,并计划作为 2.x 版本的最后一个版本。其目的是通过提供两者之间的兼容性来使 Python 2.x 用户更容易将其功能和库移植到 Python 3,其中包括支持测试自动化的单元测试,用于解析命令行选项的 argparse,以及更方便的 collections 类。

Python 2.7 和 Python 3 之间的主要区别

以下是 Python 2.x 和 Python 3 之间的一些主要区别:

  • 打印:在 Python 2 中,print是一个语句。因此,打印时无需用括号括起文本。但在 Python 3 中,print是一个函数。因此,您必须将要打印的字符串传递给带括号的函数。

  • 整数除法:Python 2 将小数点后没有任何数字的数字视为整数,这可能会导致在除法过程中出现一些意外的结果。

  • 列表推导循环变量泄漏:在 Python 2 中,将列表推导中迭代的变量泄漏到周围范围,这个列表推导循环变量泄漏bug 已在 Python 3 中修复。

  • Unicode 字符串:Python 2 要求您使用u前缀显式标记 unicode 字符串。但是,Python 3 默认将字符串存储为 unicode。

  • 引发异常:Python 3 需要不同的语法来引发异常。

从 Python 2.x 到 Python 3.x 的过渡正在缓慢进行,但正在进行中。要注意的是,Python 2.x 和 Python 3 之间存在实质性差异,因此您可能需要处理在您不太熟悉的版本中编写的代码。