명령줄 도구의 경우 한 파일의 내용과 다른 파일의 각 줄을 bash 스크립트의 인수로 어떻게 사용할 수 있습니까?

명령줄 도구의 경우 한 파일의 내용과 다른 파일의 각 줄을 bash 스크립트의 인수로 어떻게 사용할 수 있습니까?

다른 유용한 질문을 살펴봤지만 내 질문에 대한 답변이 없습니다. 저는 대학 과제*에 도움이 될 스크립트를 작성하려고 합니다. 최종 답을 얻기 위해 "시행 착오"를 거쳐야 하는 해시가 포함된 파일이 있습니다. 이 지시문에는 특히 jtr 점보 버전이 필요하므로 가능한 형식 목록이 많습니다. 사용 가능한 모든 형식을 각 줄에 형식 1이 포함된 "johnformats"라는 파일에 전달합니다. 이 스크립트를 다음과 같이 실행하고 싶습니다.

$ john hash.txt --format=[johnformats의 cat line 1] > johnout

그런 다음 마지막 형식 값을 반복하십시오.

$ john hash.txt --format=[johnformats의 cat line 204] > johnout

내 스크립트는 다음과 같습니다

#!/bin/bash

johnformats=$1
johnout=$2

exec 4> "$johnout"

while read -ru 3 LINE; do
    john "$(cat hash.txt)" --format="$LINE" >&4
done 3< "$johnformats"

스크립트를 실행하면 해시가 로드되지 않습니다.

통계: 고양이 해시: 해당 파일이나 디렉터리가 없습니다

작동하는지 확인하기 위해 $hash를 완전히 제거하여 다음을 시도했습니다.

비밀번호 파일이 필요하지만 지정되지 않았습니다.

204번 반복하면 다른 부분은 효과가 있다는 것을 알 수 있지만

John Ripper의 구문에는 파일의 해시 값이 필요합니다.

각 $LINE에 대해 "해시된" 콘텐츠를 사용하도록 만드는 방법만 알아내면 됩니다.

*내 질문은 크랙하는 방법이 아니라 크랙하는 데 사용하는 도구를 스크립트하는 방법입니다. 스크립팅은 권장되지만 필수는 아니며 과제와 관련이 없습니다. 나는 심피 터널링을 방지할 수 있는 가능한 모든 해시 접두사를 기억하지 못했습니다.

답변1

복잡성이 추가된 이유를 이해하지 못합니다. 당신이 정말로 원하는 것은:

john hash.txt --format=[cat line 1 from johnformats] > johnout
john hash.txt --format=[cat line 2 from johnformats] >> johnout
john hash.txt --format=[cat line 3 from johnformats] >> johnout

등.

따라서 스크립트에서는 다음과 같습니다.

#!/bin/bash

johnformats=$1
johnout=$2

while read line ; do
    john hash.txt --format="$line" >>$johnout
done < $johnformats

추가 파일 설명자 3과 4의 복잡성을 추가할 필요가 없으며 "$(cat hash.txt)"인수로 추가하는 것과는 완전히 다른 작업을 수행합니다.hash.txt

물론 오류 메시지에는 위의 코드 hash가 아닌 매개변수로 사용된 파일이 있다는 내용 과 파일이 존재하지 않는다는 내용이 나옵니다. 이것들도 확인하고 싶은 것입니다.hash.txthash

관련 정보