设为首页 收藏本站
查看: 2598|回复: 0

[经验分享] Tp-link(TL-WR886N)无线路由器后台JS加密算法Python实现

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-19 08:43:33 | 显示全部楼层 |阅读模式
最近家里换了个TP的无线路由器,鼓捣鼓捣WEB登录原理,不得不说TPLink这中无线路由器功能虽然没有openWRT那么多功能,但是麻雀虽小五脏俱全,对普通人来说很实用
话不多说,开整:
简洁的界面:

QQ截图20170119084224.png
看看源码,这里可以看到应用了个名字为class.js的JS文件(加密算法在这)
QQ截图20170119084229.png
我操,更简单,,,连输入框和按钮都没有,估计使用JS生成的了
接下来抓个包来看看,看是怎么登录的
可以看到点击登录按钮后,输入的密码将会被加密输送,认证通过后获取一个类似令牌的字符,然后就登进去了
QQ截图20170119084234.png
QQ截图20170119084238.png
在浏览器打开class.js查看:找了半天,终于找到:
关键代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
this.securityEncode(a, "RDpbLfCPsJZ7fiv", "yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciXTysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgMLwygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3sfQ1xtXcPcf1aT303wAQhv66qzW")
};
//a估计是一个类似于密钥之类的字符
//b密码
//c长密钥,长度为255
//charCodeAt方法可返回指定位置的字符的 Unicode 编码
//charAt方法可返回指定位置的字符
//?: JS的三元运算符,就像if...else如:1>3?alert(1):alert(2),条件?情况1:情况2
this.securityEncode = function(a, c, b) {
    var d = "",
    e, f, g, h, k = 187,
    m = 187;
    f = a.length;
    g = c.length;
    h = b.length;
    e = f > g ? f: g;
    for (var l = 0; l < e; l++) m = k = 187,
    l >= f ? m = c.charCodeAt(l) : l >= g ? k = a.charCodeAt(l) : (k = a.charCodeAt(l), m = c.charCodeAt(l)),
    d += b.charAt((k ^ m) % h);
    return d
};



看懂上面的JS代码后很容易用Python实现该算法
python实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python2.7
#-*- ending:utf-8 -*-
short = "RDpbLfCPsJZ7fiv"
#a
Lng = 'yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciXTysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgMLwygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3sfQ1xtXcPcf1aT303wAQhv66qzW'
#c
PawD = '123456@...'
#b
#ord与JS的charCodeAt方法类似,返回指定位置的字符的 Unicode 编码

def encrypt_passwd(a, b, c):
    e = ''
    f, g, h, k, l = 187, 187, 187, 187, 187
    n = 187
    g = len(a)
    h = len(b)
    k = len(c)
    if g > h:
        f = g
    else:
        f = h

    for p in list(range(0, f)):
        n = l = 187
        if p >= g:
            n = ord(b[p])
        else:
            if p >= h:
                l = ord(a[p])
            else:
                l = ord(a[p])
                n = ord(b[p])
        e += c[(l ^ n) % k]

    print e


encrypt_passwd(short, PawD, Lng )



效果:
QQ截图20170119084244.png


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-330457-1-1.html 上篇帖子: dedecms 列表页支持noflag属性 下篇帖子: 四次挥手
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表