Skip to content

Latest commit

 

History

History
82 lines (44 loc) · 6.1 KB

File metadata and controls

82 lines (44 loc) · 6.1 KB

一、为什么在渗透测试中使用 Python?

在本章中,我们将介绍以下配方:

  • 为什么 Python 是安全脚本编写的一个很好的选择
  • Python 3 语言基础和差异

介绍

在深入研究 Python 及其模块在安全脚本中的使用之前,我们需要了解语言基础知识和不同版本。另外,如果我们能够了解为什么 Python 是安全脚本的一个很棒的选项,那就太好了。

为什么 Python 是安全脚本编写的一个很好的选择

在大规模安全攻击和漏洞之后,安全/渗透测试在质量领域获得了发展势头。作为编程领域的一种流行语言,从过去几年出版的工具、书籍和脚本中可以明显看出,Python 已成为安全研究人员和黑客最喜爱的脚本语言。

准备

尽管网络和应用程序安全性被许多用于自动化和半自动化测试的工具淹没,但它可能并不总是保证成功。工具和脚本的即兴创作是笔测试的关键,并且总会有一些任务需要自动化或以另一种方式完成。成为一名成功的现实世界渗透测试人员需要大量定制脚本和编程任务。

怎么做。。。

这些是 Python 在安全脚本和编程中流行的主要原因。

Python 既可以用于解释,也可以用于编译

Python 程序可以在任何情况下进行编译,在这种情况下,它们可以作为已编译程序使用,而不需要频繁更改。这将使 Python 程序运行得更快,并为消除漏洞和 bug 提供更好的机会。此外,解释程序的运行速度比编译程序慢得多,并且更容易受到漏洞和攻击。

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

语法和缩进布局

Python 的语法和缩进布局使得在审查期间很容易弄清楚程序中发生了什么。缩进还使程序更具可读性,有助于简化协作编程。

简单学习曲线

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

强大的第三方库

一旦学习了 Python,就可以利用由大量库支持的平台。Python 包索引PyPI)是一个包含 85000 多个可重用 Python 模块和脚本的存储库,您可以在脚本中使用这些模块和脚本。作为一名安全研究人员,Python 是最好的学习语言,因为它有大量的反向工程和开发库。

跨平台(任意代码)

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

Python 3 语言基础和差异

Python 3.0 于 2008 年首次发布。尽管 Python3 被认为与其他旧版本向后不兼容,但它的许多特性都是后端口的,以支持旧版本。最好了解 Python 版本及其差异,以便更好地理解我们的食谱。

准备

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

怎么做。。。

这些是可用的主要 Python 版本。

Python 2

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

Python 3

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

起初,由于 Python3 与 Python2 的向后不兼容,采用 Python3 的过程非常缓慢。此外,许多包库仅适用于 Python2。后来,随着开发团队宣布 Python2 支持将结束,更多的库被移植或迁移到 Python3,Python3 得到了更多的采用。

Python 2.7

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

Python2.7 和 Python3 之间的主要区别

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

  • 打印:在 Python 2 中,print是一个语句。因此,打印时不需要将文本括在括号中。但在 Python 3 中,print是一个函数。因此,必须将需要打印的字符串传递给括号中的函数。
  • 整数除法:Python 2 将小数点后没有任何数字的数字视为整数,这可能会导致除法过程中出现一些意外的结果。
  • 列表理解循环变量泄漏:在 Python2 中,将列表理解循环中迭代的变量泄漏到周围的范围中,这个列表理解循环变量泄漏错误在 Python3 中已经修复。
  • Unicode 字符串:Python 2 要求使用u前缀显式标记 Unicode 字符串。但是,Python3 默认情况下将字符串存储为 unicode。
  • 引发异常:Python 3 需要不同的语法来引发异常。

从 Python2.x 到 Python3.x 的进程进展缓慢,但仍在进行中。请注意,Python2.x 和 Python3 之间存在重大差异,因为您可能需要处理以您不太熟悉的版本编写的代码。