Tp-link(TL-WR886N)无线路由器后台JS加密算法Python实现
2017-01-18 20:58
2687 查看
最近家里换了个TP的无线路由器,鼓捣鼓捣WEB登录原理,不得不说TPLink这中无线路由器功能虽然没有openWRT那么多功能,但是麻雀虽小五脏俱全,对普通人来说很实用
话不多说,开整:
简洁的界面:
看看源码,这里可以看到应用了个名字为class.js的JS文件(加密算法在这)
我操,更简单,,,连输入框和按钮都没有,估计使用JS生成的了
接下来抓个包来看看,看是怎么登录的
可以看到点击登录按钮后,输入的密码将会被加密输送,认证通过后获取一个类似令牌的字符,然后就登进去了
在浏览器打开class.js查看:找了半天,终于找到:
关键代码:
python实现:
话不多说,开整:
简洁的界面:
看看源码,这里可以看到应用了个名字为class.js的JS文件(加密算法在这)
我操,更简单,,,连输入框和按钮都没有,估计使用JS生成的了
接下来抓个包来看看,看是怎么登录的
可以看到点击登录按钮后,输入的密码将会被加密输送,认证通过后获取一个类似令牌的字符,然后就登进去了
在浏览器打开class.js查看:找了半天,终于找到:
关键代码:
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实现:
#!/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 )效果:
相关文章推荐
- TP-LINK无线路由器_TL-WR340G+详细配置指南
- tp-link478g实现PPPoE server有bug
- 让RHEL4也能使用TP-LINK 的TL-WN510G无线网卡
- JAVA 实现 TP-LINK路由器拨号
- 花生壳加TP-LINK的TL-WR541G路由器,很好很强大
- TP link driver - TL-WN823N linux驱动
- 设置虚拟机采用桥接模式桥接到主机无线网卡(虚拟机:VMware 10.0.3 系统:centos 6.5 无线网卡:TPLINK TL-WN725N V2)
- TP-LINK 150M无线宽带路由器TL-WR740N 路由器当无线AP(交换机用)
- 基于HTML5实现的矢量TP-LINK面板
- 两TP-LINK WDS连接实现隔楼宇共享
- ubuntu11.10 安装tp-link usb无线网卡 tl-wn725n
- ubuntu11.10 安装tp-link usb无线网卡 tl-wn725n
- VC实现重启TP-LINK路由器
- TP-LINK tl-wr845n路由器的桥接设置:
- 移植TP-LINK TL-WN721N 驱动到micro2440(by liukun321咕唧咕唧)
- TP-Link 普联 TL-PA201 及TL-PWA2801N配对配置过程
- 300M无线路由器 TL-WR842N - TP-LINK官方网站
- Python3切换TP-LINK外网IP(ADSL)
- 使用python获取tplink的状态信息