【加密社】如何根据.bat文件恢复密钥

news2024/9/20 16:58:24

加密社

看了这篇指南,你将了解助记词和密钥地址(qianbao)背后的基本原理。

以及,如何找回你的大饼密钥。

Not your key, not your coin

如果你不掌握自己加密货币钱包的私钥,那么你实际上并不能完全控制你的资产

在当今数字化的世界里,加密货币已成为许多人投资组合中不可或缺的一部分。

然而,随着这一新兴资产类别的普及,随之而来的是管理和保护这些资产的新挑战。

尤其是对于比特币这样的加密货币,安全性至关重要。一旦丢失了访问钱包所需的私钥或助记词,你的比特币可能就会永远消失。

本文旨在为你提供一系列实用的步骤和建议,帮助你在不小心丢失钱包访问信息的情况下,安全地找回你的比特币。

无论你是加密货币新手还是经验丰富的用户,都能从中受益。我们将探讨助记词的重要性、不同类型的比特币钱包以及最佳的安全实践,以确保你的数字资产得到最有效的保护。

  • 从助记词到地址,发生了什么

私钥就像是你的超级机密密码,它实际上是一串很长的数字,具体来说是由0和1组成的256位的随机数字串。

你可以把它想象成一串非常长且复杂的大门钥匙,只有这把钥匙能够打开你存放珍贵物品的保险箱(比特币钱包)。

因为这串数字非常复杂,所以很难被猜到或者破解。

当你需要证明这些珍贵物品属于你的时候,就需要用这把钥匙来做个标记(签名),证明这些物品确实是你的。

这就是为什么私钥如此重要,“Not your key, not your coin” 在加密市场广为流传的原因。

公钥则是由这串超级机密的私钥通过一种叫做椭圆曲线算法计算出来的。

这个过程就像是一种单行道,你可以很容易地从私钥计算出公钥,但是有了公钥,别人却无法推算回私钥。

公钥就像是你的保险箱上的一串号码,别人可以用这个号码确认这个保险箱确实是你的,但他们打不开它。

最后,从公钥出发,经过一系列的转换处理(也就是哈希函数和编码步骤),你会得到一个地址。

个地址类似于你的邮寄地址,其他人可以用它来给你发送比特币。地址是公开的,任何人都可以看到,但它不会泄露你的私钥或公钥。

哈希算法和非对称密码学为此提供了安全上的保障

  • wallet.dat

在早期的比特币钱包软件中,每当用户需要一个新的接收地址时,钱包就会生成一个新的私钥,并基于这个私钥创建一个新的地址。

这意味着用户使用的地址越多,对应的私钥数量也会越多。

这些私钥之间没有任何关联,这就导致每个私钥都需要单独备份,给用户带来了很大的麻烦。

那时候,用户通常需要定期备份一个名为“wallet.dat”的文件。

这个文件包含了所有的私钥信息。如果这个备份文件丢失了,那么用户将无法找回他们的资金。

那么,如何让不同的私钥之间产生联系呢?

助记词又是如何取代这种繁琐且危险的备份方式的呢?

这就要从三个重要的 BIP(Bitcoin Improvement Proposals)说起。

BIP39:助记词

    BIP39 可能是你听到最多的一个标准了。它让备份私钥这件事变得简单了很多。想象一下,如果你要记住的是一串像“5Kb7k3FUPP6a....”这样的字符,不仅难记,而且输入时还很容易出错。

但是有了 BIP39,你可以把私钥变成一组单词,比如“abandon abandon ability about above absence absent absolute absorb”,这样是不是感觉容易多了?

你只需要记住这些单词,就能恢复你的钱包。这也是为什么现在很多比特币钱包都采用了助记词的方式让用户备份自己的钱包。

不过,仅有助记词还不够。因为如果你每次使用一个新的比特币地址,就等于是在用一个新的私钥,理论上来说,你需要为每一个新地址都生成一个新的助记词。

这样做显然还是太麻烦了,和以前直接备份那个“wallet.dat”文件差不多。

那么,目前常用的这些钱包,是如何做到通过一个助记词管理一大堆钱包地址的呢?答案是:BIP32。

BIP32:分层确定性钱包

    想象一下你有一把神奇的钥匙,这把钥匙就像是一个超级母钥匙,我们叫它“主密钥”。

有了这把主密钥,你可以变出无数把其他的钥匙,这些钥匙就是“子密钥”。

而且神奇的是,这些子密钥中的任何一个又可以再变出更多的钥匙。这就像是你在玩一个“钥匙魔法”,可以从一把钥匙开始,不断地创造新的钥匙。

“分层”这个词在这里的意思就是像一棵树一样。树有一个树根,然后树根长出树枝,树枝再长出小枝条,如此类推。BIP32 就是这样的结构:

通过分层派生密钥的方式,我们可以拥有几乎无限的比特币地址。

想象一下,你有一个“种子”(主密钥),这个种子可以长成一棵大树。这棵树的每个分支都代表一个不同的地址。

虽然这些地址看起来彼此独立,但实际上它们都来源于同一个“种子”。

那么,如何建立这些扩展密钥和主密钥之间的联系?派生路径登场!

派生路径

派生路径就像是一个地址的“家谱图”,它告诉你这个地址是怎么从主密钥一步步生成的。

就好比你在家庭中,你的名字后面可以加上一系列的关系描述,比如“我是张三的儿子,李四的孙子,王五的曾孙”。

在比特币钱包中,派生路径通常是用一组数字来表示的。例如:

m / 44' / 0' / 0' / 0 / 1

这里的 m 表示“主密钥”,后面的数字则表示了具体的派生步骤:

  1. 44':表示这是用于加密货币的路径。

  2. 0':表示这是比特币的路径。

  3. 0':表示这是第一个账户。

  4. 0:表示这是第一个子账户。

  5. 1:表示这是第一个子账户下的第二个地址。

当你使用一个助记词(例如 BIP39 的助记词)来恢复钱包时,助记词会生成一个主密钥。

然后,根据你设置的派生路径,这个主密钥会逐步生成你需要的所有地址。

到这里,聪明的读者会发现:如果仅仅依靠助记词本身,是无法直接得到某一个具体的地址的。

必须加上派生路径,才能推导出具体的比特币地址。但是,为什么在大多数情况下,我只是把助记词导入到钱包,曾经用过的那些地址就出来了?

这就要提到BIP44标准

BIP44:派生路径定义规范

BIP44 为“派生路径”中的每一层都赋予了特定的意义。派生路径的形式如下:

m / purpose' / coin_type' / account' / change / address_index

  1. m:

    • 这个 m 就是“主密钥”(master)的意思,表示这是从主密钥开始派生的路径。

  2. purpose:

    • purpose 代表了这个钱包遵循的标准或用途。对于比特币钱包来说,这个数字告诉我们最终生成的比特币地址是什么类型的。

    • 例如,44' 表示这个路径遵循的是 BIP44 标准。

  3. coin_type:

    • coin_type 代表你要使用的加密货币类型。

    • 对于比特币来说,0 表示主网的比特币,1 表示测试网的比特币。每种加密货币都有自己的编号。

  4. account:

    • account 表示你在这个路径下想要管理的账户编号。

    • 例如,0 表示第一个账户,1 表示第二个账户,以此类推。

  5. change:

    • change 定义了这个地址是用来收款还是找零的。

    • 0 通常表示收款地址,1 通常表示找零地址。

  6. address_index:

    • address_index 表示在当前路径下的具体地址编号。

    • 例如,0 表示第一个地址,1 表示第二个地址,以此类推。

假设你有一个助记词,你想生成一个比特币的收款地址。派生路径可能是:

m / 44' / 0' / 0' / 0 / 1

  • m:表示从主密钥开始。

  • 44':表示遵循 BIP44 标准。

  • 0':表示比特币(主网)。

  • 0':表示这是第一个账户。

  • 0:表示这是收款地址。

  • 1:表示这是第一个账户下的第二个地址。

为什么助记词导入后能显示地址?

当你把助记词导入到一个新的钱包时,钱包软件通常会默认使用一个标准的派生路径,例如:

m / 44' / 0' / 0' / 0 / 0

这个路径会生成你的第一个收款地址。大多数钱包都会自动使用这种通用路径,所以当你导入助记词后,它会根据这个路径生成你曾经用过的地址。

这样,你就不需要手动输入复杂的派生路径,钱包软件会自动帮你处理这些细节。这就是为什么助记词导入后,你的钱包可以显示出你以前用过的地址。

以下是比特币钱包中常用的三种地址派生路径标准的总结:

BIP44

  • P2PKH 地址:这是最传统的比特币地址,通常以数字 1 开头。

  • 派生路径:为了生成这样的地址,我们使用 m/44'/0'/... 这样的路径。

  • 意义:这个路径表示我们遵循 BIP44 标准来生成地址,主要用于非隔离见证的传统比特币地址。

BIP49

  • P2WPKH-nested-in-P2SH 地址:这是一种混合型地址,它实际上是将新的隔离见证(SegWit)地址嵌套在旧的支付到脚本哈希(P2SH)地址里,通常以数字 3 开头。

  • 派生路径:为了生成这样的地址,我们使用 m/49'/0'/... 这样的路径。

  • 意义:这个路径表示我们遵循 BIP49 标准来生成地址,主要用于向后兼容旧的钱包系统,同时也能享受隔离见证的一些好处。

BIP84

  • P2WPKH 地址:这是纯粹的隔离见证地址,通常以 bc1q 开头。

  • 派生路径:为了生成这样的地址,我们使用 m/84'/0'/... 这样的路径。

  • 意义:这个路径表示我们遵循 BIP84 标准来生成地址,主要用于完全支持隔离见证的新式比特币地址。

        正是因为有了这些标准的派生路径,钱包软件才知道如何生成不同类型的比特币地址。

当你导入助记词时,钱包软件可以根据你选择的地址类型,自动按照相应的派生路径生成你需要的地址。

因此,用户不需要关心复杂的路径细节,只需要导入助记词并选择地址类型,就可以找回并使用他们的钱包了。

  • 怎么找回钱包?

虽然现在有很多标准来帮助生成和管理比特币钱包,比如前面提到的 BIP44、BIP49 和 BIP84,但有时候仅有助记词还是不够的。

这是因为并不是所有钱包都严格遵循这些标准,有些钱包可能会有自己的做法,导致一些特殊情况出现:

  •  有些钱包没有遵循这些标准:这意味着它们可能用了不同的方法来生成地址。

  •  即使遵循了标准,也可能与其他钱包不一致:不同的开发者可能对同一个标准有不同的理解或实现方式。

  •  采用了较新的标准,但支持的钱包还不多:新标准可能还没被广泛接受。

实际例子

  • Electrum 钱包:如果你用的是 Electrum 钱包,并且尝试把助记词导入到其他钱包中,可能会遇到问题,因为 Electrum 有自己的助记词系统,而不是通用的 BIP39 标准。

  • Ledger 硬件钱包:如果你是 Ledger 硬件钱包的用户,并且想要把助记词导入到另一个钱包,可能会发现生成的地址不一样。这是因为 Ledger 使用了自己的派生路径,和其他钱包不一样。

由于这些不一致性,很多用户在尝试找回他们钱包里的资金时遇到了麻烦。因此,有一些网站,比如 Wallets Recovery,可以在上面试试。

当我们了解了钱包生成的规则,让我们回到最开始的话题

如何找回钱包?

三部曲:

hashcat 是一个破解密码的工具。你需要先下载并安装它。安装好之后,打开命令提示符(Windows)或终端(Mac/Linux)。

在命令行中输入以下命令:

  • 准备字典文件:

    字典文件是一个文本文件,里面包含了各种可能的密码组合。你可以自己创建一个,或者从网上下载一个现成的字典文件。这个文件通常命名为 example.dict

  • 安装并打开 hashcat:

  • 运行 hashcat 命令:

.\hashcat.exe -a0 -m11300 .\wallet.txt .\example.dict
  • 这个命令的意思是:

    • .\\hashcat.exe:运行 hashcat 程序。

    • -a0:使用模式0,即简单的暴力破解模式。

    • -m11300:指定模式为比特币钱包文件(wallet.dat)的哈希类型。

    • .\wallet.txt:这是你要破解的文件,通常是从 wallet.dat 中提取出来的哈希值。

    • .\example.dict:这是你准备好的字典文件。

如图

一个包含 13 万个密码的字典文件,用 hashcat 跑一遍只需要 4 分钟。你会发现,只要你的密码不是特别复杂,找回密码的可能性很大。

但是,最关键的问题是如何从钱包文件中提取出哈希值。

你在网上找到了一个叫做 bitcoin2john.py 的脚本,据说可以用来从 wallet.dat 文件中提取哈希值。

你尝试了好几次,配置了 Python 环境,但每次都失败了。后来你才发现,这个脚本已经过时了,不再适用。

紧接着你又发现一些在线解析网站(且不提在线解析是在帮别人打工的问题)

也都会返回一些莫名其妙的错误,例如:

unexpected file type or format Couldn't open wallet.dat/main. Try quitting Bitcoin and running this again.

让我们回到初心,回到BTC的源码的研究

GitHub - bitcoin/bitcoin: Bitcoin Core integration/staging tree

经过几天的分析,编译,调试。

我找到了钱包部分,稍加修改,就输出了hash

后续我会在Github开源我的程序,但目前还在测试阶段,需要的话可以免费加入社群后,将.bat文件发给我一起研究讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科研|基于SprinBoot+vue的科研管理系统(源码+数据库+文档)

科研管理系统 基于SprinBootvue的科研管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 科研队伍功能实现 用户功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

CTF Show逆向4reserve wp--mingyue

(本题难度较大,分析起来比较复杂,针对该题本文对其中比较重要的部分做了较详细的概述,有问题的地方,请指正) 第一步 查壳。本题为64位 第二步 各部分函数分析 (一) 分析main函数。 函数签名 int __…

达梦数据库事务管理

目录 一、事务简介 二、事务特性 1.原子性 2.一致性 3.隔离性 4.持久性 三、事务提交 1.自动提交模式 2.手动提交模式 3.隐式提交 四、事务回滚 1.自动回滚 2.手动回滚 3.回滚到保存点 4.语句级回滚 五、事务锁定 1.锁模式 (1)共享锁 …

WebGIS与WebGL是什么,两者之间的关系?

WebGL和 WebGlS 都是 web 技术领域的重要内容,特别是这几年webgis开发领域,和webgl打交道是必然的,常见的WebGL开发的基础上,比如二维的Leaflet、三维的Cesium也都是热门。 WebGL是一种基于 HTML5 Canvas 元素的 JavaScriptAPI&a…

sqli-labs靶场通关攻略(61-65)

Less-61 步骤一:查看数据库 ?id1)) and updatexml(1,concat(1,(select database())),1)-- 步骤二:查看表名 ?id1)) and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity)),1)--…

【专题】2024年中国游戏出海洞察报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37570 2023 年全球游戏市场规模高达 6205.2 亿美元,且预计未来持续增长,这清晰地展示了该市场的巨大潜力和良好前景。 中国游戏在全球移动游戏市场的份额于 2023 年已达 37%,产业贡献超 30% 的市场…

手动添加jar包到本地仓库

依赖包不存在于任何的maven仓库中,所以要手工添加进本地仓库,过程如下: 将EasyModbusJava.jar包复制到maven目录的 bin目录下;执行cmd到该bin目录路径下执行以下指令 mvn install:install-file -DfileEasyModbusJava.jar -Dgroup…

C++笔记15•数据结构:二叉树之二叉搜索树•

二叉搜索树 1.二叉搜索树 概念: 二叉搜索树又称二叉排序树也叫二叉查找树,它可以是一棵空树。 二叉树具有以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都…

STM32CubeMX CAN收发数据

目录 一、CAN总线 1. 差分信号 2. CAN收发器 3. CAN帧结构 4. CAN波特率设置 5. 标识符筛选 二、CubeMX配置 三、Keil代码 一、CAN总线 CAN(Controller Area Network,控制器局域网络)是一种用于车辆、工业自动化等领域的通信协议&…

数分基础(05)中心极限定理、假设检验与AB测试简介

文章目录 1. 中心极限定理1.1 概念1.2 直观理解1.3 重要性 2. 示例2.1 数据集2.2 验证思路(1)获取一个样本均值(2)假设抽取1000次(3)增大样本容量 2.3 实现2.4 结果 2. 假设检验2.1 总体思路2.2 比较两种运…

环信高质量全球网络——70%丢包环境,消息100%送达,抗弱网能力大幅提升!

在当今数字化时代,稳定而高效的即时通讯已成为企业和个人不可或缺的工具。环信即时通讯(IM)云服务一直致力于为用户提供优质的通信体验。如今,环信IM通过自研传输协议,实现了在弱网环境下的卓越表现,确保消…

.NET 一款具备签名用于绕过防护的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

踩坑-pycharm-终端闪退

问题: pycharm打开终端,终端直接闪退,打开其他项目,没事 原因: 之前在其他项目下载了allure,不知道怎么终端的path改了 解决: 此处,终端路径修改为如下即可:

HTML+CSS+Query实现二级菜单

在网页设计中&#xff0c;导航菜单是非常重要的部分之一&#xff0c;尤其是具有二级下拉菜单的导航栏&#xff0c;可以提升用户体验。本文将通过HTML、CSS和jQuery实现一个具有二级菜单标题的导航栏&#xff0c;并详细讲解每一步的实现过程。 <!DOCTYPE html> <html …

[数据集][目标检测]街头摊贩识别检测数据集VOC+YOLO格式758张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;758 标注数量(xml文件个数)&#xff1a;758 标注数量(txt文件个数)&#xff1a;758 标注类别…

信捷 XD PLC 双精度浮点数的初始化及传输

在用信捷XDH PLC进行运动控制时&#xff0c;加减速时间是个64位的双精度的浮点数&#xff0c;那么如果不在人机界面写到PLC&#xff0c;PLC自身也是可以初始化的&#xff0c;比如0.005,怎么办呢。 用FLT指令把 整数出单精度浮点数&#xff0c;然后EDIV指令把两个单精度浮点数相…

2025第五届广州国际新能源汽车产业智能制造技术展览会

2025第五届广州国际新能源汽车产业智能制造技术展览会 展会时间&#xff1a;2025年11月20日-22日 展会地点&#xff1a;广州保利世贸博览馆(PWTC Expo) 主题&#xff1a;能源绿色化&#xff0c;制造低碳化 400多家参展商&#xff1b;20000多名观众&#xff1b;20000平方米展出…

mysql索引,事务,约束

MySQL事务 1.什么事务 用于保证数据的一致性,它是由一组相关的dml语句组成,该租的dml语句要么全部成功要么全部失败. 2.事务和锁 当执行事务操作时(dml),MySQL会在表上加锁,防止其它用户改表的数据,这对用户来说很重要 mysql 数据库控制台事务的几个重要操作(基本操作 tra…

鸿蒙开发—黑马云音乐之播放页面(下)

目录 1.用户随意控制播放进度 2.歌曲暂停和播放控制和歌曲上一首、下一首播放控制 3.歌曲列表 4.歌曲列表数据动态化和背景雾化 5.唱针效果 6.结语 1.用户随意控制播放进度 src/main/ets/services/AvPlayerManager.ets&#xff1a; // 让播放对象从某个时间点开始播放 …

本地大语言模型部署及应用

01 模型 2024-07-24&#xff0c;Meta 正式发布新一代开源大模型 Llama 3.1 系列&#xff0c;该模型共有三个版本&#xff1a; 8B70B405B meta评估了超过 150 个语言覆盖范围广的基准数据集。比较了 Llama 3.1 与竞争性模型在真实世界场景下的表现。实验评估表明&#xff0c;L…