Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pack — PACK (비밀번호 분석 및 크래킹 키트) | Kitploit
도구/GitHubGitHub/iphelix/pack
Password CrackingPassword AttacksHash AnalysisUtilities & Frameworks
GitHubiphelix/pack

pack

PACK (비밀번호 분석 및 크래킹 키트)

저장소 보기웹사이트
890174317년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Password Analysis and Cracking Kit (작성자: Peter Kacherginsky (iphelix))

PACK(Password Analysis and Cracking Toolkit)은 비밀번호 리스트 분석을 통해 마스크, 규칙, 문자 집합 및 기타 비밀번호 특성의 패턴 감지를 통해 비밀번호 크래킹을 향상시키기 위해 개발된 유틸리티 모음입니다. 이 툴킷은 Hashcat 계열 비밀번호 크래커에 대한 유효한 입력 파일을 생성합니다.

참고: 툴킷 자체는 비밀번호를 크랙할 수 없지만, 비밀번호 크래커의 작동을 더 효율적으로 만들기 위해 설계되었습니다.

분석을 위한 비밀번호 리스트 선택

툴킷을 사용하기 전에 비밀번호 리스트의 선택 기준을 설정해야 합니다. 사람들이 비밀번호를 만드는 방식을 분석하고자 하므로, 가능한 한 많은 유출된 비밀번호 샘플을 확보해야 합니다. 그러한 훌륭한 리스트 중 하나는 RockYou.com 침해 사건에 기반합니다. 이 리스트는 유사한 사이트(예: 소셜 네트워킹)에서 사용되는 일반적인 비밀번호에 대한 좋은 결과를 제공할 만큼 크고 다양한 컬렉션을 제공합니다. 이 리스트에서 얻은 분석은 특정 비밀번호 정책을 가진 조직에는 적용되지 않을 수 있습니다. 따라서 샘플 입력을 가능한 한 대상과 가깝게 선택해야 합니다. 또한, 이미 크랙된 비밀번호를 기반으로 한 리스트는 실제 사용자가 아닌 리스트를 크랙한 개인(들)이 사용한 규칙과 마스크의 통계적 편향을 생성하므로, 그러한 리스트는 피하도록 하세요.

StatsGen

수행할 수 있는 가장 기본적인 분석은 제공된 리스트에서 가장 일반적인 길이, 문자 집합 및 기타 비밀번호 특성을 얻는 것입니다. 아래 예에서는 약 1400만 개의 비밀번호를 포함하는 'rockyou.txt'를 사용합니다. 다음 명령줄로 statsgen.py를 실행합니다:

$ python statsgen.py rockyou.txt

위 명령의 출력은 다음과 같습니다:

                       _
     StatsGen #.#.#   | |
      _ __   __ _  ___| | _
     | '_ \ / _` |/ __| |/ /
     | |_) | (_| | (__|   < 
     | .__/ \__,_|\___|_|\_\
     | |                    
     |_| [email protected]


[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 100% (14344390/14344390) of passwords
    NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords

[*] Length:
[+]                         8: 20% (2966037)
[+]                         7: 17% (2506271)
[+]                         9: 15% (2191039)
[+]                        10: 14% (2013695)
[+]                         6: 13% (1947798)
...

[*] Character-set:
[+]             loweralphanum: 42% (6074867)
[+]                loweralpha: 25% (3726129)
[+]                   numeric: 16% (2346744)
[+]      loweralphaspecialnum: 02% (426353)
[+]             upperalphanum: 02% (407431)
...

[*] Password complexity:
[+]                     digit: min(0) max(255)
[+]                     lower: min(0) max(255)
[+]                     upper: min(0) max(187)
[+]                   special: min(0) max(255)

[*] Simple Masks:
[+]               stringdigit: 37% (5339556)
[+]                    string: 28% (4115314)
[+]                     digit: 16% (2346744)
[+]               digitstring: 04% (663951)
[+]                 othermask: 04% (576324)
...

[*] Advanced Masks:
[+]          ?l?l?l?l?l?l?l?l: 04% (687991)
[+]              ?l?l?l?l?l?l: 04% (601152)
[+]            ?l?l?l?l?l?l?l: 04% (585013)
[+]        ?l?l?l?l?l?l?l?l?l: 03% (516830)
[+]            ?d?d?d?d?d?d?d: 03% (487429)
...

참고: 발생 빈도가 1% 미만인 항목을 표시하지 않는 --hiderare 플래그를 포함하여 이상값의 수를 줄일 수 있습니다.

위 리스트에서 즉시 알 수 있는 내용은 다음과 같습니다:

  • 대부분의 비밀번호 길이는 6~10자입니다.
  • 대부분의 비밀번호는 소문자+숫자 문자 집합을 사용합니다.
  • 명확한 최소 또는 최대 비밀번호 복잡도는 없습니다.
  • 분석된 비밀번호는 "문자열 뒤에 숫자"라는 간단한 마스크를 따르는 경향이 있습니다.

마지막 섹션인 "Advanced Masks"에는 Hashcat 형식을 사용하여 가장 자주 발생하는 마스크가 포함되어 있습니다. 개별 기호는 다음과 같이 해석됩니다:

?l - 소문자 한 글자
?u - 대문자 한 글자
?d - 숫자 한 글자
?s - 특수 문자 한 글자

예를 들어, 첫 번째 마스크인 "?l?l?l?l?l?l?l?l"은 모든 소문자 알파 비밀번호와 일치합니다. 샘플 크기를 고려하면 약 4%의 비밀번호를 크랙할 수 있습니다. 그러나 초기 출력을 생성한 후 필터를 사용하여 비밀번호 데이터를 좁히는 데 관심이 있을 수 있습니다.

필터 사용하기

"stringdigit" 간단 마스크(문자열 뒤에 숫자)를 사용하여 RockYou 사용자가 비밀번호를 선택하는 경향을 살펴보겠습니다:

$ python statsgen.py ../PACK-0.0.3/archive/rockyou.txt --simplemask stringdigit -q --hiderare

[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 37% (5339556/14344390) of passwords
    NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords

[*] Length:
[+]                         8: 23% (1267260)
[+]                         7: 18% (981432)
[+]                         9: 17% (939971)
[+]                        10: 14% (750938)
[+]                         6: 11% (618983)
[+]                        11: 05% (294869)
[+]                        12: 03% (175875)
[+]                        13: 01% (103047)
[+]                        14: 01% (65958)

[*] Character-set:
[+]             loweralphanum: 88% (4720184)
[+]             upperalphanum: 06% (325941)
[+]             mixedalphanum: 05% (293431)

[*] Password complexity:
[+]                     digit: min(1) max(252)
[+]                     lower: min(0) max(46)
[+]                     upper: min(0) max(31)
[+]                   special: min(0) max(0)

[*] Simple Masks:
[+]               stringdigit: 100% (5339556)

[*] Advanced Masks:
[+]          ?l?l?l?l?l?l?d?d: 07% (420318)
[+]            ?l?l?l?l?l?d?d: 05% (292306)
[+]        ?l?l?l?l?l?l?l?d?d: 05% (273624)
[+]          ?l?l?l?l?d?d?d?d: 04% (235360)
[+]              ?l?l?l?l?d?d: 04% (215074)
...

출력 맨 위에는 분석된 전체 비밀번호의 백분율이 표시됩니다. 이 경우 "stringdigit" 마스크와 일치하는 비밀번호만 크랙하면 전체 세트의 약 37%만 복구할 수 있으며, 이는 원래 출력에 표시된 것과 동일합니다. 다음으로, 이 비밀번호 유형 중 소문자 이외의 문자를 사용하는 것은 11%에 불과합니다. 따라서 이 마스크와 일치하는 소문자 문자열에 집중하는 것이 현명합니다. 마지막으로 "Advanced Mask" 섹션에서 "stringdigit" 비밀번호의 대부분이 뒤에 두 자리 또는 네 자리 숫자가 있는 문자열로 구성되어 있음을 확인할 수 있습니다. 위 출력에서 얻은 정보를 바탕으로 대상 사용자의 비밀번호 생성 패턴에 대한 정신적 이미지를 만들기 시작할 수 있습니다.

비밀번호 길이, 마스크 및 문자 집합에 대한 몇 가지 다른 필터가 있습니다:

Length: --minlength 및/또는 --maxlength

Simple Mask: --simplemask [numeric, loweralpha, upperalpha, mixedalpha, loweralphanum 등]

Character sets: --charset [digit, string, stringdigit, digitstring, digitstringdigit 등]

참고: 동일한 클래스의 필터를 여러 개 쉼표로 구분된 목록으로 지정할 수 있습니다:

--simplemask="stringdigit,digitstring"

고급 마스크 저장하기

"Advanced Mask" 섹션은 전체 비밀번호의 1% 이상과 일치하는 패턴만 표시하지만, 주어진 딕셔너리와 일치하는 전체 비밀번호 마스크 목록을 얻고 저장하려면 다음 명령을 사용할 수 있습니다:

$ python statsgen.py rockyou.txt -o rockyou.masks

모든 비밀번호 마스크와 해당 빈도는 CSV 형식으로 지정된 파일에 저장됩니다. 당연히 지정된 매개변수와 일치하는 마스크 파일만 생성하도록 필터를 제공할 수 있습니다. 출력 파일은 다음 섹션에서 다룰 MaskGen 도구에 대한 입력으로 사용할 수 있습니다.

MaskGen

MaskGen은 Hashcat 계열 비밀번호 크래커에 대한 입력을 위해 패턴 기반 마스크 공격을 제작할 수 있게 해줍니다. 이 도구는 위에서 statsgen이 '-o' 플래그로 생성한 출력을 사용하여 마스크 복잡도, 마스크 발생 빈도 또는 이 둘의 비율(최적 지수)별로 정렬된 가장 최적의 마스크 공격을 생성합니다.

MaskGen을 StatGen의 출력만 인수로 실행해 보겠습니다:

$ python maskgen.py rockyou.masks

                       _ 
     MaskGen #.#.#    | |
      _ __   __ _  ___| | _
     | '_ \ / _` |/ __| |/ /
     | |_) | (_| | (__|   < 
     | .__/ \__,_|\___|_|\_\
     | |                    
     |_| [email protected]


[*] Analyzing masks in [rockyou.masks]
[*] Using 1,000,000,000 keys/sec for calculations.
[*] Sorting masks by their [optindex].
[*] Finished generating masks:
    Masks generated: 146578
    Masks coverage:  100% (14344390/14344390)
    Masks runtime:   >1 year

주목해야 할 몇 가지 정보가 있습니다:

  • 계산에 사용되는 기본 크래킹 속도는 1,000,000,000 keys/sec입니다.
  • 기본 정렬 모드는 --optindex 플래그와 동일한 [optindex]입니다.
  • 100% 적용 범위를 가진 146,578개의 고유 마스크가 생성되었습니다.
  • 생성된 모든 마스크의 총 실행 시간은 1년 이상입니다.

대상 시간 지정

공격을 수행하고 제작하는 데 시간이 일반적으로 제한되어 있기 때문에, maskgen은 공격을 수행할 수 있는 시간을 지정하고 정렬 모드에 따라 가장 최적의 마스크 컬렉션을 생성할 수 있습니다. 다양한 정렬 모드와 대상 시간을 실험해 보겠습니다:

$ python maskgen.py rockyou.masks --targettime 600 --optindex -q
[*] Analyzing masks in [rockyou.masks]
[*] Using 1,000,000,000 keys/sec for calculations.
[*] Sorting masks by their [optindex].
[!] Target time exceeded.
[*] Finished generating masks:
    Masks generated: 779
    Masks coverage:  56% (8116195/14344390)
    Masks runtime:   0:11:36
도구 다운로드