grep -n 不工作

grep -n 不工作

grep -n [pattern] [file]应该返回我的文件的行号和输出。

然而,grep -n [my pw] /usr/share/wordlists/weakpass_3只是返回

grep: /usr/share/wordlists/weakpass_3: binary file matches

文件存在并且用户可读,密码也在单词列表中。 file /usr/share/wordlists/weakpass_3 回报 /usr/share/wordlists/weakpass_3: data

如何让 grep 输出文件行的行号?

答案1

您的grep(可能是 GNU grep)检测到该文件可能不是文本,并且不会打印匹配的行,它只会告诉您有一个匹配项,以避免打印可能只是垃圾的内容。

要绕过它并打印它,您可以添加该-a选项(GNU 扩展)。

另请注意,grep默认情况下匹配正则表达式(rein grep),您需要-F查找子字符串。

此外,执行命令的参数是系统上的公共知识,因此您不应将密码或任何敏感数据传递给grep参数,除非grep它们恰好是 shell 的内置参数(grep尽管很少有 shell 具有内置功能)。

因此,假设printf有一个内置的 shell(现在大多数情况下):

printf '%s\n' "$password" | grep -anFf - /usr/share/wordlists/weakpass_3

在哪里:

  • -a:绕过二进制文件的启发式检查
  • -FF固定字符串搜索而不是正则表达式匹配
  • -f -:从标准输入中获取要搜索的字符串列表(每行一个)
  • -n:报告行号

相关内容