tomnomnom/gf

GitHub: tomnomnom/gf

gf 是一个 grep 封装工具,通过将常用正则模式和参数保存为 JSON 配置文件,让复杂搜索命令变得简单可复用。

Stars: 2081 | Forks: 338

# gf 一个 grep 的封装工具,用于避免输入常见的模式。 ## 是什么?为什么? 我 *大量* 使用 grep。在审计代码库时,查看 [meg](https://github.com/tomnomnom/meg) 的输出时,或者通常在处理大量数据时。我经常最终使用像下面这样相当复杂的模式: ``` ▶ grep -HnrE '(\$_(POST|GET|COOKIE|REQUEST|SERVER|FILES)|php://(input|stdin))' * ``` 输入所有这些内容时很容易出错,而且很难知道如果没有得到任何结果,是因为确实找不到,还是因为你把模式写错了或者选错了标志。 我编写了 `gf` 来为我经常使用的模式和标志组合命名。所以上面的命令就变成了简单的: ``` ▶ gf php-sources ``` ### 模式文件 模式定义存储在 `~/.gf` 中,作为可以进行版本控制的小型 JSON 文件: ``` ▶ cat ~/.gf/php-sources.json { "flags": "-HnrE", "pattern": "(\\$_(POST|GET|COOKIE|REQUEST|SERVER|FILES)|php://(input|stdin))" } ``` 为了稍微减少模式的长度和复杂性,你也可以指定多个模式的列表: ``` ▶ cat ~/.gf/php-sources-multiple.json { "flags": "-HnrE", "patterns": [ "\\$_(POST|GET|COOKIE|REQUEST|SERVER|FILES)", "php://(input|stdin)" ] } ``` 在 `examples` 目录中还有更多示例模式文件。 你可以使用 `-save` 标志从命令行创建模式文件: ``` ▶ gf -save php-serialized -HnrE '(a:[0-9]+:{|O:[0-9]+:"|s:[0-9]+:")' ``` ### 自动补全 包含了一个自动补全脚本,所以你可以按 'tab' 键来显示你的选项: ``` ▶ gf base64 debug-pages fw php-curl php-errors php-sinks php-sources sec takeovers urls ``` #### Bash 要启用自动补全,你需要在 `.bashrc` 或类似文件中 `source` `gf-completion.bash` 文件: ``` source ~/path/to/gf-completion.bash ``` #### Zsh 要启用自动补全,你需要使用 `autoload -U compaudit && compinit` 启用自动补全(如果你有 oh-my-zsh 则不需要),或者将其放入 `.zshrc` 中 然后在 `.zshrc` 或类似文件中 `source` `gf-completion.zsh` 文件: ``` source ~/path/to/gf-completion.zsh ``` 注意:如果你正在使用 oh-my-zsh 或类似工具,你可能会发现 `gf` 是 `git fetch` 的别名。你可以将 gf 二进制文件别名化为其他名称,或者使用 `unalias gf` 来移除 `git fetch` 的别名。 ### 使用自定义引擎 有一些很棒的代码搜索引擎可以作为 grep 的更好替代品。 一个很好的例子是 [the silver searcher](https://github.com/ggreer/the_silver_searcher)。 它更快(**快得多**)并且以更易于视觉消化的方式呈现结果。 为了使用不同的引擎,请在相关的模式文件中添加 `engine: `: ``` # 使用 the silver searcher 代替 grep 搜索 aws-keys pattern: # 1. 添加 "ag" engine # 2. 移除与 ag 无关的 E flag { "engine": "ag", "flags": "-Hanr", "pattern": "([^A-Z0-9]|^)(AKIA|A3T|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{12,}" } ``` * 注意:不同的引擎使用不同的标志,因此在上面的示例中,必须从 `aws-keys.json` 文件中移除 `E` 标志,ag 才能成功运行。 ## 安装 如果你已经安装并配置好了 Go,你可以使用以下命令安装 `gf`: ``` ▶ go get -u github.com/tomnomnom/gf ``` 如果你是使用 `go get` 安装的,你可以像这样向 `.bashrc` 启用自动补全: ``` ▶ echo 'source $GOPATH/src/github.com/tomnomnom/gf/gf-completion.bash' >> ~/.bashrc ``` 请注意,你必须重启终端,或者运行 `source ~/.bashrc` 才能使更改生效。 为了快速开始,你可以像这样将示例模式文件复制到 `~/.gf`: ``` ▶ cp -r $GOPATH/src/github.com/tomnomnom/gf/examples ~/.gf ``` 我作为示例包含的个人模式对你来说可能不太有用,但希望它们仍然是一个合理的参考点。 ## 贡献 我其实对新的模式文件最感兴趣!如果你有一些经常 grep 的内容,欢迎提交 PR 将新的模式文件添加到 examples 目录中。 一如既往,也欢迎错误修复 :)
标签:Bash, EVTX分析, EVTX分析, Go语言, grep封装, Homebrew安装, 开发辅助, 效率工具, 数字取证, 日志审计, 模式匹配, 程序破解, 网络安全审计, 自动化脚本, 自动化资产收集