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

news2024/9/22 19:22:57

加密社

看了这篇指南,你将了解助记词和密钥地址(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开源我的程序,但目前还在测试阶段,需要的话可以免费加入社群后,将.dat文件发给我一起研究讨论。

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

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

相关文章

每日OJ_牛客_走迷宫(简单bfs)

目录 牛客_走迷宫(简单bfs) 解析代码: 牛客_走迷宫(简单bfs) 走迷宫__牛客网 解析代码: 采用一个二维数组,不断的接受迷宫地图(因为有多个地图),获取到迷宫地图后,采…

智能匹配新高度:相亲交友系统如何运用AI技术提升用户体验

在数字化时代,相亲交友系统正逐渐融入人工智能(AI)技术,以提升用户体验和匹配效率。AI的引入不仅改变了传统的交友方式,还为用户带来了更加个性化和精准的交友体验。以下是一篇关于如何运用AI技术提升相亲交友系统用户…

第L8周:机器学习|K-means聚类算法

本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子深度学习 聚类算法的定义: 聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一…

YOLOV5入门教学-common.py文件

在 YOLOv5 框架中,common.py 文件是一个核心组件,负责定义深度学习模型的基础模块和常用操作。无论是卷积层、激活函数、特征融合还是其他复杂的模型结构,common.py 都提供了灵活且高效的实现。在这篇文章中,我们将深入解析 commo…

【科普知识】一体化电机掉电后“位置精准复位“机制与规律

在工业自动化、机器人技术及精密控制领域,电机作为核心执行元件,其稳定运行和精确控制对于整个系统的性能至关重要。 然而,电机在运行过程中可能会遭遇突然断电的情况,这会导致电机失去驱动力并停止在当前位置,甚至在…

基于YOLOv10的垃圾检测系统

基于YOLOv10的垃圾检测系统 (价格90) 包含 [CardBoard, Glass, Metal, Paper, Plastic] 5个类 [纸板, 玻璃, 金属, 纸张, 塑料] 通过PYQT构建UI界面,包含图片检测,视频检测,摄像头实时检测。 (该系统可以根据数据训练出的…

Minimax-秋招正式批-面经(计网)

6. websocket和http区别 websocket知识点总结_防火墙 websocket-CSDN博客 相同点 都是基于TCP协议,都是可靠性传输协议都是应用层协议 不同点 HTTP 类型: 请求-响应式的无状态协议,半双工通信,同一时刻只能一个方向上有动作通…

变阻箱和负载箱的区别

变阻箱和负载箱是两种常见的电力设备,它们在电力系统中起着重要的作用。虽然它们都是用来调节电流的,但是它们的工作原理和用途有很大的区别。 首先,我们来看看变阻箱。变阻箱是一种可以改变电阻值的设备,它的主要作用是调节电流…

el-table使用type=“expand”根据数据条件隐藏展开按钮

一&#xff1a;添加className <el-table :data"tableData" border :loading"loading" :row-class-name"getRowClass" expand-change"expandchange"><el-table-column type"expand"><template #default"…

基于51单片机的智能小车转向控制系统设计与实现

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…

PCB散热设计

随着电子设备性能的不断提升&#xff0c;电路板上的元器件集成度越来越高&#xff0c;发热量也随之增加。如何有效管理这些热量&#xff0c;保证电路板在高温环境下的稳定运行&#xff0c;成为设计过程中一个不可忽视的问题。如果散热不佳&#xff0c;电子元件可能会因过热导致…

python3删除es 45天前索引,生产环境验证过

本人es版本 环境 pip install --upgrade elasticsearch==7.16.3代码 from datetime import datetime, timedelta from elasticsearch import Elasticsearch

通过15张图带你掌握网络抓包工具Wireshark必备使用技巧

学习TCP/IP等网络协议时异常枯燥&#xff0c;因为网络问题看不见摸不着&#xff0c;很难深入理解其工作原理&#xff0c;而Wireshark正是将这些知识以一种网络数据包、可视化的形式呈现给大家&#xff0c;接下来博主带大家掌握Wireshark的必备技能&#xff01;如有任何疑问&…

【GPT】Coze使用开放平台接口-【5】API 调用

我们在机器人里面引用工作流&#xff0c;当然也可以通过 API 直接调用工作流&#xff0c;coze 也提供了这一套的 API 接口。coze 的 API 接口肯定也不只是接入工作流&#xff0c;Bots&#xff0c;文件&#xff0c;知识库等&#xff0c;都有相关接口。这个文档我们也只专注在工作…

IntelliJ IDEA 中实现 Spring Boot 项目 的自动编译

要在 IntelliJ IDEA 中实现 Spring Boot 项目的自动编译&#xff0c;可以通过以下步骤进行设置&#xff1a; 1.添加 Spring Boot DevTools 依赖 在项目 pom.xml文件中添加Spring Boot DevTools依赖。这个依赖提供了自动编译和热更新的功能。依赖的配置如下&#xff1a; <d…

Word快速重复上一步操作的三种高效方法

在日常工作、学习和生活中&#xff0c;我们经常需要执行一系列重复性的操作。这些操作可能简单如复制粘贴、调整图片大小&#xff0c;也可能复杂如编辑文档、处理数据等。为了提高效率&#xff0c;掌握快速重复上一步操作的方法显得尤为重要。本文将介绍三种高效的方法&#xf…

【扩散模型(十)】IP-Adapter 源码详解 4 - 训练细节、具体训了哪些层?

系列文章目录 【扩散模型&#xff08;一&#xff09;】中介绍了 Stable Diffusion 可以被理解为重建分支&#xff08;reconstruction branch&#xff09;和条件分支&#xff08;condition branch&#xff09;【扩散模型&#xff08;二&#xff09;】IP-Adapter 从条件分支的视…

论文阅读 - Coordinated Activity Modulates the Behavior and Emotions ofOrganic Users

协调活动调节有机用户的行为和情绪&#xff1a;有关加沙冲突的推文案例研究 https://dl.acm.org/doi/pdf/10.1145/3589335.3651483 目录 摘要 1 INTRODUCTION 2 DATA 3 METHODOLOGY 3.1 Coordinated Activity Detection 3.3 用户互动动态特征 3.4 Organic Users’ Behav…

系统架构师考试学习笔记第三篇——架构设计高级知识(17)云原生架构设计理论与实践

本章知识考点&#xff1a; 第17课时主要学习云原生架构设计理论与实践。根据考试大纲&#xff0c;本课时知识点会涉及单选题型&#xff08;约占2~4分&#xff09;、案例题&#xff08;25分&#xff09;和论文题&#xff0c;本课时节内容偏重于方法掌握和应用&#xff0c;根据以…

KEIL中编译51程序 算法计算异常的疑问

KEIL开发 51 单片机程序 算法处理过程中遇到的问题 ...... by 矜辰所致前言 因为产品的更新换代&#xff0c; 把所有温湿度传感器都换成 SHT40 &#xff0c;替换以前的 SHT21。在 STM32 系列产品上的替换都正常&#xff0c;但是在一块 51 内核的无线产品上面&#xff0c;数据…