Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
vuke — 研究易受攻击的加密密钥生成(脑钱包、PRNG、milksad、LCG、xorshift)的辅助工具 | Kitploit
工具/GitHubGitHub/oritwoen/vuke
密码破解漏洞分析漏洞利用取证分析密码学论文与研究学习与教育
GitHuboritwoen/vuke

vuke

研究易受攻击的加密密钥生成(脑钱包、PRNG、milksad、LCG、xorshift)的辅助工具

查看仓库
185356个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

vuke

Crates.io Downloads License Ask DeepWiki

用于分析和重现存在漏洞的比特币密钥生成的研究工具。

功能特性

  • 模块化架构 — 可插拔的数据源和转换器
  • 多种输入源
    • 数值范围(测试弱种子)
    • 单词列表(脑钱包分析)
    • 时间戳(基于时间的 PRNG 漏洞利用)
    • 标准输入流(管道集成)
  • 历史漏洞转换器
    • 直接(原始字节作为密钥)
    • SHA256(经典脑钱包)
    • 双重 SHA256(比特币风格哈希)
    • MD5(遗留弱哈希)
    • SHA256 链(迭代/索引确定性推导)
    • Milksad(MT19937 PRNG — CVE-2023-39910)
    • MultiBit HD(种子作为熵的漏洞)
    • Electrum 预 BIP39(2011-2014 确定性推导)
    • Armory(遗留 HD 推导)
  • 密钥来源分析 — 反向检测存在漏洞的生成方法
  • 并行处理(基于 Rayon)
  • 地址匹配 — 扫描已知目标
  • 文件输出 — 保存结果
  • 云存储 — 异步上传至 S3/R2/MinIO
  • 纯 Rust 实现

为什么创建这个项目?

本工具专为安全研究而设计——理解过去存在漏洞的密钥生成方式有助于改进现代钱包的安全性。

本工具可重现的历史漏洞:

漏洞年份影响
脑钱包2011-2015SHA256(密码) 容易被破解
弱 PRNG2013-2023可预测的种子(时间戳、进程ID)
Milksad2023libbitcoin bx 使用 32 位种子的 MT19937
MultiBit HD2014-2016将 64 字节 BIP39 种子用作熵
Electrum 预 BIP392011-2014自定义确定性推导,弱拉伸
Armory HD2012-2016预 BIP32 确定性推导
LCG PRNG1990s-2010sglibc rand()、MINSTD、MSVC — 仅 31-32 位状态
Xorshift PRNG2003 至今V8/SpiderMonkey Math.random() — 64-128 位状态
SHA256 链2010 年代至今从弱种子确定性推导密钥

安装

Cargo```bash

cargo install vuke

### 从源码处```bash
git clone https://github.com/oritwoen/vuke
cd vuke
cargo build --release

用法

从密码短语生成单一密钥```bash

vuke single "correct horse battery staple" --transform sha256

输出:```
Passphrase: "correct horse battery staple"
Transform: sha256
Source: correct horse battery staple
---
Private Key (hex):     c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a
WIF (compressed):      L3p8oAcQTtuokSCRHQ7i4MhjWc9zornvpJLfmg62sYpLRJF9woSu
---
P2PKH (compressed):   1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T
P2WPKH:               bc1qfnpg7ceg02y64qrskgz0drwp3y6hma3q6wvnzr

扫描已知地址的单词列表```bash

vuke scan --transform=sha256 --targets known_addresses.txt wordlist --file passwords.txt

### 数据提供者

不要使用文件路径,而是使用提供者引用来动态加载目标:```bash
# Scan all unsolved b1000 puzzles
vuke scan --transform=milksad --targets boha:b1000:unsolved range --start 1 --end 1000000

# Scan specific collection with filter
vuke scan --transform=sha256 --targets boha:b1000:with-pubkey wordlist --file words.txt

# Available filters: all, unsolved, solved, with-pubkey
vuke scan --targets boha:hash_collision:unsolved wordlist --file words.txt

提供者语法:provider:collection:filter 或 provider:collection:id

可用集合(boha 提供者):

  • b1000 - 比特币谜题1000(256个谜题,1-256位)
  • gsmg - GSMG谜题
  • bitaps - Bitaps谜题
  • hash_collision - 哈希碰撞谜题
  • zden - Zden谜题
  • bitimage - Bitimage谜题

测试数值范围(弱种子)```bash

vuke generate --transform=milksad range --start 1 --end 1000000

### 测试基于 LCG 的密钥```bash
# Generate keys using glibc rand() (default big-endian)
vuke generate --transform=lcg:glibc range --start 1 --end 1000000

# Use MINSTD variant with big-endian byte order
vuke generate --transform=lcg:minstd:be range --start 1 --end 1000

# Test all LCG variants at once
vuke generate --transform=lcg range --start 1 --end 100

测试基于 xorshift 的密钥```bash

Generate keys using all xorshift variants (requires cascade filter for analysis)

vuke generate --transform=xorshift range --start 1 --end 1000000

Use specific variant

vuke generate --transform=xorshift:64 range --start 1 --end 1000 vuke generate --transform=xorshift:128 range --start 1 --end 1000 vuke generate --transform=xorshift:128plus range --start 1 --end 1000 vuke generate --transform=xorshift:xoroshiro range --start 1 --end 1000

### 测试基于时间戳的密钥```bash
vuke scan --transform=sha256 --targets addresses.txt timestamps --start 2015-01-01 --end 2015-01-31

从文件中派生密钥 (Bitimage)```bash

Generate key from a single file

vuke generate --transform=bitimage files --file image.jpg

Scan directory recursively

vuke generate --transform=bitimage files --dir ./images/

With custom derivation path and passphrase

vuke generate --transform=bitimage --bitimage-path "m/44'/0'/0'/0/0" --bitimage-passphrase "secret" files --file photo.png

Derive multiple addresses per file

vuke generate --transform=bitimage --bitimage-derive-count 10 files --dir ./data/

Brute-force passphrases from wordlist

vuke scan --transform=bitimage --bitimage-passphrase-wordlist passphrases.txt --targets addresses.txt files --dir ./images/

### 多重转换```bash
vuke scan --transform=sha256 --transform=double_sha256 --transform=md5 --targets addresses.txt wordlist --file words.txt

从stdin管道输入```bash

cat passwords.txt | vuke generate --transform=sha256 stdin

### 保存结果到文件```bash
vuke generate --output results.csv range --start 1 --end 1000000
vuke generate --output results.txt --verbose range --start 1 --end 1000
vuke scan --output hits.txt --targets addresses.txt wordlist --file passwords.txt

持久化存储(Parquet)

将结果以 Parquet 格式存储,以便进行 TB 级分析(需要 storage 特性):```bash

Build with storage support

cargo build --release --features storage

Store generated keys to Parquet

vuke generate --storage ./results --transform milksad range --start 1 --end 1000000

Configure chunk rotation

vuke generate --storage ./results --chunk-records 500000 --chunk-bytes 50M range --start 1 --end 10000000

Configure compression (default: zstd level 3)

vuke generate --storage ./results --compression zstd --compression-level 9 range --start 1 --end 1000000

No compression (fastest writes)

vuke generate --storage ./results --compression none range --start 1 --end 1000000

Available algorithms: none, snappy, gzip, lz4, zstd

### 使用SQL查询存储的结果

使用SQL查询已存储的Parquet文件(需要`storage-query`特性):```bash
# Build with query support
cargo build --release --features storage-query

# Count results by transform
vuke query ./results "SELECT transform, COUNT(*) FROM results GROUP BY transform"

# Find matches
vuke query ./results "SELECT * FROM results WHERE matched_target IS NOT NULL LIMIT 10"

# Export to JSON
vuke query ./results --format json "SELECT source, wif_compressed FROM results LIMIT 100"

# Export to CSV
vuke query ./results --format csv "SELECT address_p2pkh_compressed, wif_compressed FROM results" > export.csv

# Show schema
vuke query ./results --schema

输出格式:table(默认)、json、csv

云上传(兼容S3)

将Parquet结果上传至兼容S3的存储(需要storage-cloud特性):```bash

Build with cloud upload support

cargo build --release --features storage-cloud

Set credentials (AWS S3)

export AWS_ACCESS_KEY_ID=your_key export AWS_SECRET_ACCESS_KEY=your_secret

Upload to AWS S3

vuke generate --storage ./results --cloud-upload --cloud-bucket my-bucket
--transform milksad range --start 1 --end 1000000

Upload to Cloudflare R2

vuke generate --storage ./results --cloud-upload
--cloud-endpoint https://account.r2.cloudflarestorage.com
--cloud-bucket my-r2-bucket
--transform milksad range --start 1 --end 1000000

Upload to MinIO (self-hosted)

vuke generate --storage ./results --cloud-upload
--cloud-endpoint http://localhost:9000
--cloud-bucket vuke-results
--transform milksad range --start 1 --end 1000000

Delete local files after successful upload

vuke generate --storage ./results --cloud-upload --cloud-bucket my-bucket
--cloud-delete-local
--transform milksad range --start 1 --end 1000000

Fail fast on upload errors (default: continue on failures)

vuke generate --storage ./results --cloud-upload --cloud-bucket my-bucket
--cloud-fail-fast
--transform milksad range --start 1 --end 1000000

Cloud upload features:
- 流式多部分上传(对大文件内存高效)
- 自动指数退避重试(5次重试,100毫秒→30秒)
- 可配置并行度的并发上传
- 仅删除成功上传的本地文件
下载工具