我备份了我的钱包.dat使用api参考中提到的命令:
比特币cli-rpcport=18332-rpcuser=user-rpcpassword=password backupwallet“/比特币/备份.dat”
我想使用’db browser for sqlite’(或任何其他sqlite浏览器)查看备份的db文件。但是,当打开db文件时,它会提示输入密码/密钥来解密钱包文件。
它指的是哪个密码/密钥?创建备份时,我没有指定任何密码或密钥。。
在此处输入图像描述
比特币核心
备份
密码短语
分享
改进这个问题
跟随
昨天问
利奥角
2144枚青铜徽章
有什么理由不使用Berkeley db utils包中的db\u dump吗?我已经在Windows-10下通过WSL(Ubuntu)使用过了——它肯定可以转储未加密的比特币钱包.dat文件。我想在OSX下安装和使用db utils可能更容易——如果这是您的操作系统的话。–红砖昨天
好吧钱包.dat是从运行比特币核心的Ubuntu服务器上下载的,备份完成后我会在OSX机器上打开它。。我还不知道Berkeley db utils包,db\u dump util可以安全地在一个实时运行的节点上运行吗?或者它能和已经备份的钱包.dat文件?–leoèu cape昨天
我把它和一个备份的钱包.dat-不是一个被积极利用的。–红砖昨天
谢谢@RedGrittyBrick很好用,不知道这个包存在!我猜钱包.dat它只是由一个“main”db/schema和其中的键组成,我希望能直观地看到其中还包含了什么,但它看起来只是键和一些元-leoèu cape
好的,我会把我的评论作为一个答案-红砖昨天
添加评论
1个答案
1
数据库转储
您可以使用Berkeley db utils包中的db\u dump。
我已经在Windows-10下通过WSL(Ubuntu)使用过了——它肯定可以转储未加密的比特币钱包.dat文件。
比特币核心用于钱包.dat是一个键值存储-使用的键看起来像“key”和“keymeta”这样的词。
据我所知,DB库不知道键和值的结构(如果不是简单的数据类型的话)。我相信像比特币核心(Bitcoin core)这样的应用程序通常会存储一些blob,这些blob的内容无法被缺乏应用程序模式知识的通用工具解析。同样的观察结果也可能适用于sqlite浏览器
然而,db\u转储输出是一个值得一提的步骤从十六进制转储!-p或-da选项可能有用。
数据库
https://github.com/bitcin/bitcoin/pull/19077说
这个PR添加了一个新的类SQLiteDatabase,它是WalletDatabase的子类。这提供了对用于存储钱包记录的SQLite数据库的访问。为了保持与BDB的兼容性和降低更改的复杂性,我们没有使用SQLite的许多特性。我们严格把它作为一个关键价值存储。我们创建一个表main,它有两个列,key和value都具有blob类型。
…
我们保留名字钱包.dat用于SQLite钱包。我们可以通过搜索钱包.dat文件。SQLite以以空结尾的字符串SQLite格式3开始文件。BDB在字节12处有0x00053162(注意,此整数的字节顺序取决于系统端位性)。所以当我们看到钱包.dat我们要打开的文件,我们检查神奇字节来确定要使用哪个数据库系统。
我使用的是当前的比特币核心0.21.0,但我检查的钱包是在2018年首次生成的,并且有伯克利DB(BDB)签名。比特币核心没有以更新/不同的格式重写文件。
https://github.com/bitcin/bitcoin/issues/20160提供逐步淘汰伯克利DB的时间表(这显然会影响此答案的内容)
钱包.dat
我对a的简要检查钱包.dat使用十六进制转储进行备份表明,钱包中大部分包含私钥、生成的地址和关于每个密钥的稀疏元数据。
另请参见
转储钱包输出文档和说明?(2021年及相关)
dat文件包含哪些不同的文件?(2011,∴有限有用性)
文件格式–rev*.dat(2017,有趣但不同文件)
数据库是用来做什么的?(2013,∴有限有用性)
UX至DB结构(2017年,不相关但有趣的文档)
钱包.dat包含您的私钥、通讯簿、从或发送硬币到您的地址、帐户、保留密钥、个人设置的交易副本,以及指向当前最佳块的指针。
(注:比特币核心的“账户”功能几年前就被弃用)
分享
改进这个答案
跟随
22小时前编辑
昨天回答
新的钱包正在使用SQLite,因为OP提到了它,他们可能正在使用它,所以我怀疑Berkeley DB工具是否适用于他们的用例——darosior
@darosier,AIUI比特币核心对钱包文件使用的库与其他文件不同。github.com/bitcoin/bitcoin/issues/20160–红砖昨天
我在已经备份的数据库上运行了db\u转储钱包.dat它确实转储了一些有趣的信息,比如db’main’的名称和键。我想钱包里差不多就这些了。。?希望能看到db的图像。我还没有将这个答案标记为正确的,因为我仍然想知道浏览器需要哪个密码/密钥-leoèu cape昨天
@利奥:我猜它需要用来加密密钥值的密码(如果你保护密钥的话)钱包.dat但我不知道比特币核心是否使用DB库提供的一些全局加密,或者它是否只对相关的值内容应用自己的加密(我以为是后者,但实际上并不确定)。我猜测SQlite可能要求一个不适用的全局DB密码,可能是因为它很混乱,或者是因为它想让您决定是否需要一个。我没有