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 -: 표준 입력에서 검색할 문자열 목록(한 줄에 하나씩)을 가져옵니다.
  • -n: 보고 줄 번호

관련 정보