# keyhunt汉化修改版 **Repository Path**: btcmiti/keyhunt ## Basic Information - **Project Name**: keyhunt汉化修改版 - **Description**: keyhunt 多功能汉化版,不断改进中 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-08-24 - **Last Updated**: 2025-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 汉化界面,增加功能 显示二维码、自动发送结果到邮箱、获取并破解指定范围的谜题私钥 发现虚荣地址后可启用-D参数,保存到数据库 - 用其他语言 Python 或 JS 实现同样的 RMD160 解密逻辑是可行的,但效率很难达到 C/C++ 的水平(差距主要来自 “解释型语言 vs 编译型语言” 的底层差异,至少慢50-100倍) ## g++ 链接对应的库 g++ your_code.cpp -o your_program -lqrencode -lmongoc-1.0 -lbson-1.0 -lcurl ## 安装 MongoDB C 驱动(包含开发文件和库) ``` sudo apt install qrencode libqrencode-dev sudo apt install libmongoc-1.0-0 libmongoc-dev sudo apt install libbson-1.0-0 libbson-dev sudo apt install libcurl4-openssl-dev # 安装支持 OpenSSL 的 libcurl 开发库 ``` ### 或者 ``` sudo apt install -y qrencode libqrencode-dev libmongoc-1.0-0 libmongoc-dev libbson-1.0-0 libbson-dev libcurl4-openssl-dev ``` # 服务器或者编译的时候,没必要下载全部git文件 sudo apt update && sudo apt install -y wget unzip ## wget用于下载,unzip用于解压zip文件 ``` wget https://gitee.com/btcmiti/keyhunt/repository/archive/master.zip ``` ``` ## 解压 unzip master.zip ``` 如果需要保留子目录结构(如 src/、tests/ 等),但仅去除顶层的 keyhunt-master 文件夹,用以下命令: ``` unzip master.zip "keyhunt-master/*" -d . && mv keyhunt-master/* . && rm -rf keyhunt-master ``` 只下载源码,解压就可以,git需要下载200M左右,源码就500K ## 也可使用git浅拷贝 ``` git clone --depth 1 https://gitee.com/btcmiti/keyhunt.git ``` # vanity 虚荣地址模式下 配置config.ini ## config.ini 所有配置项不需要加引号 但[mongodb]标识是必须的 ``` [mongodb] # MongoDB连接URI(包含用户名、密码、地址等,端口号默认为27017,默认数据库为admin,如修改过名称,将uri中的数据库名对应) uri = mongodb://用户名:密码@数据库IP地址:端口/?authSource=数据库名 # 数据库名 db_name = bitcoin # 集合名 collection_name = vanitykeys # 其他可选配置 CREATED_BY = keyhunt程序自动发送_本地演示 ``` # 常用组合命令 ## address模式 - ``` ./keyhunt -h ``` -- 显示帮助信息 == 所有模式均可设置 -t线程数 增加效率 - ``` ./keyhunt -m address -f tests/1to32.txt -r 1:FFFFFFFF ``` -- address模式(从文件读取-f 1到32的地址)自定义私钥范围 -r 解密1到32谜题 - ``` ./keyhunt -m address -f tests/71.txt -b 71 -l compress -R -q -s 10 ``` -- 地址模式address 随机私钥-R 解密比特币谜题71 - ``` ./keyhunt -m bsgs -f tests/135.txt -b 135 -q -s 10 -R ``` -- 加 -k专属因子(仅bsgs模式) 可提升效率 从文件读取135公钥 以bsgs(对比公钥)模式 随机私钥-R 解密 - ``` ./keyhunt -m vanity -l compress -R -b 256 -v 1Good1 -v 1MyKey ``` -- vanity模式(寻找指定-v前缀1Good1 1MyKey)的压缩格式地址(-l compress)私钥随机-R 范围为256谜题(-b 256) - ``` ./keyhunt -m vanity -f tests/vanitytargets.txt -l compress -R -b 256 -e -s 10 -q -D ``` -- vanity模式(读取文件中指定前缀)寻找压缩格式地址(-l compress)私钥随机-R 范围为256谜题(-b 256) -D 保存结果到数据库 - ``` ./keyhunt -m rmd160 -f tests/1to32.rmd -r 1:FFFFFFFF -l compress -s 5 ``` ``` ./keyhunt -m rmd160 -f tests/rmd160/71.rmd -b 71 -l compress -R -q ``` ``` ./keyhunt -m rmd160 -f tests/rmd160/72.rmd -b 72 -q -E btcmiti@qq.com -e -R -t 8 ``` -- rmd160模式(读取文件中指定RIPEMD-160哈希)指定私钥范围-r ,RIPEMD-160哈希是地址base58编码前对应的RIPEMD-160(SHA256(公钥)) -- -E 指定接受解密结果和每日报告的邮箱地址,不指定邮箱则不发送邮件 # keyhunt 是一款由用于查找使用 secp256k1椭圆曲线的加密货币私钥的工具,改版后主要用于比特币谜题破解,寻找保存指定的虚荣地址 谜题: https://bitcointalk.org/index.php?topic=5322040.0 ### 1. 一段话总结 KeyHunt是一款基于C语言开发、支持**secp256k1椭圆曲线**的开源私钥搜索工具,核心用于比特币、以太坊等加密货币的公开谜题破解(如btcmiti.com题)及vanity地址生成,提供**address、rmd160、bsgs**等多种运行模式,支持**多线程、Endomorphism优化(-e参数)、Bloom过滤器缓存(-S参数)** 及分布式分块搜索,可通过**-b参数指定比特范围**(如谜题72用-b 72)或**-r参数指定十进制范围**精准定位私钥,结果自动保存至**KEYFOUNDKEYFOUND.txt**(普通私钥)或**VANITYKEYFOUND.txt**(vanity地址),需在Linux/WSL环境编译运行,依赖GMP、libsecp256k1等库,Windows需第三方适配版本(如kanhavishva/keyhunt)。 --- ### 2. 思维导图(mindmap) ```mindmap ## 核心定位 - 开源私钥搜索工具 - 支持secp256k1椭圆曲线 - 适用加密货币:比特币、以太坊 - 核心用途:公开谜题破解、vanity地址生成 ## 安装部署 - 环境要求 - 推荐:Linux/WSL(Ubuntu 20.04+) - Windows:第三方适配版/MinGW编译 - 依赖库 - 必装:git、build-essential、libgmp-dev - 可选:MongoDB C驱动(数据存储) - 编译步骤 - 1. git clone 仓库 - 2. cd keyhunt目录 - 3. make/make legacy(主版本/兼容版) - 4. ./keyhunt -h 验证 ## 运行模式(含用途+关键参数) - address模式:已知比特币地址搜私钥 - 关键参数:-l(压缩/非压缩)、-b(比特范围) - 示例:./keyhunt -m address -f tests/address/72.txt -b 72 -R - rmd160模式:基于RIPEMD-160哈希搜私钥 - 关键参数:-f(哈希文件)、-q(静默输出) - 示例:./keyhunt -m rmd160 -f tests/rmd160/72.rmd -b 72 -q -E btcmiti@qq.com -e -R -t 8 - xpoint模式:已知公钥X值搜私钥(速度最优) 已删除此模式 使用bsgs模式速度更快 - bsgs模式:已知公钥搜私钥(高难度首选) - 关键参数:-k(因子)、-S(缓存) - 示例:./keyhunt -m bsgs -f tests/72_pub.txt -k 256 -S - vanity模式:生成指定前缀vanity地址 - 关键参数:-v(前缀)、-e(Endomorphism) - 示例:./keyhunt -m vanity -v 1Good1 -e -R - 从文件中获取虚荣地址列表:./keyhunt -m vanity -f ./tests/vanitytargets.txt -l compress -R -b 256 -e -s 10 -q - 以太坊模式:搜索以太坊地址 - 关键参数:-c eth、-f(地址文件) - 示例:./keyhunt -c eth -f tests/eth.txt -r 1:100000000 ## 关键优化 - Endomorphism(-e):address/vanity模式速度×6 - BSGS缓存(-S):二次运行跳过预计算,效率提升60%+ - 多线程(-t):8线程速度≈8×单线程(线性叠加) ## 常见问题 - 结果保存:KEYFOUNDKEYFOUND.txt/VANITYKEYFOUND.txt - Windows兼容:需WSL或第三方适配版 - BSGS速度异常:检查-k与-n参数匹配性 ``` --- ### 3. 详细总结 #### 一、项目概述 KeyHunt是一款由AlbertoBSD开发由光头强汉化并大幅改进的、开源免费的**私钥搜索工具**,核心基于**secp256k1椭圆曲线算法**,专为比特币、以太坊等加密货币的私钥查找设计,主要应用于**公开比特币谜题破解**(如btcmiti.com上的谜题1~160)和**vanity地址生成**(含指定前缀的地址,如1btcmiti1)。工具支持多模式、多线程及多种优化策略,可通过精准的范围控制实现私钥分块搜索,结果自动保存,需在Linux/WSL环境编译运行,Windows需依赖第三方适配。 #### 二、安装部署详解 ##### 1. 环境要求 | 环境类型 | 推荐配置 | 限制说明 | |----------------|-----------------------------------|-------------------------------------------| | Linux | Ubuntu 20.04+/Debian 11+ | 原生支持,编译与运行稳定性最佳 | | Windows | WSL(Ubuntu子系统)/第三方适配版 | 原生不支持,MinGW编译步骤复杂 | | 硬件要求 | 内存≥4GB,CPU≥4核 | BSGS模式需大内存(如-k 512需8GB内存) | ##### 2. 依赖库安装(Linux) 在终端执行以下命令安装编译与运行依赖: ```bash # 更新系统与基础工具 apt update && apt upgrade -y # 必装依赖(版本控制+编译+大整数运算) apt install git build-essential libssl-dev libgmp-dev -y # 可选依赖(MongoDB C驱动,用于数据存储) apt install libmongoc-1.0-0 libmongoc-dev libbson-1.0-0 libbson-dev -y ``` ##### 3. 编译步骤 1. **克隆仓库**:`git clone https://gitee.com/btcmiti/keyhunt.git` - 全部仓库体积较大,可使用浅克隆:`git clone --depth 1 https://gitee.com/btcmiti/keyhunt.git` 2. **进入目录**:`cd keyhunt` 3. **编译主版本**:`make`(若报错,编译兼容版:`make legacy`) 4. **验证安装**:`./keyhunt -h`,输出帮助信息即表示安装成功。 #### 三、核心运行模式(含用途、命令、输出) KeyHunt提供7种运行模式,各模式针对不同搜索目标设计,核心模式对比如下表: | 运行模式 | 核心用途 | 关键参数 | 典型命令示例 | 关键输出说明 | |------------|-------------------------------------------|-----------------------------------|------------------------------------------------------------------------------|------------------------------------------------------------------------------| | **address** | 已知比特币地址搜私钥(如谜题72) | -l(压缩/非压缩)、-b(比特范围) | ./keyhunt -m address -f tests/72.txt -b 72 -l compress -R -s 10 | 输出搜索区间(如`start=0x800000000000000000`)、每秒搜索量(如`~4 Mkeys/s`),找到私钥显示“Hit! Private Key: XXX” | | **rmd160** | 基于RIPEMD-160哈希搜私钥 | -f(哈希文件)、-r(十进制范围) | ./keyhunt -m rmd160 -f tests/72.rmd -b 72 -l compress -R -q | 输入为RIPEMD-160哈希(如`751e76e8199196d454941c45d1b3a323f1433bd6`),速度略快于address模式 | | **bsgs** | 已知完整公钥搜私钥(高难度谜题首选) | -k(因子)、-S(缓存)、-t(线程) | ./keyhunt -m bsgs -f tests/72_pub.txt -b 72 -R -k 256 -t 8 -S | 支持`TB/PB级速度`(如-k 512时单线程~1 Pkeys/s),生成.blm/.tbl缓存文件,二次运行跳过预处理 | | **vanity** | 生成含指定前缀的vanity地址(如1Good1) | -v(前缀)、-e(Endomorphism) | ./keyhunt -m vanity -l compress -R -b 256 -v 1Good1 -v 1MyKey | 结果保存至`VANITYKEYFOUND.txt`,显示“Vanity Private Key: XXX”及地址 | | | **以太坊模式** | 搜索以太坊地址 | -c eth、-f(地址文件) | ./keyhunt -c eth -f tests/1to32.eth -r 1:100000000 -M | 输出“Hit!!!! Private Key: XXX”及以太坊地址(如`0x7e5f4552091a69125d5dfcb7b8c2659029395bdf`) | #### 四、关键参数详解 KeyHunt的参数用于控制模式、范围、优化及输出,核心参数如下表: | 参数 | 作用描述 | 适用模式 | 示例与说明 | |--------|-------------------------------------------|-------------------------|------------------------------------------------------------------------------| | **-m** | 指定运行模式(核心参数) | 所有模式 | -m bsgs:启用BSGS模式;-m address:启用地址搜索模式 | | **-f** | 指定目标文件(地址/哈希/公钥列表) | address/rmd160/bsgs等 | -f tests/72.txt:读取谜题72的目标地址列表,文件格式为“每行一个目标” | | **-b** | 指定私钥比特范围(如b=72=2^71~2^72-1) | 多数模式 | -b 72:适配谜题72的私钥范围;-b 66:适配谜题66的66比特范围 | | **-t** | 设置线程数(控制并行度) | 所有模式 | -t 8:8线程运行,BSGS模式8线程总速度可达~19 Pkeys/s | | **-k** | BSGS模式专属因子(控制内存与速度) | bsgs模式 | -k 256(4GB内存推荐)、-k 512(8GB内存推荐),需为2的幂次 | | **-S** | 保存/读取Bloom过滤器和bP表 | bsgs/address/rmd160 | 首次运行生成缓存文件,二次运行跳过预处理,效率提升60%+ | | **-e** | 启用Endomorphism优化(多私钥并行验证) | address/rmd160/vanity | 启用后address模式速度×6,因同步验证6个关联私钥 | | **-R** | 启用随机模式(随机选择搜索区间) | address/bsgs/vanity | 避免多节点重复搜索,适合分布式分块 | | **-s** | 设置统计输出间隔(单位:秒) | 所有模式 | -s 10:每10秒输出进度(如“Total 47634432 keys in 10 seconds: ~4 Mkeys/s”)0秒不输出| | **-T** | 测试数据库连接是否正常 | vanity模式 | -T 单独使用此参数,成功后可使用 -D 参数将虚荣地址保存至数据库,错误请检查config.ini文件 | | **-D** | 虚荣地址下保存结果到数据库 | vanity模式-逐步增其他模式 | -D 需配置config.ini连接参数,成功后可先使用 -T 测试数据库连接 | #### 五、优化技巧(提升搜索效率) ##### 1. Endomorphism优化(-e参数) - **原理**:利用secp256k1椭圆曲线的自同态特性,每验证1个私钥可同步验证5个关联私钥(共6个),address/rmd160/vanity模式速度提升6倍。 - **适用场景**:vanity地址搜索、大范围谜题破解(如谜题66),需确保模式支持(bsgs模式不支持)。 ##### 2. BSGS模式大内存优化 - **-k与-n参数匹配**:根据内存大小设置-k,参考文档表格(如8GB内存用-k 512,16GB用-k 1024),同时确保-n≥2^20(1048576),避免程序异常。 - **缓存机制(-S参数)**:首次运行生成Bloom过滤器(.blm)和bP表(.tbl),二次运行直接读取,例如破解16个64比特公钥时,运行时间从164分钟缩短至60分钟。 ##### 3. 分布式分块搜索 将私钥范围按比特或十六进制分块,多节点分别搜索不同分块(如节点1搜`0x800000000000000000~0x800000007ffffffff`,节点2搜`0x800000008000000000~0x80000000ffffffff`),避免重复计算,总速度线性叠加。 #### 六、适用场景与限制 ##### 1. 适用场景 - **公开比特币谜题破解**:如btcmiti.com上的谜题66~160,支持通过-b参数精准匹配比特范围。 - **vanity地址生成**:生成含指定前缀的比特币地址(如1Good1、1MyKey),支持多前缀同时搜索。 - **合法私钥找回**:仅适用于本人遗忘私钥但已知地址/公钥的场景,不可用于未经授权的地址。 ##### 2. 限制 - **环境限制**:官方仅支持Linux/WSL,Windows需第三方适配,且不支持Swap内存(会严重降低速度)。 - **算力限制**:谜题72(2^71私钥范围)单节点破解需约9000年,需分布式多节点协作。 - **实验性功能**:minikeys模式 --- 已删除此功能 #### 七、常见问题(FAQ) 1. **私钥结果保存在哪里?** 普通私钥保存至`KEYFOUNDKEYFOUND.txt`,vanity地址结果保存至`VANITYKEYFOUND.txt`。 2. **BSGS模式显示“0 keys/s”怎么办?** 原因是-k与-n参数不匹配或内存不足,解决方案:① 参考“Valid n and maximun k values”表格调整参数;② 关闭Swap内存;③ 查看官方说明视频(https://youtu.be/MVby8mYNxbI)。 3. **如何验证搜索速度是否真实?** 官方提供测试公钥集(如1 Pkeys/s对应2分钟找到的公钥),保存至`testpublickey.txt`,运行`./keyhunt -m bsgs -f testpublickey.txt -b 120 -q`,若2分钟内找到则速度真实。 --- ### 4. 关键问题 #### 关键问题1:KeyHunt的BSGS模式为何是高难度比特币谜题(如谜题125)的首选?其核心参数-k和-S如何协同提升效率? **答案**:BSGS模式(Baby Step Giant Step)成为高难度谜题首选,核心原因是其算法复杂度从“暴力破解的O(N)”降至“O(√N)”——通过“Baby Step预计算存储”和“Giant Step快速匹配”,将大规模私钥搜索拆解为两步,单线程速度可达**15 Tkeys/s~1 Pkeys/s**(远超address模式的百万级速度),适配2^125等大范围私钥搜索。 核心参数的协同优化逻辑如下: 1. **-k参数(BSGS因子)**:控制预计算的Bloom过滤器和bP表大小,直接关联内存占用与匹配效率。例如8GB内存设-k 512时,预计算83886080个bP点,Bloom过滤器占用287.55 MB,单次Giant Step可匹配更多私钥,速度提升至~1 Pkeys/s;需遵循“-k为2的幂次且不超过n的最大k值”(如32比特n对应最大k=64),否则会导致表结构冲突,速度下降50%以上。 2. **-S参数(缓存机制)**:首次运行时生成Bloom过滤器(.blm)和bP表(.tbl),二次运行直接读取缓存,跳过耗时的预计算步骤。例如破解16个64比特公钥时,启用-S后运行时间从164分钟缩短至60分钟,效率提升63%;且缓存文件可复用,多节点可共享同一缓存,进一步降低预处理成本。 #### 关键问题2:破解比特币谜题72(私钥范围2^71~2^72-1,已知目标地址)时,如何选择KeyHunt的模式、参数及环境?需规避哪些坑? **答案**:针对谜题72的破解,需结合“18位十六进制私钥、已知目标地址”的特性,选择如下方案: ##### 1. 模式与参数配置 - **模式选择**:优先address模式(已知地址),若后续获取公钥,可切换为BSGS模式(效率更高)。 - **核心命令**:`./keyhunt -m address -f tests/72.txt -b 72 -l compress -R -e -t 8 -s 10` 各参数作用: - `-m address`:启用地址搜索模式; - `-f tests/72.txt`:读取谜题72的目标地址文件(每行1个地址); - `-b 72`:限定72比特范围(2^71~2^72-1); - `-l compress`:仅搜索压缩地址(谜题72默认压缩地址); - `-R`:启用随机分块(避免多节点重复搜索); - `-e`:启用Endomorphism优化,速度提升6倍; - `-t 8`:8线程运行(匹配8核CPU); - `-s 10`:每10秒输出进度,便于监控。 ##### 2. 环境配置与避坑 - **系统环境**:推荐Ubuntu 22.04 WSL(Windows用户),避免Windows原生环境(MinGW编译版本稳定性差,易报错)。 - **内存要求**:启用-e参数后需4GB以上内存,避免内存不足导致程序崩溃。 - **避坑点**:① 勿用Swap内存(会导致速度下降至原来的1/10);② 确保目标地址文件格式正确(每行1个地址,无多余空格);③ 若需分布式分块,需为每个节点分配不重叠的比特范围(如节点1用`-b 72 -r 0x800000000000000000:0x800000007ffffffff`),避免重复计算。 #### 关键问题3:KeyHunt的Endomorphism优化(-e参数)在不同模式中的效果差异是什么?其适用场景和局限性如何? **答案**:Endomorphism优化基于secp256k1椭圆曲线的自同态特性,通过常数λ和β将1个私钥关联生成5个额外私钥,实现“验证1个同步验证多个”的效果,不同模式中的差异、适用场景及局限性如下: | 维度 | address/rmd160/vanity模式 | xpoint模式 - 已删除 | |--------------|-------------------------------------------|-------------------------------------| | **效果差异** | 速度提升6倍(验证1个私钥同步验证5个关联私钥,共6个) | 速度提升3倍(仅关注公钥X值,无需验证negated版本,共3个) | | **原理差异** | 需验证私钥对应的完整公钥(含X、Y值),故需包含negated版本(Y值相反) | 仅通过公钥X值匹配,X值相同则视为有效,无需验证Y值,故排除negated版本 | | **适用场景** | vanity地址搜索、大范围谜题破解(如谜题66) | 已知公钥X值的谜题破解(如谜题40的子公钥搜索) | ##### 局限性: 1. **模式限制**:仅支持address/rmd160/vanity模式,bsgs模式不支持(BSGS依赖预计算表,自同态特性会导致表结构冲突)。 2. **范围限制**:若谜题私钥范围限定(如仅2^71~2^72-1),部分关联私钥可能超出范围,实际速度提升会低于理论值(约5倍而非6倍)。 3. **地址类型限制**:仅对压缩地址有效,非压缩地址因公钥格式不同,优化效果会减半。 **适用场景总结**:Endomorphism优化最适合vanity地址搜索(如生成1Good1前缀地址)和大范围、无严格范围限制的谜题破解(如谜题66),可显著降低搜索时间;对限定小范围的谜题(如谜题72的2^71~2^72-1),需结合分块策略使用,以最大化优化效果。 ## 感谢 - ### Albertobsd 提供的开源代码 此项目能实施,也得益于 - IceLand - kanhavishva - XopMC - WanderingPhilosopher - Malboro Man - NetSec - Jean Luc Pons - 感谢所有让这个项目成为可能的CryptoHunters团队 - 所有测试过它的用户,报告了错误,提出了改进建议,并分享了他们的知识。 ## Donations Albertobsd - BTC: 1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW - ETH: 0x6222978c984C22d21b11b5b6b0Dd839C75821069 - DOGE: DKAG4g2HwVFCLzs7YWdgtcsK6v5jym1ErV