无聊时翻看我QQ好友,发现一个STEEMIT上朋友QQ签名里竟然写着一串类似私钥的字符串。我去提醒他问他怎么把私钥弄QQ签名上了?他沾沾自喜地回答,“怎么样,我是不是很聪明,这样我的私钥就实现了云同步,无论是手机还是电脑,家里还是网吧,妈妈再也不用担心我找不到私钥啦!”
(图源 :pixabay)
私钥很容易分辨
额,大哥你果然聪明,容我喝杯82年的可乐压压惊。没错,你是实现了云同步,这么有创意的想法你都能想出来,我谁也不服,就服你。然而,这样一来,你的私钥不就泄露了吗?我将这个想法说给他听,他不以为然地对我说:”你当我傻啊,当然不能把私钥原封不动放上去,我在前后都加了几个字符,就不信别人能看出来!”
额,大哥你果然英明神武,吓得我可乐都撒键盘上了。如果大家有看过我之前关于私钥等介绍文章,就会知道私钥的长度是固定的,并且开头也都基本上是固定的。STEEM采取了和BitCoin一样的私钥算法,所以开头字符(5)和长度都是固定的。我将他的签名掐头去尾,一个完美的私钥诞生了。
面对我发过去的私钥,这位大哥久久无言,我想当然的认为他意识到自己的做法不妥当,正在反省中。结果过了一会这个大哥打过来一串哈哈哈哈哈。然后和我说,“你知道了私钥又何妨?这是我一个马甲号,你又不知道我ID!哼哼,就好比你明明知道有人邮箱密码是123456,但是你能把所有的邮件账户都试一遍吗?”
通过私钥可以获取用户名
额,看来我不拿出点强有力的证明,这大哥死不悔改啊。于是我直接找出他马甲的STEEM ID,发给了他。这次大哥震惊了:“我靠,你咋找到的?😲 吓得我瓜子都掉地上了” 。我说:“别管我咋找到的,快去去掉签名,去STEEMIT修改密码吧”
过了一会,这位大哥又上来纠缠:“密码改好了,快告诉我咋整的,太神奇了”。挨不住他QQ上不断轰炸,我只好告诉他了,其实是很简单的事情。公钥是由私钥生成的,所以我们就可以获取公钥了,而STEEM上,账户公钥是公开的,那么当然可以获取用户名喽。
不过从公钥获取用户名是需要一丁点技术的,我以前用的笨方法是去steemdata数据库里搜索,但是后来发现steem有个get_key_references
专门做这事,它位于account_by_key_api
中。
声明如下:
vector< vector< account_name_type > > get_key_references( vector< public_key_type > keys )const;
来测试调用一下,用自己的Active公钥:
curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["account_by_key_api", "get_key_references", [["STM6MGdForcZ8HskcguP84QSCb8udgz7W9yUPU5jtsAKQAxth3U16"]]], "id": 1}' https://api.steemit.com
哈哈哈,抓到了吧。
结局
最终大哥表示他服了,但是他依旧没有改QQ签名,我问他咋还不改呢,他回答:“我已经在STEEMIT上改了密码,这组私钥应该就无效了,让你们这类坏人用尝试黑掉吧,累死你们这帮坏蛋!”
额,大哥你高兴就好,我这个坏蛋低调的匿了。
我又冒出来了,提示大家,千万不要向这位大哥学习啊。
This page is synchronized from the post: O哥闲扯淡: 将私钥备注到QQ签名是个好主意吗?