共享单车漏洞分析
惯于长夜过春时,挈妇将雏鬓有丝。
梦里依稀慈母泪,城头变幻大王旗。
忍看朋辈成新鬼,怒向刀丛觅小诗。
吟罢低眉无写处,月光如水照缁衣。
——鲁迅
时代变化之快,让人目瞪口呆。
谁能想到一千年之后,拳打镇关西的鲁提辖,开了一家粥粉面店。用自家杀猪的的肉,开自家店,自产自销,本也无可厚非。
然后令人吃惊的是,当年杀人不眨眼,胸前挺着一对金字招牌肉包子的孙二娘,竟然不卖人肉包子了,改行卖起了一种锁。这个锁号称固若金汤,无人能破。因为,它根本就没有锁孔!
锁,是一把好锁
为了证明这把锁是一把好锁,孙二娘广发英雄帖。悬赏:谁若能打开此锁,孙二娘将如花似玉的女儿相赠,另送比特币一万枚。
武林顿时像炸了锅一样,沸腾了起来。各路锁匠来了一拨又一波,但无一不望锁兴叹。因为没有锁孔,个个都像老鼠咬龟,无从下口。于是又人质疑这把锁不能正常使用。
只见孙二娘冷笑一声,从胸前的人肉大包子中间掏出一部爱疯手机,轻轻一点上面的APP,只听见清脆“叮”的一声,锁应声打开。
锁匠们顿时目瞪口呆。这是什么鬼,这么先进?真是闻所未闻。
科普时间一
孙二娘用的其实是一把云锁。通过手机APP,登陆云服务器,向锁发送云开锁指令,最后把锁打开。
工作原理
生产锁的时候,工匠们会向锁的flash写入设备ID,我们简称为DID。锁由内置电池供电,上电和正常工作的时候,锁会自动连接到云服务器,建立长连接。因为云服务器都有固定的IP,所以这一点不难理解。
为了保持长连接,锁必须定时向云服务器上报心跳脉冲信号。一旦心跳信号没有得到正确的回复,锁马上切换到定时重新连接服务器模式。为何是定时而不是不断尝试连接呢,主要的原因是为了省电。每一次尝试连接都会发出无线信号,消耗一定的电能。
既然是一把云锁,根本就没有锁眼,所以传统的锁匠自然不能把它打开。
孙二娘的锁因此名声大噪。江湖上的共享单车厂商纷纷找孙二娘合作,孙二娘真是赚的盘满钵满。
有码农的地方就有江湖
此事惊动了地球上的第三物种——程序员。程序员作为男人和女人之外的第三物种,并非浪得虚名。平日里一直忙于加班的程序员,得知这一消息之后,喜出望外,认为改变码农命运的时候到了。大魔王锋哥带领他的程序员兄弟们粉墨登场。
一日,孙二娘正在她的锁铺里面乘凉。店外忽然传来一声大喝:“我呸,孙二娘快快出来?”孙二娘心中一顿骂,心想那里来的泼猴,莫不是又是不知天高地厚来开锁的吧。出门一看,大吃一惊,只见那厮:
黑熊般一身粗肉,
铁牛似遍体顽皮。
交加一字赤黄眉,
双眼赤丝乱系。
怒发浑如贴刷,
狰狞好似狻猊。
孙二娘心里一哆嗦,此人不就是大魔王锋哥的大弟子倪震天?于是,赶忙走上前。心想,锋哥已经退隐江湖好多年了,难道今天要来踢馆?
正在思索,门外忽然传来一阵爽朗的笑声:“孙二娘,今天让我来开开你的锁。” 声音刚还在千里之外,人忽然就到了跟前。孙二娘定睛一看,来人羽扇纶巾,果然是锋哥。锋哥带着他的程序员兄弟,今日来破孙二娘的锁。
孙二娘一声招牌式冷笑:“老娘的锁也不是那么好破”。锋哥打断了她的话,说:“孙二娘,我等想在开锁之前,验验你的赏品,是否可以。”
孙二娘说:“所有来开锁的人都一视同仁,当然可以。”
于是呼出她的女儿,端是长的好看。有诗为证:
脸如莲萼,
唇似樱桃。
两弯眉画远山青,
一对眼明秋水润。
纤腰婀娜,
绿罗裙掩映金莲;
素体馨香,
绛纱袖轻笼玉笋。
凤钗斜插笼云髻,
象板高擎立玳筵。
锋哥大喝一声:“我呸,我等程序员每晚都要加班,哪有空理你这妖女。”快把比特币拿出来验一验。
漏洞,又见漏洞
验完比特币之后,孙二娘冷冷的说:“想你锋哥,也是江湖响当当的人物,今天莫要把招牌砸在我这里了。”
锋哥也不答话,在认真的研究起了孙二娘的锁。忽然抬起头来问孙二娘:“你的锁,可以远程通过APP来打开,是否可以通过APP关闭?“ 孙二娘说:”不能,我的锁只负责打开,不负责关闭。如果要关闭,需要用户现场手动关闭。“
锋哥说:”如果用户用完了共享单车,忘记锁了,或者锁了但是信号没有发送到服务器,怎么办?“ 孙二娘得意的说:”可以通过手机APP,结束计费!“
锋哥一字一顿的说:”如果,所有的用户结束骑行之后,都不锁单车,都通过APP来结束计费,会怎么样?“
孙二娘突然大汗淋漓,嘶声道:”所有的单车,车锁都会被打开,变成真正的共享单车。“
锋哥拿起桌上的比特币,问孙二娘:“我是不是可以走了”,孙二娘瘫坐在地上,无力的点了点头。锋哥带着他的程序员兄弟,从孙二娘女儿的面前走过,头也不回的走了。
后记
文章写的比较俏皮,但是共享单车的漏洞说的都是事实。因为锁是单向的,只能远程开启,但是不能通过远程关闭。而且,因为信号覆盖的问题,有些地方会没有信号,所以共享单车的APP必须要留一个接口来结束计费。这就造成了一个无法弥补的漏洞,就是当所有的人用完单车,都通过APP结束计费,那么所有的共享单车,只要用一次,就可以一直处于开锁的状态。就成为了真正意义上的“共享单车”。
当然,我相信以我们的素质,这样的事情应该不会发生。
最后干货
现在包括摩拜单车在内,都是免押金使用单车的,但是我发现很多人都不知道。如果你还有押金在共享单车的账户,可以把押金退回,也一样可以使用共享单车哦。另外,锋哥已经模仿孙二娘的锁的原理,写成了一个例子程序,你也可以亲自测试哦。
PC端测试的电脑软件下载地址为: