上班都快一周了,一直想更新,奈何小伙还没有从假期的快乐中缓过来,今天终于耐下心来更新一小篇。抠一下某品会的JS代码,接着使用抠取的JS代码加密密码进行登录。友情提示:为避免不必要的纠纷,本文中所有网址都进行了一定隐藏。看完本文觉得有帮助关注一下知识图谱与大数据公众号吧,有大量抠
JS
代码的文章,当然不关注也无所谓,完整代码点击文末阅读原文。如有侵权,联系删除。
目标
标题已经阐明了本文的目的:
- 密码加密解密;
- 利用第一步加密方法加密后进行登录;
- 完整代码中尝试了多账号号批量登录(由于篇幅有限,移动到了阅读原文中);
抠出代码
找到目标网站,进入登录页面(对各位来说都很easy):
像以往一样输入错误的账号密码,看看提交的数据,点击登录后,提交账号密码url
如下:
继续看FormData
,如下图:
图中的loginName
为你输入的用户名,password
为密码,可以看出被加密了,如果你熟悉了各类JS加密方式,心里应该能大概确定这就是MD5
加密结果。暂时不用管其它的四个参数,接下来无非就是把加密JS代码抠出来,可以通过调用栈进去,也可以全局搜索password
来定位JS文件,具体使用哪种方法就看各位看官的喜好了,我这里是从调用栈进去的(既然我们是在登录,那就点带有login
字样的js文件进去好了):
进来后你可以搜一下password
关键字,应该马上就能定位到想要的位置,定位的时候别忘了挂上一个断点,就像下图一样:
一看加密方法名就是熟悉的MD5
,接下来的操作应该更加熟悉了,激活断点(输入账号密码,点击登录,前提是你挂上了断点)。
点击后就进入了加密方法里:
function md5(string, key, raw) {
if (!key) {
if (!raw)
return hex_md5(string);
return raw_md5(string)
}
if (!raw)
return hex_hmac_md5(key, string);
return raw_hmac_md5(key, string)
}
可以看出md5方法一共有三个参数,第一个striing
即为密码,key
和raw
是undefined
。接下笨一点的办法就是一步一步运行,把跳转的所有代码都扣下来,如果是刚开始学习抠代码,这个方法能增加很多调试"感觉",慢慢抠得越来越顺手。取巧一点的无非就是找到大括号:
一直往上找到,应该马上就能找到正括号:
这样里面的代码其实就是本次要抠的代码,但是要使用python
调用,还要进行一点改动。本次要抠的加密代码其实很简单,毕竟只是md5
。经过稍微改写后,我们尝试使用python里execjs
库执行:
成功运行出结果,抠取完毕。
登录
FormData
通过上一节,我们已经可以得到加密后的密码,既然要登录,那就要回到FormData
中,看看几个参数的含义与取值,经过一番测试,总结如下,感兴趣的也可以自己去试一下。
参数 | 取值 |
---|---|
loginName | 用户名 |
password | 加密后的密码 |
remUser | 是否记住用户名(0或者1) |
whereFrom | 可为空 |
captchaId | 验证码(可为空) |
captchaTicket | 可为空 |
Cookies
现在的登录都需要携带cookies
,看一下本站登录时候的Cookies: