
⚡ 키나 암호를 몰라도 암호화를 자동으로 복호화하고, 인코딩을 디코딩하며, 해시를 크랙합니다 ⚡
인코딩되거나 암호화된 텍스트를 붙여넣으세요. Ciphey가 방법을 알아내고 평문을 건네드립니다.
키도, 암호 이름도, 힌트도 필요 없습니다. Base64, hex, Caesar/ROT13, Vigenère, 모스 부호 등 19가지가 더 있으며, 여러 계층 깊이도 처리합니다.
설치 ·
빠른 시작 ·
기능 ·
라이브러리 ·
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는 모든 옵션을 나열합니다.
▶ 클립 보기 (16초)
세 개의 계층(ROT13, 그다음 hex, 그다음 Base64)이 0.16초 만에 벗겨지며, 이는 실제 녹화에서 bash의 time으로 측정한 값입니다. 다음은 더 많은 입력에 대한 동일한 비교로, Ciphey가 대체하는 버전인 Python Ciphey 5.14와 비교한 것입니다:
| 입력 | Ciphey | Python Ciphey 5.14 |
|---|---|---|
| Base64 | 0.11초 | 0.92초 |
| Hex → Base64 | 0.14초 | 1.02초 |
| ROT13 → Hex → Base64 | 0.19초 | 60초 내 답 없음 |
| URL → Base64 → Hex | 0.24초 | 1.15초 |
| Base64 ×4 | 0.41초 | 0.78초 |
| Hex → Base32 → Base64 → Hex | 0.54초 | 0.72초, 잘못된 답 |
| ROT13 → Hex → Base64 → Base32 | 1.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배 더 빠릅니다. 속도는 어디서 오는 걸까요?
~/.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개의 디코더를 추적합니다.
▶ 클립 보기 (21초)
모든 후보 평문은 또한 120개 이상의 형식을 인식하는 pyWhat의 Rust 포팅인 LemmeKnow를 거칩니다. 따라서 Ciphey는 단순히 문자열을 디코딩하는 것이 아니라 그것이 무엇인지 알려줍니다: mount 또는 sshpass 명령의 비밀번호, TOTP 시크릿, GitHub 토큰 또는 Stripe 키, IP 또는 MAC 주소, 이메일 주소 또는 URL, 카드 번호, 암호화폐 지갑, AWS ARN 또는 CTF 플래그 등입니다.
$ ciphey -t '3139322e3136382e302e31'
🕵️ I think the plaintext is Internet Protocol (IP) Address Version 4.
Possible plaintext: '192.168.0.1' (y/N):
▶ 클립 보기 (14.5초)
정답의 일부를 알고 있다면(플래그 형식, 반드시 포함되어야 하는 단어, 시작 부분 등), -r을 사용해 정규식으로 Ciphey에 알려줄 수 있습니다. 그러면 다른 검사기들은 꺼지고 일치하는 텍스트만 허용됩니다. 이 방법은 영어 감지로는 걸러지지 않을 평문을 찾아냅니다. Base64로 인코딩된 picoCTF{b4s3_64_1s_fun}은 기본 설정에서는 의미 없는 문자열로 반환되지만, -r 'picoCTF\{'를 사용하면 첫 번째 일치 항목이 됩니다.
--wordlist words.txt는 정확한 일치에 대해 같은 방식으로 동작합니다. 파일의 한 줄과 일치하는 후보는 평문으로 간주됩니다.