如何帮币友找回了1万个EOS

作者:网友投稿 时间:2018-06-03 21:05

字号
人工智能+区块链的发展趋势及应用调研报告

如何帮币友找回了1万个EOS

一位朋友在去年9月4日的时候参与ico.info,网站关闭前夕把1万个EOS提到imtoken钱包,备份了keystore文件,可是不知道还要备份密码,现在只能看到钱包里面的币,可惜取不出来。6月1日EOS主网即将上线,如果再想不起来密码,这些EOS就将永远沉睡在以太坊区块链里。

如何帮币友找回了1万个EOS

区块链的世界里私钥就是一切,以太坊的keystore相当于加密过的私钥,它采用了对称性加密算法,如果不知道密码的特征,用普通的电脑穷举所有的8位字母和数字的排列组合,也得花费相当长的时间。

我自告奋勇揽下了这项任务,因为我知道每个人设置密码时都有一些特殊的习惯,并且很少使用超过8位的密码,对于这样的情况,暴力搜索的范围会大幅缩小,仍有一线希望找回密码。

KeyStore加密原理

以前只知道keystore把私钥加密处理后保存为一个文本文件,但背后的技术细节并没关注。这次拿到朋友的keystore文件之后,马上开始研究keystore的加密存储方式,网上的一篇文章比较详细地介绍了keystore的加密存储原理(https://ethfans.org/posts/what-is-an-ethereum-keystore-file)。keystore是一个json字符串,里面最重要的是crypto信息。

"crypto" :  

    "cipher" : "aes-128-ctr",  //对称 AES 算法的名称 

    "cipherparams" : {  // 加密时用到的参数 

        "iv" : "83dbcc02d8ccb40e466191a123791e0e" 

    }, 

    "ciphertext" : "d172bf743a674d.....4e6ad2fbde479c", //加密后得到的字符串 

    "kdf" : "scrypt", //密钥生成函数 

    "kdfparams" : { //上面kdf需要的参数 

       "dklen" : 32, 

       "n" : 262144, 

       "r" : 1, 

       "p" : 8, 

       "salt" : "ab0c78760.....43190334ba19" 

    }, 

    "mac" : "2103ac29920d71.....56c331e3097" //用于验证密码是否正确的代码 

整个过程还是蛮复杂的,有一张图说明了整个过程,非程序员和黑客可以忽略这张图。这里有一个重要的细节,mac信息可以用于校验密码是否正确,从而可以快速地(几秒之内)判断一个密码是否准确无误,可以节省大把的尝试时间。

如何帮币友找回了1万个EOS

图片取自ethfans.org

以太坊密码恢复工具pyethrecover

李笑来说过“你并不孤独”,世界上肯定有人与你有同样的遭遇,程序员们非常忌讳重复发明轮子,写代码之前先用google搜索一下,马上发现了pyethrecover这个工具(https://github.com/ryepdx/pyethrecover)。这段python程序能够根据你给出的密码片段的特征,生成一个包含所有组合的密码本,然后用程序一个一个地尝试这些密码。

正好以前学过python,按照github原作者的介绍,该程序可以运行在python 3环境中。可是在我实际安装时,某一个依赖的类库遇到了setup.py脚本无法执行的问题,折腾几次后,又找了另外一个github源程序,仍然无法正确安装。初步判断是windows环境的原因,准备切换到Linux环境中再试试。

.NET环境中的以太坊编程工具Nethereum

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>EOS 区块链 以太坊
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接