GO语言(二十九):模糊测试(下)-

Python012

GO语言(二十九):模糊测试(下)-,第1张

语料库文件以特殊格式编码。这是种子语料库和生成语料库的相同格式。

下面是一个语料库文件的例子:

第一行用于通知模糊引擎文件的编码版本。虽然目前没有计划未来版本的编码格式,但设计必须支持这种可能性。

下面的每一行都是构成语料库条目的值,如果需要,可以直接复制到 Go 代码中。

在上面的示例中,我们在 a []byte后跟一个int64。这些类型必须按顺序与模糊测试参数完全匹配。这些类型的模糊目标如下所示:

指定您自己的种子语料库值的最简单方法是使用该 (*testing.F).Add方法。在上面的示例中,它看起来像这样:

但是,您可能有较大的二进制文件,您不希望将其作为代码复制到您的测试中,而是作为单独的种子语料库条目保留在 testdata/fuzz/{FuzzTestName} 目录中。golang.org/x/tools/cmd/file2fuzz 上的file2fuzz工具可用于将这些二进制文件转换为为[]byte.

要使用此工具:

语料库条目:语料库 中的一个输入,可以在模糊测试时使用。这可以是特殊格式的文件,也可以是对 (*testing.F).Add。

覆盖指导: 一种模糊测试方法,它使用代码覆盖范围的扩展来确定哪些语料库条目值得保留以备将来使用。

失败的输入:失败的输入是一个语料库条目,当针对 模糊目标运行时会导致错误或恐慌。

fuzz target: 模糊测试的目标功能,在模糊测试时对语料库条目和生成的值执行。它通过将函数传递给 (*testing.F).Fuzz实现。

fuzz test: 测试文件中的一个被命名为func FuzzXxx(*testing.F)的函数,可用于模糊测试。

fuzzing: 一种自动化测试,它不断地操纵程序的输入,以发现代码可能容易受到的错误或漏洞等问题。

fuzzing arguments: 将传递给 模糊测试目标的参数,并由mutator进行变异。

fuzzing engine: 一个管理fuzzing的工具,包括维护语料库、调用mutator、识别新的覆盖率和报告失败。

生成的语料库: 由模糊引擎随时间维护的语料库,同时模糊测试以跟踪进度。它存储在$GOCACHE/fuzz 中。这些条目仅在模糊测试时使用。

mutator: 一种在模糊测试时使用的工具,它在将语料库条目传递给模糊目标之前随机操作它们。

package: 同一目录下编译在一起的源文件的集合。

种子语料库: 用户提供的用于模糊测试的语料库,可用于指导模糊引擎。它由 f.Add 在模糊测试中调用提供的语料库条目以及包内 testdata/fuzz/{FuzzTestName} 目录中的文件组成。这些条目默认使用go test运行,无论是否进行模糊测试。

测试文件: 格式为 xxx_test.go 的文件,可能包含测试、基准、示例和模糊测试。

漏洞: 代码中的安全敏感漏洞,可以被攻击者利用。

社会工程学分支有:公安社会工程学和网络社会工程学。

社会工程学的起源:在网络空间安全领域, Social Engineering 在国内 通常翻译最多的为“社会工程学”“社交工程”“社 会工程”“社工”等名词。其中“社会工程学”作为 传统字面翻译一直被国内沿用下来, 而“社交工程” 的翻译则从字面直接体现了社交互动的一面。

利用社会工程学字典实施暴力破解:

1暴力破解可以说是一门历史很悠久的黑客攻击手法,黑客通过一定的算法生成大量的密码信息,并将每一条密码与被攻击者的账号进行匹配测试,如果匹配测试成功,则黑客即可成功获取被攻击者的账号密码信息。

2但是随着大家的安全意识的提升,弱口令出现的几率越来越低,传统的字典爆破成功率也越来越低。社会工程学字典就是这样被黑客发明出来,黑客社会工程学字典中结合了被攻击者的用户名、生日、邮箱、手机号等多种涉及到网络环境中网民密码常见的字符串信息,并根据这些信息生成相应的字典文件。

3 DictGenerate是一个使用Go语言编写的社会工程学字典生成器,它只需要我们输入必要的信息,即可自动生成是社会工程学密码字典。