闪讯无线助手-Android端闪讯破解路由器拨号实现原理
破解闪讯详细原理
前言
博主曾在大二下学期的时候写了一个闪讯无线助手(Android端)用来破解闪讯,拨号路由器发出无线。当时在闪讯吧发了一个相关帖子免费提供给大家使用,同时也力所能及的回答吧友的问题。之后将闪讯无线助手在豌豆荚和应用宝上架。当初写好时候就想着之后要写一篇具体实现教程同时开源,也答应了很多人会开源。本来想着在学校的时候就把这件事完成,没想到之后事情比较多,被什么实习、工作、毕业一直拖着。一晃眼现在已经毕业了,再不开始搞估计就鸽了,趁着刚毕业还不怎么忙的时候先把这件事搞定。ps:之前实习的时候比较忙,qq和贴吧上问的问题我都忘了回,在这说声不好意思。
我还是简单的讲一下破解闪讯路由拨号是什么意思,其实就是让路由器拨号闪讯账号发出无线,实现多台设备上网。
敲黑板划重点 闪讯无线助手源码github地址
闪讯无线助手豌豆荚地址
闪讯无线助手应用宝地址
ps:上面是闪讯无线助手Android端源码,我也写了一个闪讯无线助手ios端,不过第一次写ios代码写的十分混乱,如果不介意这些想要ios端的代码话可以在下面留言。
闪讯破解原理
破解整体过程
众所周知路由器有一个管理后台比如TPLINK的192.168.1.1,在管理后台页面中我们可以找到一个拨号界面,正常情况下我们都是输入宽带账号密码来拨号路由。现在要拨号闪讯,直接输入闪讯账号和密码是拨号不成功的。因为闪讯拨号的时候会对闪讯账号进行加密处理,要使用加密之后的闪讯账号进行拨号。闪讯账号加密是根据当前时间动态加密的,手动在路由器拨号界面输入加密之后的闪讯账号时间上会来不及,因而要通过软件进行模拟拨号。
现在来总结下破解过程,第一步先将闪讯账号进行相应的加密,第二步将加密之后的闪讯账号和闪讯密码通过软件模拟路由器拨号进行拨号。整体流程如下图所示
闪讯账号加密实现
闪讯账号加密整体流程如下图所示
这里给出Java版的闪讯账号加密代码,其他语言版本的大家可以自己发挥。ps:要object-c版的可以在下面留言
/*** 获取加密后的闪讯账号** @return*/public String getRealName(String username, long lasttime) {if (TextUtils.isEmpty(username)) {return null;}mUserName = username;mLastTime = lasttime;Calendar calendar = Calendar.getInstance();long mTime1c;long mTime1convert;byte[] ss = new byte[]{0, 0, 0, 0};// unsigned char bytebyte[] ss2 = new byte[]{0, 0, 0, 0};String strS1 = "";String mFormatsring = "";String mMd5 = "";String mMd5use = "";{long t;t = calendar.getTimeInMillis() / 1000;// 得到系统时间t *= 0x66666667;t >>= 0x20;t >>= 0x01;mTime1c = (long) t;}if (mTime1c <= mLastTime) {mTime1c = mLastTime + 1;}mLastTime = mTime1c;{