사용자 정의 문자 세트 정의 최적화하기
이 단계에서는 다양한 문자 유형을 결합하고 John 의 내장 문자 클래스를 사용하여 사용자 정의 문자 세트 정의를 더욱 최적화하는 방법을 배웁니다. John the Ripper 는 소문자의 경우 ?l, 대문자의 경우 ?u, 숫자의 경우 ?d, 기호의 경우 ?s와 같은 미리 정의된 클래스를 사용하여 문자 세트를 정의할 수 있도록 합니다.
Pass123!와 같은 비밀번호에 대한 해시를 생성해 보겠습니다.
echo "user4:\$6\$salt4\$y.g.a.hash.for.Pass123!" > ~/project/complex_hash.txt
모든 문자를 나열하는 대신 John 의 문자 클래스를 사용할 수 있습니다. 이러한 클래스를 결합하는 complex.chr라는 파일을 만들어 보겠습니다.
nano ~/project/complex.chr
complex.chr 파일에 다음 내용을 추가합니다.
[CharSet]
charset = ?l?u?d?s
파일을 저장합니다 (Ctrl+X, Y, Enter).
여기서 ?l은 소문자를, ?u는 대문자를, ?d는 숫자를, ?s는 기호를 나타냅니다. 이는 광범위한 문자 세트를 정의하는 더 간결한 방법입니다.
이제 이 최적화된 문자 세트를 사용하여 John the Ripper 를 실행해 보겠습니다.
john --format=sha512crypt --incremental=complex --external=~/project/complex.chr ~/project/complex_hash.txt
John 은 이제 소문자, 대문자, 숫자 및 기호의 모든 조합을 사용하여 비밀번호를 크래킹하려고 시도합니다.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Will run till completion
Press 'q' or Ctrl-C to abort, almost any other key for status
Pass123! (user4)
1g 0:00:00:00 DONE (2023-10-27 10:15) 100.0g/s 100p/s 100c/s 100C/s Pass123!
Use the "--show" option to display all of the cracked passwords reliably
Session completed
크래킹된 비밀번호를 확인하려면 다음을 실행합니다.
john --show ~/project/complex_hash.txt
user4:Pass123!
1 password hash cracked, 0 left
이 방법은 모든 문자를 수동으로 나열하지 않고 일반적인 문자 세트를 정의하는 데 효율적입니다. 일반적인 비밀번호 구성에 대해 구체성과 정의 용이성 간의 좋은 균형을 제공합니다.