
Инструмент для построения базы хэшей и обратного поиска — SHA256, RIPEMD160, Keccak256, BLAKE3 и другие
Сборщик баз данных хэшей и инструмент обратного поиска. SHA + aha!
Создавайте предварительно вычисленные базы данных хэшей из списков слов, а затем запрашивайте их для поиска прообразов.
cargo install shaha
Или соберите из исходного кода:
git clone https://github.com/oritwoen/shaha
cd shaha
cargo build --release
# Один алгоритм (по умолчанию: sha256)
shaha build words.txt
# Несколько алгоритмов
shaha build words.txt -a md5 -a sha256 -a keccak256
# Пользовательский выходной файл
shaha build words.txt -o mydb.parquet
# С метаданными источника
shaha build rockyou.txt -a hash160 -s rockyou
# Найти прообраз по хэшу
shaha query 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
# Поиск по префиксу
shaha query 5e8848
# Фильтрация по алгоритму
shaha query 5e8848 -a sha256
# Форматы вывода
shaha query 5e8848 --format plain # по умолчанию
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
Базы данных хранятся в виде файлов Apache Parquet со сжатием ZSTD.
Схема:
hash (Binary) - байты хэшаpreimage (Utf8) - исходные входные данныеalgorithm (Utf8) - имя алгоритмаsources (List) - источники списков словФайлы 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-совместимого хранилища:
# Сборка в R2
shaha build words.txt --r2
# Запрос из R2
shaha query 5e8848 --r2
Переменные окружения:
SHAHA_R2_ENDPOINT - URL конечной точки S3/R2SHAHA_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)) - адреса Bitcoin | 160 бит |
hash256 | SHA256(SHA256(x)) - блоки/транзакции Bitcoin | 256 бит |
keccak256 | Keccak-256 - Ethereum | 256 бит |
blake3 | BLAKE3 | 256 бит |
ripemd160 | RIPEMD-160 | 160 бит |