
해시 데이터베이스 빌더 및 역방향 조회 도구 — SHA256, RIPEMD160, Keccak256, BLAKE3 등
해시 데이터베이스 빌더 및 역조회 도구. SHA + aha!
워드리스트에서 미리 계산된 해시 데이터베이스를 구축한 후, 이를 조회하여 프리이미지를 찾습니다.
cargo install shaha
또는 소스에서 빌드:
git clone https://github.com/oritwoen/shaha
cd shaha
cargo build --release
# Single algorithm (default: sha256)
shaha build words.txt
# Multiple algorithms
shaha build words.txt -a md5 -a sha256 -a keccak256
# Custom output file
shaha build words.txt -o mydb.parquet
# With source metadata
shaha build rockyou.txt -a hash160 -s rockyou
# Find preimage by hash
shaha query 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
# Prefix search
shaha query 5e8848
# Filter by algorithm
shaha query 5e8848 -a sha256
# Output formats
shaha query 5e8848 --format plain # default
shaha query 5e8848 --format json
shaha query 5e8848 --format table
shaha info hashes.parquet
출력:
Database: "hashes.parquet"
Records: 1000000
Size: 45.32 MB
Algorithms: sha256, md5, keccak256
Sources: rockyou
데이터베이스는 ZSTD 압축이 적용된 Apache Parquet 파일로 저장됩니다.
스키마:
- `hash` (Binary) - hash bytes
- `preimage` (Utf8) - original input data
- `algorithm` (Utf8) - algorithm name
- `sources` (List<Utf8>) - wordlist origins
Parquet 파일은 DuckDB, Polars, Spark 또는 Cloudflare R2 SQL로 조회할 수 있습니다.
설정은 다음 순서로 로드됩니다:
.shaha.toml~/.config/shaha/config.toml[storage.r2]
endpoint = "https://account-id.r2.cloudflarestorage.com"
bucket = "my-bucket"
access_key_id = "your-access-key"
secret_access_key = "your-secret-key"
region = "auto"
path = "hashes.parquet"
[defaults]
algorithms = ["sha256", "md5"]
output = "hashes.parquet"
Cloudflare R2 또는 S3 호환 스토리지에서 직접 구축 및 조회:
# Build to R2
shaha build words.txt --r2
# Query from R2
shaha query 5e8848 --r2
환경 변수:
SHAHA_R2_ENDPOINT - S3/R2 엔드포인트 URLSHAHA_R2_BUCKET - 버킷 이름SHAHA_R2_ACCESS_KEY_ID 또는 AWS_ACCESS_KEY_IDSHAHA_R2_SECRET_ACCESS_KEY 또는 AWS_SECRET_ACCESS_KEYSHAHA_R2_PATH - 버킷 내 경로SHAHA_R2_REGION - 리전 (기본값: "auto")MIT
| 이름 | 설명 | 출력 |
|---|
md5 | MD5 | 128비트 |
sha1 | SHA-1 | 160비트 |
sha256 | SHA-256 | 256비트 |
sha512 | SHA-512 | 512비트 |
hash160 | RIPEMD160(SHA256(x)) - 비트코인 주소 | 160비트 |
hash256 | SHA256(SHA256(x)) - 비트코인 블록/트랜잭션 ID | 256비트 |
keccak256 | Keccak-256 - 이더리움 | 256비트 |
blake3 | BLAKE3 | 256비트 |
ripemd160 | RIPEMD-160 | 160비트 |