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
기본적으로 정규식( re
in )과 일치하면 하위 문자열을 찾아야 grep
합니다 .-F
게다가, 명령을 실행하기 위한 매개변수는 시스템에 대한 상식이므로, 쉘의 내장 매개변수가 grep
아닌 한 비밀번호나 민감한 데이터를 매개변수 에 전달해서는 안 됩니다( 내장된 기능을 갖춘 쉘은 거의 없습니다). .grep
grep
따라서 printf
내장 셸이 있다고 가정합니다(요즘 대부분의 경우).
printf '%s\n' "$password" | grep -anFf - /usr/share/wordlists/weakpass_3
어디:
-a
: 바이너리에 대한 경험적 검사 우회-F
:F
정규식 일치 대신 문자열 검색을 수정했습니다.-f -
: 표준 입력에서 검색할 문자열 목록(한 줄에 하나씩)을 가져옵니다.-n
: 보고 줄 번호