
最近经历了一件非常有意思的事情,短短两天人生如过山车一样,冲上高峰又瞬间跌入低谷,体验真是刺激,所以忍不住拿出来给大家分享一下。
文章略长,请耐心阅读。
以下内容 纯属虚构
如有雷同 完全巧合
缘起
3月的某一天,一个朋友的朋友忽然在微信上联系我,要我帮个小忙。据他说,是 BCT的 的密码忘记了。他提出要恢复密码,问我有么有什么好办法。
BTC核心钱包,是可以设置密码的。在转账的时候,如果密码输错,就无法转出。同时核心钱包不像imtoken等的 链上钱包 ,不存在 助记词 之类恢复密码的操作方法。一旦忘记密码,就只能看着钱包里的btc,却无法使用。
当我把这个结论告诉老弟时,他当时就急了,立下flag,一定要帮他找回密码,重金酬谢!!!


看到他的截图, 115 个 BTC ,我心动了,这不是件小事。
出于谨慎,我还是让他再验证一下btc账户的信息。

很快,有回信儿了,他确认了其中一个地址有币。

似乎也没有什么大问题,看不出什么破绽。这个兄弟虽然接触不多,人还是比较老实的,不至于拿这个忽悠我。
而密码这个问题,应该是有解决办法的,原因有二:
1。这个密码是可以无限次重试的,没有限制
2。整个操作过程不需要联网,密码保存在本地密钥文件里
这就给暴力破解铺平道路了。
我先应下了这件事,看在兄弟的情分上(才怪)!

实操
说干就干,这就打开我亲爱的google、bing、baidu,开始搜索btc密码相关的文章。功夫不负有心人,查了一天资料,终于有了思路。
在著名程序员同性交友网站上,有相关的项目,已经有前人尝试过破解btc密钥的密码,应该效果不错。
支持以下钱包密码恢复:
*比特币
*比特币现金
*埃瑟姆
*乳香素
*达什
*多格库因
*维特币
*莫纳科因
*数字字节
*(需要通过PIP安装的GOSSTLCOIN_Hash模块)
*波浪波
*齐利卡
*和许多其他"比特币",如"密码"
功能挺强大,已经超出预期了,是骡子是马还要拉下来遛遛。
下载程序,pythen写的,开始搭环境。此处省略解决各种小问题若干。
程序顺利跑通,做了个小测试,3位密码破解,也没什么问题。
貌似还支持gpu运算,测了一下,速度提升几十倍,我的破960m也贼拉快。
万事俱备,只欠密钥了。
像老弟用微信演示程序运行状况,沟通了一下,交代他妥善保存密钥,电脑不要随便联网了。而他明天就坐车来我这个城市,见面详谈。
梦幻
翌日下午,人到了。先请老弟吃个饭,接下风。抢着结账,被我拦下了,毕竟是到我这里,哪有他结账的道理。回到宾馆,摆开电脑,开始搞正事儿。这个程序能不能实现他的愿望,很快就能见分晓。
但其实我对现在就能破解出密码不抱太大希望。据他所说这个密码应该在8~10位之间,这个破解时间应该是以周来计算的,即使他提供一些线索,破解时间也不会少于几天,甚至破解一个月以上也不奇怪。
我本意是,让他看一下程序的作用,然后让他购买一台性能高的主机,专门用来跑这个程序,来快速破解密码。但事情的进展速度,大大超出了我们的预期。
我把程序顺利移植到他笔记本上一份,开始做测试。在开始之前,我断掉他笔记本的网络,这样一来,对他对我都算是有交代,免得出现密钥被盗情况。简单设置了他常用的一些密码组合,外加一些随机数字和符号。戏剧性的一幕出现了,程序瞬间就停止了运行,密码出来了!

看着屏幕上的小小的1,我俩面面相觑,这TM也太简单太弱智了!!他翻来覆去用各种单词加数字的复杂组合试了不下上百次,朝思暮想的密码,竟然是个1,而且还从来没有尝试过!
马上打开btc钱包客户端,尝试修改密码,成功了!!!
这一切来得太突然了,他似乎有点欣喜若狂。我还是问了一个小问题,这报酬怎么算?老弟略加思索,虽说这个密码过分简单,但是没有你帮我,短时间我还是解不出来,这样吧,零头给你, 15个BTC 。
轮到我欣喜若狂了。
来,地址我有,转账吧!!!
转折
阳光下的泡沫 是彩色的 就像被骗的我 是幸福的
到了转账阶段,问题就都来了。
他带了一台奇破无比的笔记本,据说是14年前后买的,宾馆网络应该也不给力,btc钱包更新时间还差36个小时,等了一个小时死活就是更新不完。我调侃他,币
只要转出来,我就把他笔记本砸了,送他个新的。
不等了,去我家试试。在我家到是挺顺利,不到半个小时更新完了,先转出来0.01个试试。问题开始出现:
他这个密钥里几千个地址,币都散在这些地址里,转账数据包字节数不少。客户端似乎有点不一样,不能自己计算转账费用,只能一点点试。反复测算后,每KB
0.0016比较合适。
再三核对地址,发送。等了10分钟,没收到,链上浏览器也也没有确认记录。我郁闷了,开始检查客户端信息,发现个怪问题。

不在 内存池
客户端拷贝到我的笔记本上,他也同意了。
这步操作还是有一定危险性的,毕竟核心钱包唯一重要的就是密钥,一旦我掌握了密钥,理论上也就掌握了这些btc。能让我拷贝密钥,说明一来他觉得这个事
情应该能很快解决,他不在需要这个旧的密钥。二来他对我还是有一定信任的,我应该不会做出坑他的事情。
在拷贝客户端的时候,我发现了一个更大的问题,这个客户端只有区区6G多,这明显不正常啊,完整更新完的btc客户端应该已经超过300g了,他这个客户端这
么少,还能启动,显示出钱包余额,太奇怪了。据他说是因为机器太差劲,更新起来太费劲,就用一种叫 修剪模式 更新完了整个钱包。
修剪模式,就是通过修剪区块中与当前密钥无关的交易信息(这段理解可能不太准确,大家可以帮我指正),达到缩减本地区块的目的,最小好像能缩减到2g。体
积小了,能够便携,启动、运行速度也会快很多。缺点是,只能当前私钥用。要导入新的密钥,需要重新下载完整区块。
看着这个只有6g的钱包,我隐隐感觉到不安。
没办法,硬着头皮上吧,死马当活马医。拷贝到我的电脑上,无法启动。继续百度,发现需要加上-prune=550的参数。成功启动后,还是无法转出,依然是不在内存池,看来问题还是出在钱包上。接着找相关信息,有人提出用getrawtransaction、signrawtransaction、sendrawtransaction这三个命令来查看原始交易数据、对其签名、然后重新广播。折腾了几遍,还是不行。
时间慢慢来到凌晨2点了,看着钱包里的btc却束手无策。最后的思路,就是找一个完整区块的btc核心钱包,重新导入这个密钥。但我手头没有,朋友倒是有这个,无奈两点了,已经不方便去拷贝,只能明天再说。他回宾馆,我倒头就睡了。
第二天8点,他就到楼下等我了。两眼通红,一看就没睡好。我也差不多,翻腾了一晚,没睡几个钟头。看来这个问题不解决,我俩都放不下心来。
找朋友拿到完整钱包,导入密钥,启动之后,还是看能到115 个btc。继续转账,问题依旧,不在内存池!
问题回到了原点。
经过反复思考和查询,我决定再试一下 再扫描封锁链 命令。
再扫描封锁链
重新扫描本地区块链以进行与钱包相关的交易,从而修正密钥和区块内数据不符的情况。

漫长的等待开始了,随着时间的推移,钱包里的余额数字在不停的变化。。。
闲极无聊,他开始畅享未来的日子,要在哪里买房、选Q7还是X7、拿多少出来做银行理财、要去哪里旅游、是不是给父母一笔资金让他们安心养老、要不要给兄弟姐们也分一份财产、找什么样的女朋友合适、考虑做个婚前财产公证,天马行空五花八门,完全沉浸在对美好生活的向往中。
我打趣他,可以看看知乎里面那个热帖,
不过现实是残酷的,快三个小时的扫描结束了,钱包里的余额定格在了0.000013。
我证实了自己的猜测,而他一脸尴尬的笑容。两天的梦幻之旅结束了,一切都是泡沫,这个钱包里的btc早已经转出,只是他的钱包客户端没有显示正确的数据。
证实了这个预料之中的猜测,我的内心一片平静、片平静、平静。。。

尾声
送他去车站的路上,我俩一路无话。临别时,我还是忍不住宽慰他,人生就是这么刺激,生活也还要继续,该来终究会来的。
他的精神似乎恢复了些,也能自嘲到,就像完了一次蹦极,来了个巅峰体验。
短短两天,我陪他做完了一个美梦,梦醒时,只落得白茫茫大地一片干净净。
复盘与总结
先留个知乎号:lotus,知乎搜 狗狗币铁粉 就能找到我,欢迎交流
1、关于那些有btc的地址
后来查了一下,是他对btc钱包不熟悉,把对方发出的地址理解成收币地址了,所以看到的是对方地址里的btc。还是太轻信他了,高看了他的操作能力。
2、对btc钱包的使用经验不足
没用过修剪模式,也没想到会出现余额错误的问题。自己也没有准备一份完整区块的钱包备份。下次碰到这种情况,就先导入密钥,然后重新扫描一下。不怕麻烦,要确保数据安全准确。
3、要有相对完善性能良好的测试环境
我俩的电脑都不咋地,他的尤其差劲。这两天大部分浪费在等待更新和扫描导入密钥上了。换台好电脑,会节省很多时间。
4、比特币本地密码恢复
这件事情可以搞,程序也跑通了,暴力需要的就是时间。只要密码不是特别复杂,配合一台性能强劲的电脑,最终是可以破解出来的。程序还需要些小优化,我抽时间完善一下。
本文从3月中旬开始写,历经知乎小管家连续两次禁言,拖拖拉拉到了4月1日愚人节才能发出来。回头来看冥冥中似有天意啊,上天好像给我开了一个小小的玩笑,愚弄我了一把。两天时间,如大梦一场。应了佛经里的一句话:
一切有为法,如梦幻泡影,如露亦如电,应作如是观
