Pipal模块化:密码分析器的检查器与分割器系统解析

本文详细介绍了Pipal密码分析工具新引入的模块化检查器与分割器系统,包括其架构设计、功能实现方式以及如何通过符号链接启用自定义模块,适用于安全研究人员和密码分析开发者。

Checkers and Splitters - Pipal Goes Modular

这是一篇简短文档,用于解释新的模块化检查器(checker)和分割器(splitter)系统的工作原理。目前系统尚未完成,未来可能还会更改,我会尽量保持本指南的更新。

您可以从GitHub代码库的modular分支获取新代码。

如果您对这个新的模块化方法有任何问题、建议或一般性评论,请随时联系。

检查器(Checkers)

检查器是Pipal最重要的组成部分,它们接收密码并执行分析。最初所有检查器都内置在主脚本中,难以维护且添加新检查器更加困难,因此我将它们拆分为独立的模块,称为检查器。

其设置方式类似于Apache在某些Linux发行版中处理虚拟主机的方式:存在一个checkers_available目录和一个checkers_enabled目录。要启用检查器,只需将其符号链接到启用目录中,系统便会使用它。这样,不关心某些功能(例如Hashcat掩码)的用户就不必浪费处理器周期生成它们。在小列表上这可能影响不大,但在大列表上会有明显效果。

检查器现在的另一个优点是易于编写新的检查器。要了解检查器可以多么简单,请查看checkers_available中的windows_complexity_checker.rb文件。仅25行代码就能实现一个检查默认Windows复杂性的检查器;要修改它以覆盖您自己的规则,只需克隆文件、更新正则表达式、名称和一些描述内容,然后将其符号链接到相应位置。

如果您想检查项目列表,这甚至更容易。查看colour_checker.rb,它只有15行代码。给它一个名称、列表和描述,其余部分都会自动处理。

--list-checkers参数将显示所有可用检查器及其简要描述的列表。我计划扩展此功能,使每个检查器还包含更详细的描述,并可按需请求查看。

分割器(Splitters)

如果您想处理不仅包含密码的文件(例如还包含用户名),该怎么办?默认操作是将文件中的每个新行视为密码,但现在您可以使用自定义分割器来定义哪些是密码,哪些是额外数据。然后,您可以编写一个能够理解额外数据的自定义检查器,并开始使用。任何不关心额外数据的现有检查器将忽略它,但您的自定义检查器将能够处理它。

作为示例,我创建了一个名为pipe_pass_user.rb的分割器。顾名思义,这是一个管道符(|)分隔的文件,密码在前,用户名在后。代码同样相当简单:一个包含名为split的静态方法的类,该方法接收文件中的行并将其拆分为密码和用户名。密码单独返回,用户名放入关联数组中。目前只有username.rb检查器理解如何处理extras数组中的用户名字段,它会获取该字段并在用户名和密码之间进行各种比较。其余检查器将忽略额外数据并正常工作。

一次只能使用一个分割器。要实现这一点,请将您要使用的分割器符号链接到主Pipal目录中名为custom_splitter.rb的文件中,系统将自动识别它。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计