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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
bkcrack — Biham과 Kocher의 알려진 평문 공격을 통해 레거시 zip 암호화를 크랙합니다. | Kitploit
도구/GitHubGitHub/kimci86/bkcrack
Password CrackingEncryption/Decryption ToolsVulnerability AnalysisCryptography
GitHubkimci86/bkcrack

bkcrack

Biham과 Kocher의 알려진 평문 공격을 통해 레거시 zip 암호화를 크랙합니다.

저장소 보기
2.2k18852개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

bkcrack

CI badge coverage badge release badge license badge GitHub Sponsors badge

Biham과 Kocher의 알려진 평문 공격(known plaintext attack)을 사용하여 레거시 zip 암호화를 해독합니다.

개요

ZIP 아카이브는 내용이 압축 및/또는 암호화될 수 있는 많은 항목을 포함할 수 있습니다. 특히, 항목은 전통적인 PKWARE 암호화, 레거시 암호화 또는 ZipCrypto라고 불리는 비밀번호 기반 대칭 암호화 알고리즘으로 암호화될 수 있습니다. 이 알고리즘은 의사 난수 바이트 스트림(키스트림)을 생성하고, 이를 항목의 내용(평문)에 XOR하여 암호화된 데이터(암호문)를 만듭니다. 3개의 32비트 정수로 구성된 생성기의 상태는 비밀번호를 사용하여 초기화된 후, 암호화가 진행됨에 따라 평문으로 지속적으로 업데이트됩니다. 이 암호화 알고리즘은 Eli Biham과 Paul C. Kocher의 연구 논문 A known plaintext attack on the PKZIP stream cipher에서 보여진 바와 같이 알려진 평문 공격에 취약합니다. 암호문과 12바이트 이상의 해당 평문이 주어지면 키스트림 생성기의 내부 상태를 복구할 수 있습니다. 이 내부 상태는 암호문 전체는 물론 동일한 비밀번호로 암호화된 다른 항목을 해독하는 데 충분합니다. 또한 복잡도 nl-6 (n은 문자 집합 크기, l은 비밀번호 길이)로 비밀번호를 무차별 대입(bruteforce)하는 데 사용할 수도 있습니다.

bkcrack은 이 알려진 평문 공격을 구현하는 명령줄 도구입니다. 주요 기능은 다음과 같습니다:

  • 암호문과 평문으로부터 내부 상태 복구
  • 내부 상태를 사용하여 ZIP 아카이브의 비밀번호 제거 또는 변경
  • 내부 상태로부터 원래 비밀번호 복구

설치

사전 컴파일된 패키지

최신 공식 릴리스는 GitHub에서 받을 수 있습니다.

Ubuntu, MacOS 및 Windows용 사전 컴파일된 패키지를 다운로드할 수 있습니다. 다운로드한 아카이브를 원하는 위치에 압축 해제하세요.

Windows에서 bkcrack을 실행하려면 Microsoft 런타임 라이브러리가 필요합니다. 시스템에 아직 설치되어 있지 않은 경우 최신 Microsoft Visual C++ 재배포 가능 패키지를 다운로드하여 설치하세요.

소스에서 컴파일

또는 CMake로 프로젝트를 컴파일할 수 있습니다.

먼저 소스 파일을 다운로드하거나 git 저장소를 클론하세요. 그런 다음 소스 트리에서 다음 명령을 실행하면 install 폴더에 설치본이 생성됩니다.

root@kitploit:~
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=install
cmake --build build --config Release
cmake --build build --config Release --target install

타사 패키지

bkcrack은 아래 나열된 패키지 저장소에서도 사용할 수 있습니다. 이 패키지는 외부 관리자가 제공합니다.

Packaging status

사용법

항목 나열

다음과 같이 archive.zip이라는 아카이브의 항목 이름과 메타데이터 목록을 볼 수 있습니다:

root@kitploit:~
bkcrack -L archive.zip

ZipCrypto 암호화를 사용하는 항목은 알려진 평문 공격에 취약합니다.

내부 키 복구

공격에는 최소 12바이트의 알려진 평문이 필요합니다. 그중 최소 8바이트는 연속적이어야 합니다. 연속적인 알려진 평문이 클수록 공격 속도가 빨라집니다.

zip 아카이브에서 데이터 로드

암호문이 포함된 항목 cipher가 있는 zip 아카이브 encrypted.zip과 알려진 평문으로 plain 항목이 있는 plain.zip이 있는 경우, bkcrack을 다음과 같이 실행할 수 있습니다:

root@kitploit:~
bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain

파일에서 데이터 로드

암호문이 포함된 파일 cipherfile (암호화 헤더에 해당하는 12바이트로 시작)과 알려진 평문이 포함된 plainfile이 있는 경우, bkcrack을 다음과 같이 실행할 수 있습니다:

root@kitploit:~
bkcrack -c cipherfile -p plainfile

오프셋

평문이 암호문의 시작 부분이 아닌 다른 부분에 해당하는 경우 오프셋을 지정할 수 있습니다. 평문에 암호화 헤더의 일부가 포함된 경우 음수일 수 있습니다.

root@kitploit:~
bkcrack -c cipherfile -p plainfile -o offset

드문드문한 평문

알려진 연속 평문이 적지만(8~11바이트), 다른 알려진 오프셋에서 일부 바이트를 알고 있는 경우 이 정보를 제공하여 총 12개의 알려진 바이트 요구 사항을 충족할 수 있습니다. 이를 위해 -x 플래그 다음에 오프셋과 16진수 바이트를 사용합니다.

root@kitploit:~
bkcrack -c cipherfile -p plainfile -x 25 4b4f -x 30 21

해독

공격이 성공하면 공격에 사용된 암호문에 해당하는 해독된 데이터를 저장할 수 있습니다:

root@kitploit:~
bkcrack -c cipherfile -p plainfile -d decipheredfile

이전 공격에서 키를 알고 있는 경우 bkcrack을 사용하여 데이터를 해독할 수 있습니다:

root@kitploit:~
bkcrack -c cipherfile -k 12345678 23456789 34567890 -d decipheredfile

압축 해제

해독된 데이터는 zip 파일 생성 시 압축이 사용되었는지 여부에 따라 압축될 수 있습니다. deflate 압축이 사용된 경우 tools 폴더에 제공된 Python 3 스크립트를 사용하여 데이터를 압축 해제할 수 있습니다.

root@kitploit:~
python3 tools/inflate.py < decipheredfile > decompressedfile

비밀번호 제거

암호화된 아카이브의 모든 항목에 한 번에 접근하려면 동일한 내용이지만 암호화되지 않은 새 아카이브를 생성할 수 있습니다. 이 명령은 모든 항목이 원래 동일한 비밀번호로 암호화되었다고 가정합니다.

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -D decrypted.zip

비밀번호 변경

원하는 비밀번호로 새로 암호화된 아카이브를 생성하는 것도 가능합니다:

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -U unlocked.zip new_password

해당 내부 표현으로 새 비밀번호를 정의할 수도 있습니다.

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 --change-keys unlocked.zip 581da44e 8e40167f 50c009a0

이 두 명령을 함께 사용하면 비밀번호를 모르지만 내부 키만 알고 있는 경우 암호화된 아카이브의 내용을 변경할 수 있습니다: 원하는 비밀번호로 암호화된 복사본을 만든 다음, 아카이브 관리자로 복사본을 편집하고 선택한 비밀번호를 입력한 후, 수정된 복사본을 원래 암호화 키로 다시 복사합니다.

비밀번호 복구

내부 키가 주어지면 bkcrack은 원래 비밀번호를 찾으려고 시도할 수 있습니다.

무차별 대입 비밀번호 복구

주어진 문자 집합을 사용하여 비밀번호를 검색할 수 있습니다:

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p

검색을 특정 길이 또는 길이 범위의 비밀번호로 제한할 수 있습니다:

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 9
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 8..10

옵션 -r <length> <charset>은 -l 0..<length> -b <charset>의 단축어입니다:

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -r 10 ?p

마스크 기반 비밀번호 복구

비밀번호 형식에 대한 일부 지식이 있는 경우 마스크를 지정하여 검색 공간을 제한하고 복구를 훨씬 빠르게 할 수 있습니다. 이는 무차별 대입이 매우 시간 소모적인 긴 비밀번호(예: 12자 이상)에 유용합니다.

예를 들어 비밀번호가 소문자 8개, 하이픈 1개, 10진수 6개로 구성되어 있다고 대략 기억하는 경우 다음 명령을 사용할 수 있습니다:

root@kitploit:~
bkcrack -k 1940e266 d3fd3d89 71ce9871 -m ?l?l?l?l?l?l?l?l-?d?d?d?d?d?d

이 작업은 밀리초 단위로 실행되는 반면, 무차별 대입 방식은 몇 시간이 걸립니다.

문자 집합

무차별 대입 및 마스크 기반 비밀번호 복구 모두의 검색 공간은 문자 집합으로 정의됩니다. 문자 집합은 문자 시퀀스 또는 기존 문자 집합에 대한 단축어입니다. 미리 정의된 문자 집합은 아래에 나열되어 있습니다.

미리 정의된 문자 집합 외에도 -s 옵션으로 사용자 정의 문자 집합을 정의할 수 있습니다. 사용자 정의 문자 집합은 미리 정의된 문자 집합이나 다른 사용자 정의 문자 집합을 참조할 수 있습니다. 사용자 정의 문자 집합은 특히 마스크 기반 복구 검색 공간의 정밀한 지정에 유용합니다.

예를 들어 비밀번호가 10개의 문자(대문자 또는 소문자)와 5개의 이진 숫자로 구성되어 있다고 알고 있는 경우 다음 명령을 사용할 수 있습니다:

root@kitploit:~
bkcrack -k b8c377a6 f603160f 1832a78b -m ?x?x?x?x?x?x?x?x?x?x?y?y?y?y?y -s x ?u?l -s y 01

학습

example 폴더에 튜토리얼이 제공됩니다.

자세한 내용은 문서를 참조하고 소스 코드를 읽어보세요.

기여

GitHub에서 개선 제안이나 풀 리퀘스트를 자유롭게 보내주세요.

프로젝트를 지원하고 싶다면 Github Sponsors를 통해 기부하거나 후원해 주세요.

라이선스

이 프로젝트는 zlib/png 라이선스 조건에 따라 제공됩니다.

도구 다운로드
단축어설명값
?l소문자abcdefghijklmnopqrstuvwxyz
?u대문자ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d10진수0123456789
?s특수 문자 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a영숫자 문자?l?u?d와 동일
?p출력 가능한 ASCII 문자?l?u?d?s와 동일
?b모든 바이트0x00 .. 0xff