업데이트로 돌아가기
New releaseAug 31, 2026

Ciphey v0.12.1

⚡ 키나 암호를 몰라도 암호화를 자동으로 복호화하고, 인코딩을 디코딩하며, 해시를 크랙합니다 ⚡

공유

터미널에서의 Ciphey: 네 겹의 Base64가 입력되면, Ciphey가 'Ciphey peels back every layer of encoding'이 평문인지 묻고, Base64 → Base64 → Base64 → Base64 경로와 함께 출력합니다. 클릭하여 1분 투어를 시청하세요.

Ciphey

인코딩되거나 암호화된 텍스트를 붙여넣으세요. Ciphey가 방법을 알아내고 평문을 건네드립니다.
키도, 암호 이름도, 힌트도 필요 없습니다. Base64, hex, Caesar/ROT13, Vigenère, 모스 부호 등 19가지가 더 있으며, 여러 계층 깊이도 처리합니다.

crates.io docs.rs MIT license

설치 · 빠른 시작 · 기능 · 라이브러리 · MCP · 문서 · Discord
▶ 1분 투어 시청하기 (MP4, 61초)

설치

cargo install ciphey

Linux(x86_64), macOS(Intel 및 Apple silicon), Windows(x86_64)용 사전 빌드된 바이너리는 릴리스 페이지에서 확인할 수 있으며, 각 바이너리에는 .sha256 체크섬이 함께 제공됩니다.

소스에서 빌드하려면 Rust 툴체인이 필요합니다:

git clone https://github.com/bee-san/Ciphey
cd Ciphey
cargo build --release    # the binary is target/release/ciphey

또는 설치를 건너뛰려면: Discord 서버에 참여하여 #bots로 이동한 뒤 $ciphey <your text>를 입력하세요 ($help로 명령어 목록을 확인할 수 있습니다).

빠른 시작

$ ciphey -t 'aGVsbG8gdGhlcmUgZ2VuZXJhbA=='
🕵️ I think the plaintext is Words.
Possible plaintext: 'hello there general' (y/N):
y

🥳 ciphey has decoded 64 times.

The plaintext is:
hello there general
the decoder used is Base64

처음 실행하면 짧은 설정 과정에서 색상 테마, 결과 표시 방식, 워드리스트 사용 여부를 묻고, 답변을 ~/.ciphey/config.toml에 저장합니다.

ciphey -t 'NTA3NjYzNzU3MjZjMjA3NjY2MjA2OTcyNjU2YzIwNzM2ZTY2Njc='   # ROT13 → hex → Base64, nothing else needed
ciphey -f secret.txt                    # read the input from a file
ciphey -d -t '...'                      # no y/N prompt: take the first plaintext found (handy in scripts)
ciphey -c 15 -t '...'                   # keep searching for up to 15 seconds (the default is 5)
ciphey -r 'flag\{' -t '...'             # only accept plaintext that matches a regex (a crib)
ciphey --wordlist words.txt -t '...'    # also accept any exact match from a wordlist

ciphey --help는 모든 옵션을 나열합니다.

기능

⚡ 빠름

A terminal runs time ciphey -d on a Base64 string. Ciphey prints 'Ciphey is very fast' and the path Base64 → Hexadecimal → caesar, and bash reports real 0m0.157s. A chart then compares Ciphey's 0.19 s (the median of 10 runs) with no answer after 60 s for Python Ciphey 5.14.0 on the same input.

▶ 클립 보기 (16초)

세 개의 계층(ROT13, 그다음 hex, 그다음 Base64)이 0.16초 만에 벗겨지며, 이는 실제 녹화에서 bash의 time으로 측정한 값입니다. 다음은 더 많은 입력에 대한 동일한 비교로, Ciphey가 대체하는 버전인 Python Ciphey 5.14와 비교한 것입니다:

입력CipheyPython Ciphey 5.14
Base640.11초0.92초
Hex → Base640.14초1.02초
ROT13 → Hex → Base640.19초60초 내 답 없음
URL → Base64 → Hex0.24초1.15초
Base64 ×40.41초0.78초
Hex → Base32 → Base64 → Hex0.54초0.72초, 잘못된 답
ROT13 → Hex → Base64 → Base321.15초60초 내 답 없음

공유된 16-CPU Linux 머신에서 입력당 10회 실행(Python Ciphey: 3회)의 실측 중앙값이며, Ciphey는 47bd16d6에서 y/N 프롬프트를 끄고 실행마다 새로운 $HOME을 사용하여 캐시가 도움이 되지 않도록 했습니다. 모든 실행은 60초로 제한되었습니다. 스크립트와 원시 수치는 media/readme-videos 브랜치의 media/tui-video/bench에 있습니다.

둘 다 정답을 얻는 경우, Ciphey는 1.9배에서 8.6배 더 빠릅니다. 속도는 어디서 오는 걸까요?

  • Rust로 작성되었습니다.
  • A* 탐색이 가장 유망한 디코더 체인을 먼저 시도합니다.
  • 모든 디코더는 Rayon과 함께 병렬로 실행되며, 한 번에 최대 10개의 후보 텍스트를 처리합니다.
  • 답은 ~/.ciphey/database.sqlite에 캐시되므로, 동일한 입력을 두 번째로 넣으면 밀리초 만에 돌아옵니다.

🧅 계층을 거듭해도 키가 필요 없음

Ciphey는 무엇을 보고 있는지 알려줄 필요가 없습니다. 디코더 체인(ROT13 안의 hex 안의 Base64, 네 계층의 Base64 등)을 탐색하고 평문처럼 보이는 첫 번째 후보에서 멈춥니다. 기본적으로 그 후보를 보여주고 수락하기 전에 묻습니다(-d는 이를 끕니다). 이 페이지 상단의 클립은 네 계층 디코딩을 보여줍니다.

타이머도 있습니다: Ciphey가 5초 후에도 아무것도 찾지 못하면 멈추고 그렇게 알립니다(-c는 제한을 변경합니다).

24개의 디코더와 크래커를 알고 있습니다:

종류디코더
Base 인코딩Base64(표준 및 URL-safe), Base32, Base58(Bitcoin, Flickr, Monero, Ripple), Base91, Base65536, Z85
기타 인코딩16진수, 2진수, URL(퍼센트 인코딩), 모스 부호, 점자, A1Z26, Citrix CTX1
암호Caesar(ROT13 포함), ROT47, Atbash, Vigenère(키를 스스로 알아냄), 레일 펜스, 역순 텍스트
기이한 것들Brainfuck(프로그램을 실행함), 다른 기호로 작성된 모스 또는 2진수

더 많은 것이 준비 중입니다: #1030은 아직 포함되지 않은 109개의 디코더를 추적합니다.

🕵️ 무엇을 찾았는지 앎

Three Ciphey runs. Base64 decodes to 'mount -o username=bee,password=hunter2', identified as a Mount Command With Clear Credentials. Base64 decodes to an otpauth:// link, identified as a Time-Based One-Time Password (TOTP) URI. Hex decodes to 192.168.0.1, identified as an Internet Protocol (IP) Address Version 4.

▶ 클립 보기 (21초)

모든 후보 평문은 또한 pyWhat의 Rust 포팅인 LemmeKnow를 거치며, 이는 120개 이상의 형식을 인식합니다. 따라서 Ciphey는 단순히 문자열을 디코딩하는 것이 아니라 그것이 무엇인지 알려줍니다: mount 또는 sshpass 명령의 비밀번호, TOTP 시크릿, GitHub 토큰 또는 Stripe 키, IP 또는 MAC 주소, 이메일 주소 또는 URL, 암호화폐 지갑, AWS ARN, JSON 또는 모든 형식의 CTF 플래그(flag{…}, picoCTF{…}, DUCTF{…}) 등입니다. 문자열에 어떤 문자가 있는지와 길이만 확인하는 LemmeKnow 패턴(예: 카드 및 전화번호)은 무시됩니다: 디코더 쓰레기 값이 항상 이런 패턴에 매칭되기 때문입니다.

$ ciphey -t '3139322e3136382e302e31'
🕵️ I think the plaintext is Internet Protocol (IP) Address Version 4.
Possible plaintext: '192.168.0.1' (y/N):

🎯 Crib 및 정규식 모드

터미널에서 Base64 문자열에 대해 -r 'picoCTF\{' 옵션과 함께 ciphey -t를 실행합니다. Ciphey는 'Regex matched: picoCTF\{'를 보고하고, 'picoCTF{b4s3_64_1s_fun}'에 대해 질문한 뒤, Base64로 디코딩된 평문으로 출력합니다.

카테고리