发布时间:2023-06-10 12:40:04
最近一直在“得到”App上学习卓克老师的密码学课,学到了不少关于密码学的知识,并且我也将所学到的和想到的一些重点和故事,整理成文章在上进行了分享。
这门课于我的好处是,不仅使罩销我的兴趣得到了满足,还培养了一种较为科学的思维方式。更没想到的是,它还帮我破解了imToken钱包。
不过可能没有你们想象的那么刺激和高端,事情的经过其实很简单:
昨天下午的时候,一位简友询问我说,想把imToken钱包中的FTN提出来,可是钱包登录不上去了,总是提示助记词输入错误,是否有其他办法登录或者找回。
正常来说,物简游imToken钱包提供三种导入方式,分别是助记词、keystore和私钥。于是我建议他用keystore或者私钥导入。
没想到这位简友只有助记词导入的方式,而且更致命的是,当初他并没有备份keystore和私钥。
这就不好玩儿了,我心里暗想他可能与这笔FTN说再见了,因为 在加密货币的世界法则里,一旦助记词、keystore和私钥丢失,那这份财产将基本被宣判无法找回。
这位简友刚刚接触区块链和数字货币,如果钱包丢失的话,很可能会极大地打击到他探索的积极性,我试图想一些其他可能的办法。
无奈之下,我让他如果信得过我的话,把助记词发给我看一看,因为当时我怀疑他可能弄混了助记词和私钥。
他很大方,直接发了过来,我看了一下,确实是助记词。那就没办法了,我正想劝他放弃这个钱包,不过眼睛一下子注意到了倒数第二个单词:
drsign
印象中这好像不是一个单词,为了确定,我又上词典查了一遍,确实没有这个单词拼写。
但 imToken的助记词向来是12个拼写完整且正确的英文单词 ,不可能出现这样的词汇,唯一的可能就是这位简友当时抄写错了。
考虑到键盘上“r”与“e”紧挨着,我建议他试试“design”。
很幸运,登录成功!
就这样,我也幸运地破解了imToken钱包的助记词。(貌似可以得瑟一阵子。)
1.在使用数字钱包或交易所时,一定要将助记词、keystore和私钥备份妥当,开启了谷歌验证的app,要把谷歌验证的密钥也备份,以免手机更换或丢失时接收不到登录验证码。
2.备份时我一般会打开“记事本”,将信息抄写三遍,上下对齐,写完之后再核对一下,有没有上下不一致的地方,类似下图,可以有效防止抄错,各位朋友可以参考。当然最安全的办法是直接抄在纸上。
3.助记词、keystore和私钥等信息属于个人绝密,一定要保管好,万一丢失,可以咨询一下有经验的朋友,或者联系App的客服,或许存在一丝找回的可能。
5.关于钻和FTN的一些疑惑,可以关注 @币布斯 、 @何思源 的文章,也可以私信我。
祝大家的数字资产都能够安安全全!
往期文章:
密码那些事儿|(十)“钥匙”打开维吉尼亚的锁
密码那些事儿|(九)维吉尼亚登场
密码那些事儿|(八)玛丽女王被密码改变的人生
密码那些事儿|(七)以频率之矛,攻移位之盾
密码那些事儿|(六)中外古时候的移位加密
密码那些事儿|(五)换个位置,面目全非
密码那些事儿|(四)隐藏的消息
密码那些事儿|(三)“风语者”——从未被破解的密码
密码那些事儿|(二)密码学发展的七个阶段
密码那些事儿|(一)无所咐乱不在的密码
本人是官方授权会员推广专员,点击 会员专属通道 成为会员,您将会获得钻奖励及诸多权益!
《钻奖励调整公告》
本文主要讲解通过助记词、keystore、私钥 3种方式来导入钱包。导入钱包就是说根据输入的这3者中的一个去重新生成一个新的钱包。导入钱包的过程和创建的过程其实是差不多的。
根据助记词导入钱包不需要原始密码,密码可以重新设置。根据用户输入的助记词,先验证助记词的合规性(格式、个数等),验证正确后,配合用户输入的密码重新生成一个新的钱包。
验证助记词的察此哗合规性(格式、个数等)
助记词导入钱包
通过私钥导入钱包其实和创建钱包的过程基本一致。因为私钥在导出的时候转换成了16进制,所以在导入私钥的时候,要把16进制转换为byte数组。
keystore就是钱包文件,实际上就是钱包信息的json字符串。导入keystore是需要输入密码的,这个密码是你最后导出keystore时的密码。将keystore字符串变成walletFile实例再通过 Wallet.decrypt(password, walletFile); 解密,成功则可以导入,否则不能导入。
这是Web3j的API,程序走到这里经常OOM!
具体原因的话,我就不多说了,细节大家可以看这里
解决办法
根据源码修改 decrypt 方法,这里我用一个已经修改好的第三方库
修改后的解密方法
导入Kestore
1、导入助记词和私钥是不需要以前的密码的,而是重新输入新扒困的密码;导入Keystore则需要以前的密码,如果密码败行不正确,会提示地址和私钥不匹配。
2、关于备份助记词
用过imtoken的同学可以看到imtoken是可以导出(备份)助记词的。这个一开始我也很困惑,后来了解到其实它实在创建钱包的时候,在app本地保存了助记词,导出只是讲数据读取出来而已。还有一点,imtoken一旦备份了助记词之后,之后就没有备份那个功能了,也就是说助记词在本地存储中删除了;而且导入钱包的时候也是没有备份助记词这个功能的。
imtoken显示住纪词在资产里面
是可以看到导出助记词的,点导出助记词就能查看复制了。
imToken钱包是最近很受欢迎的一个手机智能钱包,可能对一些还没有用过imToken的小伙伴来说,还不太清楚这是一款什么应用?怎誉改么去使用?那么下面就跟着我一起来详细了解一下吧!
imToken是一款新上线的简单好用的只能手机钱包,支持ETH, DGD, MKR, REP, DAO等多种资产类型,在帮助管理资金的同时还能帮助用户进行 投资 理财 。
imToken钱包怎么用?
一、首先需庆喊判要下载安装该软件
小伙伴们可以点击该页面上方的【imToken钱包】直接下载。
二、设置渗弯新钱包
下载完成后,初次打开 APP 会显示如下页面,需要进行钱包的创建或导入(因为我自己之前没有以太坊钱包,这里就按“创建钱包”操作)。点击【创建钱包】,根据页面提示,填写钱包名称和密码,即可创建完成。
创建钱包之前会有一个风险评测,如果时币圈新手建议学习一下,如果是老手可以选择跳过,直接创建即可。
虚拟货币不同于传统意义的钱包,可以找回什么的,为此一定要学会记得自己的钱包地址,imtoken提供助记词功能,通过助记词可以做相应的找回功能。
温馨提示:
这里的创建的密码用于加密保护私钥,转账时会用的,所以密码强度非常重要,使用大小写字母、数字和符号组合是非常有必要的,并且要牢记!
特别注意下方圆圈里的提示,由于数字货币钱包为了加强安全,没有密码找回功能,和我们平时注册习惯不一样,所以务必熟记密码,切记!切记!切记!
三、备份钱包
钱包备份,可以说是使用数字资产安全中最最重要的一个环节。很多刚接触的小白,不太习惯备份钱包、或私钥,导致资产彻底的遗失了。很多刚接触区块链的小白们,总是担心资产的安全性啊,黑客的盗币等等问题。据不完全统计,数字资产丢失的最常见情况,并不是被盗,而是用户自己没有很好的备份钱包,或是忘记了钱包助记词或私钥。
ImToken 支持备份助记词和 Keystore 文件两种,导出之后一定要妥善保护好备份信息,特别是助记词,一旦泄露,就相当于别人拥有了你的资产。另外,一定要记住自己的创建钱包的密码,一旦忘记密码,也就无法解开 Keystore, 也就无法交易了。
备注 Keystore,需要先输入密码,再导出文件。有的小伙伴通过云笔记本导出是空文件,可以使用的是邮件,也有的人通过手机自带“便签”工具。
导出的文件是这样的:
了解钱包地址
备份完成后,你的钱包就可以使用了。同时你也获取了一个全新的钱包地址。你可以用这个钱包地址来接受你参投项目所获得的代币。点击钱包名称下面的一串码,会生成你的收款码,就像银行的账号一样,这样别人就能通过这个地址给你转钱了。点击“复制收款地址”将这个钱包地址发送给对方。(务必不要用交易平台的地址收币,很可能会丢失!)
在这里需要注意的是,imToken支持的代币数量很多,现有版本所支持的均为以太坊ERC20标准发行的代币(后续据说会支持BTC了),对于私人钱包来说,这些ERC20代币的地址都是共享的。也就是你私人钱包里的多个币种,不管是ETH,还是EOS、BTM,这些代币的地址是一样的。
imToken在使用之前,有几个名词必须深刻理解,不然就有可能造成区块链资产的损失,这几个名词为地址、密码、私钥、助记词、keystore。腔唯
若以银行账户为类比,这 5 个词分别对应内容如下:
地址=银行卡号
密码=银行卡密码
私钥=银行卡号+银行卡密码
助记词=银行卡号+银行卡密码
Keystore+密码=银行卡号+银行卡密码
Keystore ≠ 银行卡号
地址=银行卡号
1.生成
创建钱包后会生成一个以 0x 开头的 42 位字符串,这个字符串就是钱包地址,一个钱包对应一个钱包地址,地址唯一且不能修改,也就是说一个钱包中所有代币的转账收款地址都是一样的。例如,一个钱包中 ETH 的转账收款地址和 EOS 的转账收款地址是一样。这一点和交易平台上的不一样,平台上不同代币的转账收款地址一般都不同,因此,转币到交易平台前一定要确认好地址。
2.用途
钱包地伍梁培址可以用于接收别人转币,也可以作为转币的凭证。
密码=银行卡密码
1.设定
在创建钱包时,需要设定一个密码,这个密码要求不少于 8 个字符,为了安全,密码最好设置复杂一点。密码可以进行修改或重置,修改密码有两种方法,一是直接修改密码,这需要输入原密码。如果原密码忘记了,用助记词或私钥导入钱包,同时设置新密码。
2.用途
密码的用途有两个,一是转账时候的支付密码,二是用 keystore 导入钱包时的登录密码。
3.特征
在现实世界中,一个银行卡只对应一个密码,对密码修改后,原密码就失去作用。但是在 imToken 钱包中,就不一样了,一个钱包在不同手机上可以用不同的密码,彼此相互独立,互不影响。例如,在 A 手机钱包中设置了一个密码,在 B 手机导入这个钱包并设置一个新密码,并不影响 A 手机钱包的密码使用。
私钥=银行卡号+银行卡密码
1.导出
创建钱包后,输入密码可以导出私钥,这个私钥属于明文私钥,由 64 位字符串组成,一个钱包只有一个私钥且不能修改。
2.用途
在导入钱包中,输入私钥并设置一个密码(不用输入原密码),就能进入钱包并拥有这个钱包的掌控权,就可以把钱包中的代币转移走。
助记词=银行卡号+银行卡密码
助记词=私钥
1.备份
创建钱包后,会出现一个备份助记词功能,选择备份助记词,输入密码,会出现 12 个单词,每个单词之间有一个空格,这个就是助记词,一个钱包只有一个助记词且不能修改。
2.用途
助记词是私钥的另一种表现形式,具有和私钥同样的功能,在导入钱包中,输入助记词并设置一个密码(不用输入原密码),就能进入钱包并拥有这个钱包的掌控权,就可以把钱包中的代币转移走。
3.特征
助记词只能备份一次,备份后,在钱包中再也不会显示,因此在备份时一定要抄写下来。
keystore+密码=银行卡号+银行卡密码
Keystore ≠ 银行卡号
keystore=加密私钥
keystore+密码=私钥
1.备份
钱包里有一个备份 keystore 功能,选择备份 keystore,输入密码,会出现一大段字符,这个就是 keystore。
2.用途
在导入钱包中,选择官方钱包,输入 keystore 和密码,就能进入钱包了。需要说明的是,这个密码是本手机原来设置的本钱包密码, 这一点和用私钥或助记词导入钱包不一样,用私钥或助记词导入钱包,不需要知道原密码,直接重置密码。
3.特征
keystore 属于加密私钥,和钱包密码有很大关联,钱包密码修改后,keystore 也就相应变化,在用 keystore 导入钱包时,需要输入密码,这个密码是备份 keystore 时的钱包密码,与后来密码的修改无关。
六、结语
在现实世界中,如果你的银行卡丢了,密码忘了,可以去银行帮你找回,你的钱还是你的钱,丢不了,这是中心化的优势。渣渣
但是在区块链世界中,除了你自己,没有人存储你的钱包信息,钱包信息要是丢了,没人能够帮你找回,钱包公司也不能。因此,只要你保护好钱包信息,钱包里面的财产只属于你自己,谁也抢不走,这是去中心化的优势。
1.忘记
你若把钱包信息忘了,会有什么后果呢?分这么几种情况:
(1)地址忘了,可以用私钥、助记词、keystore+密码,导入钱包找回。
(2)密码忘了,可以用私钥、助记词,导入钱包重置密码。
(3)密码忘了,私钥、助记词又没有备份,就无法重置密码,就不能对代币进行转账,等于失去了对钱包的控制权。
(4)密码忘了,keystore 就失去了作用。
(5)私钥忘了,只要你钱包没有删除,并且密码没忘,可以导出私钥。
(6)私钥忘了,还可以用助记词、keystore+密码,导入钱包找回。
(7)助记词忘了,可以通过私钥、keystore+密码,导入钱包重新备份助记词。
(8)keystore 忘了,只要你钱包没有删除,密码没忘,可以重新备份keystore。
(9)keystore 忘了,可以通过私钥、助记词,导入钱包重新备份 keystore。
从上可以看出,只要「私钥、助记词、Keystore+密码」有一个信息在,钱包就在。因此,备份好「私钥、助记词、Keystore+密码」最关键。
2.泄露
自己备份好钱包信息很重要,同时防止钱包信息泄漏,也很重要。若把钱包信息泄漏出去了,会有什么后果呢?分这么几种情况:
(1)地址泄漏了,没有关系。
(2)密码泄漏了,没有关系。
(3)地址+密码泄漏了,只要手机不丢,也没有关系。
(4)keystore 泄漏了,密码没有泄漏,没有关系。
(5)keystore+密码泄漏了,别人就能进入钱包,把币转走。
(6)私钥泄漏了,别人就能进入钱包,把币转走。
(7)助记词泄漏了,别人就能进入钱包,把币转走。
从上可以看出,只要「私钥、助记词、Keystore+密码」有一个信息泄漏出去,别人就拥有了你钱包的控制权,你钱包中的币就会被别人转移走。因此,「私钥、助记词、Keystore+密码」绝不能泄漏出去,一旦发现有泄漏的可能,就要立刻把里面的币转移走。
3.备份
既然私钥、助记词、Keystore+密码」如此重要,那么如何进行保存呢,最安全的方法就是: 手抄纸上
由于 Keystore 内容较多,手抄不方便,保存在电脑上也不安全,因此可以不对 Keystore 进行备份,只手抄私钥、助记词就足够了,手抄备份要注意以下几点:
(1)多抄几份,分别放在不同的安全区域,并告诉家人。
(2)对手抄内容进行验证,导入钱包看能不能成功,防止抄写错误。
(3)备份信息不要在联网设备上进行传播,包括邮箱、QQ、微信等。
(4)教会家人操作钱包。
如您需要查询您的区块链资产,可点击以下相应区块链资产链接,输入资产地址点击查询即可。
BTC 区块链查询链接
ETH 系列区块链查询链接
ETC 区块链查询
ZEC 区块链查询
BTS 区块链查询
从私钥导出助记词需要按如下步骤进行操作:1.以太坊钱包信培通常使用BIP39标准。2.首先,使用私钥生成熵并转换为十六进制格式。3.然后,将熵输入滑亩唯到助记词生成器中,在助记词列表中选择合适的单词。4.最后,以助记词序列的形式保存您的私钥。请注意,此操作只能在确保安全的情况下进行,因为一旦有人获得了您的耐迹助记词,他们就可以轻松地获取您的私钥,从而获得您的数字资产。