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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
wa-crypt-tools — WhatsApp .crypt12, .crypt14 및 .crypt15 파일을 관리합니다. | Kitploit
도구/GitHubGitHub/eldavoo/wa-crypt-tools
Android SecurityEncryption/Decryption ToolsMobile ForensicsData RecoveryDigital ForensicsCryptography
GitHubeldavoo/wa-crypt-tools

wa-crypt-tools

WhatsApp .crypt12, .crypt14 및 .crypt15 파일을 관리합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Coverage Status

WhatsApp Crypt Tools

WhatsApp 및 WA Business의 .crypt12, .crypt14, .crypt15 파일을 손쉽게 복호화하고 암호화하세요!
복호화를 위해서는 키 파일 또는 64자 길이의 키가 필요합니다 (또는 키가 담긴 스크린샷).
키 파일은 백업이 crypt14인 경우 "key",
백업이 crypt15(암호화된 E2E 백업)인 경우 "encrypted_backup.key"로 명명됩니다.
WhatsApp 포렌식을 위한 더 완전한 도구 모음을 찾고 있다면 whapa를 확인하세요.

빠른 설치

클라우드 - Google Colab

컴퓨터에 프로그램을 설치하고 싶지 않다면, 이 프로그램을 Google Colab에서 실행할 수 있습니다.

로컬 - Jupyter

Jupyter에 익숙하다면(익숙하지 않다면 여기를 읽어보세요), 프로그램의 노트북 버전을 사용할 수 있습니다.

로컬 - pip

이 스크립트를 pip를 통해 패키지로 설치할 수 있습니다. 다음을 실행하세요:

python -m pip install wa-crypt-tools

안정 버전의 경우, 그리고

python -m pip install git+https://github.com/ElDavoo/wa-crypt-tools

개발 버전의 경우입니다.

다른 패키지와의 충돌을 피하기 위해 가상 환경을 만들어야 할 수도 있습니다.

창: wagui

터미널을 전혀 사용하고 싶지 않다면, wagui는 백업을 복호화하는 작은 창입니다: 키를 선택하고, 백업을 선택하고, Decrypt를 누르세요.

The wagui window

다운로드하고 더블클릭하세요. 모든 릴리스에는 Python도 설치도 필요 없는 자체 포함 빌드가 포함되어 있습니다:

파일대상
wagui-windows-x64.exeWindows
wagui-macos-arm64.zipmacOS (Apple Silicon)
wagui-linux-x64Linux (먼저 chmod +x 필요)

macOS 빌드는 코드 서명이 되어 있지 않아 처음 열 때 macOS가 거부합니다: 앱을 오른쪽 클릭하고 Open을 선택한 다음 확인하세요.

pip로 패키지를 이미 설치했다면, 같은 창을 명령어 하나로 열 수 있습니다:

wagui

Linux에서는 pip 설치 시 배포판의 tkinter 패키지도 필요합니다(Debian/Ubuntu에서는 python3-tk, Fedora에서는 python3-tkinter) -- Python의 일부이지만 별도로 패키징됩니다. 다운로드 가능한 빌드에는 내장되어 있어 아무것도 필요하지 않습니다.

이 창은 대부분의 사람들이 원하는 복호화를 다룹니다. 또한 wainfo가 하는 것처럼 파일을 선택하는 즉시 그 파일이 무엇인지 알려줍니다. 암호화, 키 파일 생성, 오프셋 추측은 아래의 명령줄 도구에 남아 있습니다.

빠른 시작

wadecrypt로 파일 복호화

usage: wadecrypt [-h] [-nm] [-bs BUFFER_SIZE] [-nd] [-v] [-f] [-y] [keyfile] [encrypted] [decrypted]

따라서 crypt12/14/15를 복호화하려면 프로그램에 키 파일, 암호화된 파일, 출력 파일의 이름을 제공합니다. 이미 존재하는 파일 위에 쓰지 않습니다; 원한다면 -y/--yes를 전달하세요.

예시

$ wadecrypt encrypted_backup.key msgstore.db.crypt15 msgstore.db
key15.py:51     : [I] Crypt15 / Raw key loaded
wadecrypt.py:271        : [I] Done

waencrypt로 파일 암호화 (BETA)

usage: waencrypt [-h] [-f] [-y] [-v] [--enable-features [ENABLE_FEATURES ...]] [--max-feature MAX_FEATURE]
                 [--multi-file] [--type {12,14,15}] [--iv IV] [--reference REFERENCE] [--noparse]
                 [--wa-version WA_VERSION] [--jid JID] [--backup-version BACKUP_VERSION] [--no-compress]
                 [-c [0-9]] [keyfile] [decrypted] [encrypted]

waencrypt는 이미 존재하는 파일 위에 쓰지 않습니다; 원한다면 -y/--yes를 전달하세요.

--reference를 사용하면 waencrypt는 참조된 백업을 바이트 단위로 재현합니다: IV, 헤더 (이 라이브러리가 모델링하지 않는 필드 포함), 압축 수준 모두 그것에서 가져오므로, 수정되지 않은 데이터베이스를 다시 암호화하면 처음 시작했던 md5를 그대로 돌려받습니다.

-c/--compression-level은 zlib 수준이며 기본값은 9로, 현재 WhatsApp이 사용하는 값입니다. 과거에는 1로 압축했습니다. --reference를 사용하면 수준이 참조에서 가져오므로, 오래된 백업을 재현하는 데 추가로 필요한 것은 없습니다; 재정의하려면 -c를 전달하세요.

암호화는 더 복잡하고 테스트되지 않았습니다: 같은 계정의 다른 암호화된 파일을 사용하는 것이 권장되며, 이를 "reference"라고 부르겠습니다.

참조 파일 사용 (데이터베이스 crypt15만 테스트됨)

waencrypt --reference msgstore.db.crypt15 encrypted_backup.key msgstore.db msgstore-new.db.crypt15
waencrypt.py:57         : [W] This script is in beta stage
waencrypt.py:89         : [I] Done!

참조 파일 없이

다음 매개변수를 제공해야 합니다:

  1. 기능 목록: 2019년 이후 데이터베이스에만 해당합니다. 이는 실제로 WhatsApp이 헤더에 기록하는 데이터베이스 마이그레이션 플래그이며, 데이터베이스 파일에서 이를 추론할 방법이 없습니다. 기본값은 2.26.34.7 msgstore가 가지는 값이며, 이는 전부입니다. msgstore만 이것을 가집니다. 다른 모든 백업 -- wa.db, stickers.db, 나머지 WhatsApp/Backups/ -- 은 기능 정보를 전혀 가지지 않으며, 이것이 wainfo가 "No feature table found (not a msgstore DB or very old)"라고 말하는 의미입니다. 그런 형태의 헤더를 작성하려면 --enable-features를 뒤에 아무것도 없이 전달하세요: 빈 목록은 마이그레이션 플래그도 백업 버전도 작성하지 않으며, 그러면 --max-feature는 아무것도 하지 않습니다.
  2. 최대 기능 번호로, 작성 시점 기준 39입니다
  3. 파일을 암호화한 앱의 버전: 기본값은 2.26.34.7입니다.
  4. Jid: 전화번호의 마지막 2자리 -- 이것은 정말로 본인의 것이며, 기본값은 00입니다
  5. 백업 버전: 1을 사용하세요.

매개변수를 생략하면 기본값이 사용되며, 이는 실제 2.26.34.7 백업에서 가져온 것입니다: 올바른 --iv와 --jid가 주어지면 waencrypt는 참조 없이도 휴대폰과 동일한 헤더 바이트를 작성합니다. --reference를 전달하는 것이 여전히 더 나은 방법입니다. 이미 가지고 있는 백업에서 IV, 압축 수준, 전체 헤더를 가져오기 때문입니다.

요약하면:

$ waencrypt --enable-features 5 6 7 8 9 10 11 12 13 14 15 16
 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 --type 15 --wa-version 2.26.34.7 --jid 00 --backup
-version 1 encrypted_backup.key msgstore.db msgstore-new.db.crypt15 
waencrypt.py:57         : [W] This script is in beta stage
waencrypt.py:89         : [I] Done!

wainfo 도구로 백업 파일에 대한 정보를 얻을 수 있습니다.

스크린샷에서 키 읽기

WhatsApp은 64자리 키를 한 번만 보여주고 다시는 보여주지 않으므로, 대부분의 사람들은 스크린샷을 찍습니다. 그 스크린샷을 키 파일이 들어가는 곳 어디든 도구에 전달할 수 있습니다 -- 별도의 플래그는 없으며, 도구가 전달받은 것이 무엇인지 스스로 판단합니다:

$ wadecrypt Screenshot_20260901-184609_WhatsApp.png msgstore.db.crypt15 msgstore.db
ocr.py:503      : [I] Reading the key from the screenshot, this takes a few seconds...
key15.py:55     : [I] Crypt15 / Raw key loaded
wadecrypt.py:301        : [I] Done

키만 읽고 싶다면 wainfo -k <screenshot>이 키만 출력합니다. wagui도 스크린샷을 받습니다: 키 파일을 선택할 곳에서 스크린샷을 선택하세요.

이것은 선택 사항이며 두 가지가 설치되어 있어야 합니다:

python -m pip install 'wa-crypt-tools[ocr]'

그리고 Tesseract 프로그램 자체 -- Debian/Ubuntu에서는 sudo apt install tesseract-ocr, macOS에서는 brew install tesseract, Windows에서는 winget install UB-Mannheim.TesseractOCR. 이것들이 없으면 다른 것은 아무것도 바뀌지 않습니다; 이미지를 전달한 경우에만 설치하라고 안내받습니다.

숫자 하나가 틀렸을 때

wadecrypt는 사용하기 전에 키를 백업과 대조하여 확인하고, 맞지 않으면 조용히 근접 오류를 찾아 작동하는 것을 계속 사용합니다. 단일 숫자 오류는 항상 찾아냅니다. 이에 대해 알려주지 않습니다. 할 일이 없기 때문입니다 -- 보고 싶다면 -v로 실행하세요. 후보는 실제로 백업의 시작 부분을 복호화한 경우에만 채택되므로, 여기서 사용되는 것은 추측이 아닙니다.

이는 직접 입력한 64자리 숫자에도 적용되며, 스크린샷에만 국한되지 않습니다 -- 숫자는 보통 스크린샷에서 옮겨 적기 때문에 같은 실수입니다. 여기서는 손으로 복사할 때 특유의 실수도 시도합니다: 두 숫자가 뒤바뀐 경우, 두 그룹이 뒤바뀐 경우, 4x4 격자를 행 대신 열 방향으로 읽은 경우. 이 모든 것은 약 1초가 걸립니다; 단순히 잘못된 키는 일반적인 오류 전에 2초가 걸립니다.

키 파일은 절대 추측하지 않습니다. 그 숫자는 누구도 옮겨 적지 않았으므로, 올바른 파일이거나 잘못된 파일입니다.

그마저도 실패하면, 그렇게 말하고 어떻게 해야 하는지 알려줍니다:

[C] Could not read the key from the screenshot: what it says does not decrypt this backup,
    and neither does any near miss of it.
    Transcribe the 64 digits from the screenshot by hand and pass those instead of the image.

알아둘 만한 몇 가지 다른 사항:

  • 원본 스크린샷을 주세요, 화면을 찍은 사진이나 누군가 축소한 버전이 아닙니다. 키만 잘라내는 것은 괜찮고 종종 도움이 됩니다.
  • 키 화면을 읽습니다: 4개의 그룹으로 이루어진 4개의 행, 또는 64자리가 되는 다른 레이아웃. 범용 OCR이 아니며 문장으로 쓰인 키를 찾지 않습니다.
  • wainfo -k는 대조할 백업이 없으므로 아무것도 복구할 수 없습니다 -- 읽은 것을 출력하고, 직접 그림과 비교하세요.

도구 목록

사용법은 도구를 -h 옵션과 함께 실행하세요. 0) wagui - 창 (위 참조); 유일하게 명령줄 도구가 아닌 것

  1. wacreatekey - 키 파일 생성
  2. wadecrypt - 백업 복호화
  3. waencrypt - 백업 암호화
  4. waguess - 백업 복호화를 시도하는 편법
  5. wainfo - 백업에 대한 정보 얻기

라이브러리로 사용

도구가 하는 모든 것은 import wa_crypt_tools를 통해 사용할 수 있습니다.

from wa_crypt_tools import DatabaseFactory, KeyFactory, IntegrityError
import zlib

key = KeyFactory.new("encrypted_backup.key")  # a key file, or the 64-character key itself

with open("msgstore.db.crypt15", "rb") as f:
    # Reads the header and leaves the stream at the start of the ciphertext.
    db = DatabaseFactory.from_file(f)
    plaintext = db.decrypt(key, f.read())

# The payload is usually zlib-compressed; a multi-file backup is a ZIP instead.
open("msgstore.db", "wb").write(zlib.decompress(plaintext))

버전 -- crypt12, crypt14 또는 crypt15 -- 은 팩토리가 키와 파일 헤더에서 판단합니다. 클래스를 직접 선택하지 않습니다.

오류

도구 다운로드