1
二维码
首先通过题名可以知道这是一张藏宝图,根据这些黑点我猜测这是一张二维码,但是这张二维码明显是被剪裁过的,那么接下来的事情很明确,那就是把它拼起来。
2
拼凑
这张二维码中间有许多"白条"来遮挡二维码中间的内容,不过同时也可以帮我验证拼凑是否拼对了,因为没拼对的话,三张图的白条是不吻合的,先不管其遮挡的内容,先拼起来再说吧。
由于手头没有PS,我直接在网上找了一个在线的PS。
接下来就可以开始尝试各种拼凑了
经过一番尝试后发现无论怎么拼"白条"都对不上,我甚至一度怀疑是不是中间还少了东西。
最后把中间的"C"左右翻转了180度之后,发现"白条"能对上了。
根据白条的路线最终拼凑出如下图像。
这张二维码少了两样东西:
1.左上角、右上角、左下角
2.中间被白条遮住的部分
我去查了一下二维码相关的基础知识
之前见过很多中间带Logo的二维码,百度了一下其中的原理,发现二维码是具有纠错能力的,小于30%的错误都能纠正过来,意思就是说,中间的"白条"部分可能并不影响我们读取内容,那白条就不用管了,主要看那三个角怎么补。
然后我又查了一番资料之后,发现二维码那三个角缺少的东西叫"码眼",并不存储内容,所以应该是也不影响我读取内容的,可怎么扫也扫不出来,这就奇了怪了,我猜测可能是扫码工具必须要扫描到"码眼"才会认为这是一张二维码。
然后我发现二维码居然是可以肉眼识别的
在瞪了半个小时后我选择补上"码眼"....
这里有个奇怪的点是,用微信必须得用手机摄像头扫才能扫出东西来,直接导入或者长按识别都不行...
我打开微信扫码,打开imtoken,心想扫出来的应该就是私钥了,正准备扫出"私钥"然后导入钱包...
3
解密
扫码之后我发现事情并没有那么简单,扫出来了一段奇怪的字符串
b"\xb5\xf4/@\x98<h9'\xb7Q\xc9\xb5\x136\x11\xb2\xc1\x97\xc6:\x89d\x93+/\xed\x04W\xf8 jC\xff\xf6\xca\x9cR]>\x7f\xdb\x12\xcce\x98\x00K\xfb\xc8\xa5?\xaf\xd1"
但我敢肯定这不是一段乱码,而是人工生成的。因为在字符串前面加b,这是python中bytes数据的字符串形式。
毋庸置疑,这是一段密文。
在尝试了若干解密发现不成功之后,我联想到了一开始二维码呈现出的类似"IC0"字样,这三个字与以太坊有莫大关联,17年以太坊暴涨,18年以太坊暴跌,都与这三个字脱不了干系,而且现在项目方首选的IC0平台一般都是以太坊。
以太坊中的加密or编码???
先缕一缕以太坊中有哪些加密、编码:
1.ECDSA
2.Ethash
3.RLP
首先排除ECDSA,因为我感觉这段字符串不像公钥、私钥、哈希、随机种子中的任何一个。
然后是Ethash,感觉也不像,先跳过吧。
最后是RLP,我先用python的RLP库测试一下encode:
encode出来的数据正好是python bytes数据的字符串形式,我们把上面扫码出来的字符串拿来decode一下。
解码出来一段数字..这也不像私钥啊,众所周知,以太坊的私钥长度是64,我们来看看它多长。
长度是128,嗯??128??正好是64的两倍,看来已经很接近了,还需要进行最后一道解码。
128是64的两倍,意味着每两个数字就代表一个字符。
先把这段数字分成两个一组,再通过chr函数转为字符
感觉不太对...
没办法,只能去翻一下ASCII码对照表
对照表里面说明了每个字符的Dec形式(十进制形式)以及Hex形式(十六进制形式)
有没有可能这段数字是每个字符的十六进制形式?刚好又是两个数字一组,可以尝试一番。
解出来了!这段字符串完全符合以太坊私钥的要求,接下来就是导入钱包,转账~
以上解题过程由白帽子Nich0las提供,DVP基金会对此奖励了2000DVP。
本次活动圆满结束,感谢大家参与!
END
关于DVP
DVP 全称 Decentralized Vulnerability Platform(去中心化漏洞平台)旨在利用区块链技术,建立匿名化的安全众测社区场景,打造去中心化、漏洞即挖矿的平台概念。DVP致力于解决区块链企业安全危机,将连结区块链厂商、安全公司和白帽子等社区参与者,以最小的成本最大化减少漏洞暴露风险,共筑区块链生态安全。
更多信息,请访问 https://dvpnet.io
合作联系:service@dvpnet.io
识别二维码,关注我们