Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
regipy — Regipy는 오프라인 레지스트리 하이브를 파싱하기 위한 OS 독립적인 파이썬 라이브러리입니다. | Kitploit
도구/GitHubGitHub/mkorman90/regipy
ForensicsDigital ForensicsThreat IntelligenceIncident Response
GitHubmkorman90/regipy

regipy

Regipy는 오프라인 레지스트리 하이브를 파싱하기 위한 OS 독립적인 파이썬 라이브러리입니다.

저장소 보기
27759193일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

regipy

OpenSSF Scorecard

⚠️ v6.0.0의 주요 변경 사항

버전 6.0.0에는 중요한 현대화 변경 사항이 포함되어 있습니다:

  • Python 3.9+ 필요 - Python 3.6, 3.7, 3.8 지원 중단
  • attrs 라이브러리 제거 - 데이터 클래스가 이제 Python의 내장 dataclasses 모듈을 사용합니다
  • 코드에서 내부 클래스(Cell, VKRecord, Value, Subkey)를 가져오고 attr.asdict()와 같은 attrs 함수를 사용하는 경우 dataclasses.asdict()로 전환하세요

자세한 내용은 CHANGELOG를 참조하세요.

Regipy는 오프라인 레지스트리 하이브(REGF 헤더가 있는 Hive 파일)를 파싱하기 위한 Python 라이브러리입니다. regipy는 많은 기능을 제공합니다:

  • 라이브러리로 사용:
    • 루트 또는 지정된 경로에서 레지스트리 하이브를 재귀적으로 탐색하고 모든 하위 키와 값을 가져옵니다
    • 특정 하위 키와 값을 읽습니다
    • 레지스트리 하이브에 트랜잭션 로그를 적용합니다
  • 명령줄 도구
    • 전체 레지스트리 하이브를 json으로 덤프합니다
    • 레지스트리 하이브에 트랜잭션 로그를 적용합니다
    • 레지스트리 하이브를 비교합니다
    • 강력한 플러그인 시스템에서 플러그인을 실행합니다 (예: amcache, shimcache, 컴퓨터 이름 추출...)

Python 3.9 이상이 필요합니다.

설치

Regipy 최신 버전은 pypi에서 설치할 수 있습니다:

pip install regipy[full]

참고: regipy[full]은 컴파일 도구가 필요한 의존성을 설치하므로 시간이 다소 걸릴 수 있습니다. [full]을 생략하여 완화된 의존성으로 버전을 설치할 수도 있습니다.

또한 저장소를 복제한 후 다음을 실행하여 소스에서 설치할 수도 있습니다:

pip install --editable .[full]

Rust 가속 백엔드 (알파)

핵심 REGF 파서의 선택적 Rust 구현이 옵트인 백엔드로 제공되며, PyPI에 regipy-rs로 별도 게시됩니다:

pip install regipy[rust]
from regipy.registry_rs import RegistryHive  # instead of regipy.registry

reg = RegistryHive("/tmp/NTUSER.dat")
# Same API: get_key, iter_values, recurse_subkeys, plugins — everything
# works unchanged, including all regipy plugins.

이것은 전체 테스트 하이브 코퍼스에 걸쳐 순수 Python 파서와 1:1로 검증된 드롭인 대체품입니다 — 모든 키 경로, 타임스탬프, 값 및 플러그인 출력이 일치하는 SHA-256 순회 다이제스트로 공증됩니다 (regipy_tests/comparison_test.py 및 regipy-rs/BENCHMARKS.md의 Forensic parity evidence 섹션 참조).

값을 포함한 전체 순회(recurse_subkeys), 3회 실행 중 최고 기록:

HiveKeysPythonRustSpeedup
NTUSER.DAT1,812173 ms5 ms38x
UsrClass.dat6,205948 ms17 ms55x
amcache.hve2,105837 ms12 ms67x
SYSTEM30,75623.1 s91 ms253x
SYSTEM (Win10 1709)43,211118.7 s111 ms1,068x
SOFTWARE117,488745.6 s292 ms2,550x

cProfile은 그 이유를 보여줍니다: Python 백엔드에서는 순회 시간이 레코드별 construct 구조체 파싱과 값 디코딩에 의해 지배됩니다; Rust 백엔드를 사용하면 파서가 프로파일에서 완전히 사라지고 남은 Python 비용은 반환된 Subkey 데이터클래스를 구성하는 것뿐입니다. 전체 프로파일, 하이브별 다이제스트 및 몇 가지 의도적인 차이점(손상된 하이브의 예외 유형, 순환 방지 동작)을 문서화한 면책 조항은 regipy-rs/BENCHMARKS.md에 있습니다; python regipy-rs/benchmark.py는 전체 보고서를 재생성합니다.

순수 Python 파서는 여전히 기본값이며 Rust 백엔드가 설치되지 않은 경우 영향을 받지 않습니다.

CLI

헤더 파싱

regipy-parse-header ~/Documents/TestEvidence/Registry/SYSTEM

출력 예시:

╒════════════════════════╤══════════╕
│ signature              │ b'regf'  │
├────────────────────────┼──────────┤
│ primary_sequence_num   │ 11639    │
├────────────────────────┼──────────┤
│ secondary_sequence_num │ 11638    │
├────────────────────────┼──────────┤
│ last_modification_time │ 0        │
├────────────────────────┼──────────┤
│ major_version          │ 1        │
├────────────────────────┼──────────┤
│ minor_version          │ 5        │
├────────────────────────┼──────────┤
│ file_type              │ 0        │
├────────────────────────┼──────────┤
│ file_format            │ 1        │
├────────────────────────┼──────────┤
│ root_key_offset        │ 32       │
├────────────────────────┼──────────┤
│ hive_bins_data_size    │ 10534912 │
├────────────────────────┼──────────┤
│ clustering_factor      │ 1        │
├────────────────────────┼──────────┤
│ file_name              │ SYSTEM   │
├────────────────────────┼──────────┤
│ checksum               │ 0        │
╘════════════════════════╧══════════╛
[2019-02-09 13:46:12.111654] WARNING: regipy.cli: Hive is not clean! You should apply transaction logs
  • 하이브의 헤더를 파싱할 때 체크섬 검증과 트랜잭션 검증도 수행됩니다

전체 하이브를 디스크에 덤프 (시간이 다소 걸릴 수 있음)

regipy-dump ~/Documents/TestEvidence/Registry/NTUSER-CCLEANER.DAT -o /tmp/output.json

regipy-dump 유틸리티는 -t 플래그를 추가하여 JSON 대신 타임라인을 출력할 수도 있습니다

Hive에서 관련 플러그인 실행

regipy-plugins-run ~/Documents/TestEvidence/Registry/SYSTEM -o /tmp/plugins_output.json

하이브 유형이 자동으로 감지되고 관련 플러그인이 실행됩니다. 자세한 내용은 플러그인 섹션을 참조하세요

레지스트리 하이브 비교

동일한 유형의 레지스트리 하이브를 비교하고 CSV로 출력합니다 (-o가 지정되지 않은 경우 출력이 화면에 인쇄됩니다)

regipy-diff NTUSER.dat NTUSER_modified.dat -o /tmp/diff.csv

출력 예시:

[2019-02-11 19:49:18.824245] INFO: regipy.cli: Comparing NTUSER.DAT vs NTUSER_modified.DAT
╒══════════════╤══════════════╤════════════════════════════════════════════════════════════════════════════════╤════════════════════════════════════════════════╕
│ difference   │ first_hive   │ second_hive                                                                    │ description                                    │
╞══════════════╪══════════════╪════════════════════════════════════════════════════════════════════════════════╪════════════════════════════════════════════════╡
│ new_subkey   │              │ 2019-02-11T19:46:31.832134+00:00                                               │ \Software\Microsoft\legitimate_subkey          │
├──────────────┼──────────────┼────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────┤
│ new_value    │              │ not_a_malware: c:\temp\legitimate_binary.exe @ 2019-02-11 19:45:25.516346+00:00 │ \Software\Microsoft\Windows\CurrentVersion\Run │
╘══════════════╧══════════════╧════════════════════════════════════════════════════════════════════════════════╧════════════════════════════════════════════════╛
[2019-02-11 19:49:18.825328] INFO: regipy.cli: Detected 2 differences

트랜잭션 로그를 사용하여 레지스트리 하이브 복구

regipy-process-transaction-logs NTUSER.DAT -p ntuser.dat.log1 -s ntuser.dat.log2 -o recovered_NTUSER.dat

복구 후 registry-diff로 하이브를 비교하여 변경된 내용을 확인하세요

라이브러리로 사용

레지스트리 하이브 객체 초기화

from regipy.registry import RegistryHive

reg = RegistryHive("/Users/martinkorman/Documents/TestEvidence/Registry/Vibranium-NTUSER.DAT")

루트 키에서 전체 하이브를 재귀적으로 순회

for entry in reg.recurse_subkeys(as_json=True):
    print(entry)

키를 순회하고 모든 하위 키와 수정 시간 가져오기

for sk in reg.get_key('Software').iter_subkeys():
    print(sk.name, convert_wintime(sk.header.last_modified).isoformat())

Adobe 2019-02-03T22:05:32.525965
AppDataLow 2019-02-03T22:05:32.526047
McAfee 2019-02-03T22:05:32.526140
Microsoft 2019-02-03T22:05:32.526282
Netscape 2019-02-03T22:05:32.526352
ODBC 2019-02-03T22:05:32.526521
Policies 2019-02-03T22:05:32.526592

키의 값 가져오기

도구 다운로드