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に渡すべきではありません(組み込み機能を備えたシェルはほとんどありません)。 。grepgrep

したがって、printf組み込みシェルがあるとします(今日のほとんどの場合)。

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

どこ:

  • -a: バイナリの経験的検査バイパス
  • -F:F正規表現一致ではなく文字列検索を修正しました。
  • -f -:標準入力から検索する文字列のリスト(1行に1つ)を取得します。
  • -n:報告行番号

関連情報