# 零、序言 Python 是一种高级通用语言,具有清晰的语法和全面的标准库。Python 通常被称为脚本语言,以其低复杂性、无限库和第三方模块在信息安全领域占据主导地位。安全专家特别指出 Python 是开发信息安全工具包(如 w3af)的语言。模块化设计、可读代码和充分开发的库套件使 Python 适合安全研究人员和专家编写脚本和构建安全测试工具。 基于 Python 的工具包括所有类型的模糊器、代理,甚至偶尔利用。Python 是当前几种开源渗透测试工具的驱动语言,从用于内存分析的 Volatility 到用于抽象检查电子邮件过程的 libPST。这是一种很好的学习语言,因为有大量的逆向工程和开发库可供您使用。因此,在需要扩展或调整这些工具的困难情况下,学习 Python 可能会对您有所帮助。 在本书中,我们将了解渗透测试人员如何使用这些工具和库来帮助其日常工作。 # 这本书涵盖的内容 [第 1 章](01.html "Chapter 1. Python Scripting Essentials")、*Python 脚本编写要点*打破了僵局,提供了 Python 脚本编写、安装第三方库、线程、进程执行、异常处理和渗透测试的基本概念。 [第 2 章](02.html "Chapter 2. Analyzing Network Traffic with Scapy")*使用 Scapy*分析网络流量,介绍了一种数据包操作工具 Scapy,它允许用户嗅探、创建、发送和切片数据包进行分析。本章深入介绍了使用 Scapy 调查网络流量、解析 DNS 流量、数据包嗅探、数据包注入和被动操作系统指纹识别。这使您能够通过网络创建和发送自定义数据包,并分析各种协议的原始输出。 [第 3 章](03.html "Chapter 3. Application Fingerprinting with Python")*应用程序 Python 指纹识别*讨论了使用 Python 对 web 应用程序进行指纹识别的基础知识。您将掌握 web 抓取、电子邮件收集、操作系统指纹识别、应用程序指纹识别和使用 Python 库收集信息的技术。 [第 4 章](04.html "Chapter 4. Attack Scripting with Python")*用 Python 编写攻击脚本*通过详细说明攻击技术和 OWASP 顶级漏洞,解决了需要使用 Python 脚本进行有效渗透测试的攻击问题。您将学习编写脚本以利用相同的漏洞。 [第 5 章](05.html "Chapter 5. Fuzzing and Brute-Forcing")*模糊化和暴力强迫*告诉您,模糊化和暴力强迫仍然是测试人员应对的最主要攻击。本章总结了模糊和暴力强制密码、目录和文件位置;强力破解 ZIP 文件;HTML 表单认证;和 Sulley 模糊框架。这使得用户能够使用 Python 扩展用于测试需求的模糊工具。 [第 6 章](06.html "Chapter 6. Debugging and Reverse Engineering")*调试和逆向工程*描述了一个 pentester 应该掌握的调试和逆向工程技术。使用 Capstone 和 PyDBG 介绍了调试技术。 [第 7 章](07.html "Chapter 7. Crypto, Hash, and Conversion Functions")、*加密、哈希和转换函数*总结了 Python 加密工具包,它可以帮助您编写脚本来查找不同类型的密码哈希。 [第 8 章](08.html "Chapter 8. Keylogging and Screen Grabbing")*键盘记录和屏幕抓取*讨论了键盘记录和屏幕抓取技术的基础知识。PyHook 提供了这些技术,它可以帮助记录键盘事件并使用 Python 截图。 [第 9 章](09.html "Chapter 9. Attack Automation")、*攻击自动化*对攻击自动化进行了详细描述,包括 SSH 暴力强制、使用 paramiko 的 SFTP 自动化、Nmap 自动化、W3af 自动化、Metasploit 集成以及防病毒和 IDS 规避。 [第 10 章](10.html "Chapter 10. Looking Forward")*展望*深入了解了一些用 Python 编写的工具,这些工具可以集成到 pentesting 中。您可以使用这些工具来提高渗透测试的技能 # 这本书你需要什么 您基本上需要一台安装了 Python 的计算机。 # 这本书是给谁的 本书非常适合那些熟悉 Python 或类似语言的人,他们不需要基本编程概念的帮助,但希望了解渗透测试的基础知识和所面临的问题。 # 公约 在本书中,您将发现许多文本样式可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。 文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“我们可以通过使用`include`指令来包含其他上下文。” 代码块设置如下: ``` import socket socket.setdefaulttimeout(3) newSocket = socket.socket() newSocket.connect(("localhost",22)) ``` 当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示: ``` import socket socket.setdefaulttimeout(3) newSocket = socket.socket() newSocket.connect(("localhost",22)) ``` 任何命令行输入或输出的编写方式如下: ``` $ pip install packagename ``` Python 交互终端命令和输出编写如下。 ``` >>> packet=IP(dst='google.com') ``` **新术语**和**重要词语**以粗体显示。您在屏幕上看到的单词,例如,在菜单或对话框中,会出现在如下文本中:“单击**OS X**链接。” ### 注 警告或重要注释显示在这样的框中。 ### 提示 提示和技巧如下所示。 # 读者反馈 我们欢迎读者的反馈。让我们知道你对这本书的看法你喜欢还是不喜欢。读者反馈对我们来说很重要,因为它可以帮助我们开发出您将真正从中获得最大收益的标题。 要向我们发送总体反馈,只需发送电子邮件`feedback@packtpub.com`,并在邮件主题中提及该书的标题。 如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请参阅我们的作者指南[www.packtpub.com/authors](http://www.packtpub.com/authors)。 # 客户支持 既然您是一本 Packt 图书的骄傲拥有者,我们有很多东西可以帮助您从购买中获得最大收益。 ## 下载示例代码 您可以从您的帐户[下载本书的示例代码文件 http://www.packtpub.com](http://www.packtpub.com) 。如果您在其他地方购买了本书,您可以访问[http://www.packtpub.com/support](http://www.packtpub.com/support) 并注册,将文件直接通过电子邮件发送给您。 您可以通过以下步骤下载代码文件: 1. 使用您的电子邮件地址和密码登录或注册我们的网站。 2. 将鼠标指针悬停在顶部的**支架**选项卡上。 3. 点击**代码下载&勘误表**。 4. 在**搜索**框中输入图书名称。 5. 选择要下载代码文件的书籍。 6. 从您购买本书的下拉菜单中选择。 7. 点击**代码下载**。 下载文件后,请确保使用以下最新版本解压或解压缩文件夹: * WinRAR/7-Zip for Windows * 适用于 Mac 的 Zipeg/iZip/UnRarX * 适用于 Linux 的 7-Zip/PeaZip 该书的代码包也托管在 GitHub 上的[https://github.com/PacktPublishing/Effective-Python-Penetration-Testing](https://github.com/PacktPublishing/Effective-Python-Penetration-Testing) 。我们在[上还提供了丰富的书籍和视频目录中的其他代码包 https://github.com/PacktPublishing/](https://github.com/PacktPublishing/) 。看看他们! ## 勘误表 虽然我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的一本书中发现错误,可能是文本或代码中的错误,如果您能向我们报告,我们将不胜感激。通过这样做,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。如果您发现任何错误,请访问[进行报告 http://www.packtpub.com/submit-errata](http://www.packtpub.com/submit-errata) ,选择您的书籍,点击**勘误表提交表**链接,输入您勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上载到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。 要查看之前提交的勘误表,请转至[https://www.packtpub.com/books/content/support](https://www.packtpub.com/books/content/support) 并在搜索字段中输入图书名称。所需信息将出现在**勘误表**部分下。 ## 盗版 在互联网上盗版版权材料是所有媒体都面临的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现任何形式的非法复制品,请立即向我们提供地址或网站名称,以便我们采取补救措施。 请致电`copyright@packtpub.com`与我们联系,并提供可疑盗版材料的链接。 我们感谢您在保护我们的作者方面提供的帮助以及我们为您带来有价值内容的能力。 ## 问题 如果您对本书的任何方面有任何问题,可以通过`questions@packtpub.com`与我们联系,我们将尽力解决该问题。