여러 CPU 코어 활용하기
이 단계에서는 John the Ripper 를 구성하여 여러 CPU 코어를 활용하는 방법을 배우게 됩니다. 이는 멀티코어 프로세서가 있는 시스템에서 크래킹 프로세스를 크게 가속화할 수 있습니다. 기본적으로 John the Ripper 는 사용 가능한 모든 코어를 사용하지 않을 수 있습니다. --fork 옵션을 사용하여 사용할 CPU 코어 수를 지정할 수 있습니다.
먼저, 기본 성능을 확인하기 위해 코어 수를 지정하지 않고 간단한 벤치마크를 실행해 보겠습니다.
john --test=0
다음과 유사한 출력이 표시되며, 다양한 해시 유형에 대한 성능을 보여줍니다.
Benchmarking: Traditional DES [32/32 BS SSE2-i]... DONE
Many calculations will be done, please be patient.
Raw: 100000 c/s real, 100000 c/s virtual
Benchmarking: BSDI DES [32/32 BS SSE2-i]... DONE
Raw: 100000 c/s real, 100000 c/s virtual
...
이제 여러 CPU 코어를 사용하도록 John the Ripper 에 명시적으로 지시하면서 벤치마크를 다시 실행해 보겠습니다. 시스템에서 사용 가능한 CPU 코어 수를 확인하려면 nproc 명령을 사용할 수 있습니다.
nproc
이 명령은 사용 가능한 처리 장치 수를 출력합니다. 예를 들어, 2가 출력되면 CPU 코어가 2 개 있는 것입니다.
이제 사용하려는 코어 수와 함께 --fork 옵션을 사용합니다. 선호하는 경우 $(nproc)를 실제 코어 수로 바꾸어도 되지만, $(nproc)는 동적입니다.
john --test=0 --fork=$(nproc)
두 벤치마크의 "Raw" 성능 숫자를 비교해 보세요. 여러 코어를 사용할 때, 특히 CPU 집약적인 해시 유형의 경우 크래킹 속도가 향상되는 것을 볼 수 있어야 합니다. --fork 옵션은 별도의 프로세스를 생성하며, 각 프로세스는 크래킹 작업의 일부를 처리하여 병렬 처리를 활용합니다.
마지막으로, 여러 코어를 사용하여 비밀번호 파일을 크래킹해 보겠습니다. ~/project 디렉토리에 passwords.txt 파일이 있습니다.
john --wordlist=~/project/wordlist.txt --fork=$(nproc) ~/project/passwords.txt
크래킹이 완료된 후, 크랙된 비밀번호를 볼 수 있습니다.
john --show ~/project/passwords.txt
이 명령은 John the Ripper 가 성공적으로 크랙한 비밀번호를 표시합니다.