分析ssologin.js


  既然我们知道了servertime跟nonce是用于加密的,不妨在文件中搜一下这两个关键字,一搜找到了好东西:

分析ssologin.js_第1张图片 

 

翻回去上文看看,表单中有个su和sp,都在这里了,可以看到su使用的是base64加密方式;而su就稍微复杂一点了,

if中的是新浪当前版本的密码加密方式rsa2的代码,而else中的是就版本sha加密的代码,我们只需要关心if中的内容, 

加密过程很简单,先是生成一个RSAKey对象, set PublicKey,然后就加密了。

一项一项地倒推回去,可以知道最后一步加密中最后的一个参数ag是原始的密码值,不会看到眼花的~ 

 

概括一下,就是用好长的那一串pubkey和10001作参数调用setPublic() ,注意的是它们都十六进制数;然后用(servertime + nonce + pwd)作参数调用Encrypt()。

 

我们去看看sinaSSOEncoder是个什么东西,它的定义在解密了的代码的1118行,从这开始截取到文件末尾,挪出来我们自己用,

 

1 }).call(sinaSSOEncoder);
2 //sinaSSOController =  new SSOController();
3 //sinaSSOController.init();

 

  这就解决了密码加密的问题了。

你可能感兴趣的:(表单,base64,rsa,网络爬虫)