js里面把密码encode_Python实战案例:这是你见过的最详细的JS加密登录某博
0x00 抓包分析
简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号光标到达密码框时就会生成!
0x01 加密逻辑分析
搜索su=可以很快找到加密的位置,上图看到e.su和e.sp都是由sinaSSOEncoder这个函数生成的,搜索sinaSSOEncoder发现就是这个js,也就是说把当前js全部拷贝下来就可用
这里可以得知su是由账号加密得到
function getSu(user) {
return sinaSSOEncoder.base64.encode((user))
}
me.rsaPubkey,me.servertime,me.noce这三个值都是由服务器返回的值,不多做解释!
最后这个b则是我们的密码,e.sp也就是处理完后的b值
function getSp(me,pwd) {
var f = new sinaSSOEncoder.RSAKey;
f.setPublic(me.pubkey, "10001");
b = f.encrypt([me.servertime, me.nonce].join("t") + "n" + pwd);
return b
}
在当前js文件中搜索prelt得知是由preloginTime生成
preloginTime就是一个时间戳减一个停顿后的时间戳,其实可以设置为一个随机数
function getPrelt() {
exectime = Math.floor(Math.random() * (20 ‐ 300 + 1) + 300)
return exectime
}
0x02 代码编写
1.获取nonce、rsakv等参数
import json
import re
import requests
import execjs
session = requests.session()
prelogin_url = 'https://login.sina.com.cn/sso/prelogin.php'
login_url = 'https://login.sina.com.cn/sso/login.php'
username = 'username'
password = 'password'
with open('login.js','r',encoding='utf‐8') as f:
login_js = execjs.compile(f.read())
su = login_js.call('getSu',username)
params = {
'entry': 'weibo',
'callback': 'sinaSSOController.preloginCallBack',
'su': su,
'rsakt': 'mod',
'checkpin': '1',
'client': 'ssologin.js(v1.4.19)',
'_': '1578127327125',
}
prelogin_resp = requests.get(prelogin_url,params=params)
result = re.search(r'sinaSSOController.preloginCallBack((.*?))',prelogin_resp.text).group(1)
result_json = json.loads(result)
print(result_json)
2.获取跳转链接
data = {
'entry': 'weibo',
'gateway': '1',
'from':'',
'savestate': '7',
'qrcode_flag': 'false',
'useticket': '1',
'pagerefer': '',
'vsnf': '1',
'su': su,
'service': 'miniblog',
'servertime': result_json['servertime'],
'nonce': result_json['nonce'],
'pwencode': 'rsa2',
'rsakv': result_json['rsakv'],
'sp': login_js.call('getSp',result_json,self.password),
'sr': '1920*1080',
'encoding': 'UTF‐8',
'prelt': login_js.call('getPrelt'),
'url': 'https://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
'returntype': 'META',
}
resp = session.post(login_url,data=data)
print(resp.text)
3.获取跳转链接
location = re.search(r'replace("(.*?)");',resp.text).group(1)
resp = session.get(location)
print(resp.text)
4.最后请求
location = re.search(r'replace('(.*?)');', resp.text).group(1)
resp = self.session.get(location)
print(resp.text)
5.登陆验证
到此为止已经是成功登陆了,最后再请求一下主页,如果返回的源代码中有自己的用户名,那么说明我们已经登陆成功了
#Python学习群592539176
resp = self.session.get('https://weibo.com/')
print(resp.text)
js里面把密码encode_Python实战案例:这是你见过的最详细的JS加密登录某博相关推荐
- Auto CAD:CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略
Auto CAD:CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略 目录 CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略
- Scrapy实战案例--抓取股票数据并存入SQL数据库(JS逆向)
目标网址:http://webapi.cninfo.com.cn/#/marketDataZhishu 之前在这篇文章里面对该网站的JS进行了一个逆向的解析:JS逆向解析案例 接下来我们来创建一个Sc ...
- js里面把密码encode_Python进阶最详细的JS加密登录X博
声明:仅供技术交流,请勿用于非法用途 网站:aHR0cHMlM0EvL3dlaWJvLmNvbS8= 0x00 抓包分析 简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号 ...
- js 获取session_Python实战案例:这是你见过的最详细的JS加密登录某博
0x00 抓包分析 简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号光标到达密码框时就会生成! 0x01 加密逻辑分析 搜索su=可以很快找到加密的位置,上图看到e.su ...
- 安全测试(三) 服务器安全 渗透测试 常规服务器安全漏洞 高危端口暴露、弱口令密码、暴力破解、服务器提权、Mysql数据库提权等 浅谈《社会工程学》实战案例
文章目录 一.前言 二.服务器安全 高危端口 2.1 端口号(Port number) 2.2 常见端口后及其用途表 2.3 端口号 扫描工具介绍 2.4 端口号 端口说明 攻击技巧 2.5 安全警示 ...
- 掌财社:html5中AmazeUI框架中JS表单验证实战案例展示!
今天和大家分享个有关于"html5中AmazeUI框架中JS表单验证实战案例展示!"这方面的相关内容知识,让大家对于html5中AmazeUI框架也可以有所了解! 1.需求 做一个 ...
- js实战案例--点击关闭二维码
js实战案例–点击关闭二维码 要求:当鼠标点击二维码关闭按钮时,则关闭整个二维码 如
- JAVA使用web3j开发以太坊实战案例
JAVA使用web3j开发以太坊实战案例 必读 1.前言 2.基础(必看) 3.web3j引入 4.创建账户(离线创建) 5.geth节点搭建.基本使用及一般问题 6.常量类 后面内容都要用到(必备! ...
- Linux 运维自动化之Cobbler实战案例
大纲 一.前言 二.Cobbler 工作原理详解 三.Cobbler 常用命令汇总 四.Cobbler 各种目录说明 五.自定义Kickstart文件详解 六.Cobbler 实战案例安装CentOS ...
- 【网络安全】XSS盲打实战案例:某网页漫画
什么是XSS盲打 简单来说,盲打就是在一切可能的地方尽可能多的提交XSS语句,然后看哪一条会被执行,就能获取管理员的Cooike.趁着没过期赶紧用了,这样就能直接管理员进后台.然后再上传一句话,Get ...
最新文章
- SVM的升维解决线性不可分
- JavaSE基础知识(5)—面向对象(5.3访问修饰符)
- matlab 里try用法,matlab在整个程序(全局)中使用try-catch来报告错误
- js计算数组中每个元素出现的次数(2种方法)
- 尼奥机器人不能手机绑定_微信绑定的手机号,如果手机号停用,是不是微信也不能用了?...
- C雨涵课后习题(18)
- XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用原点null
- mysql用户创建、授权
- 窝囊同事做测试三年未涨工资,被开当天,bat全部高管门口迎接。
- dw整个网站html文件怎么放一起,Dreamweaver模板如何批量做网页
- 阅读《Keyword-Guided Neural Conversational Model》
- 代码质量好坏如何评判
- element-ui 上传图片,图片404
- 如何在Android上玩经典复古游戏
- ug建模文本怎么竖着_UG编程文字加工,全方位实例讲解,文末有作业哦!
- 华为“天才少年”的200万年薪里,藏着人力资源管理的下一个10年
- 汽车运动之物理学分析二(计算速度、加速度和摩擦阻力)
- Hive 史上最全面的大数据学习第九篇(五) Hive 自定义函数 每一天都是美好的一天!
- README文档模板 含下载地址0积分 项目文档模板 springboot文档示例 readme参考文档 目录跳转 项目架构 使用说明 目录结构 等等 (含附件下载)
- java之数字彩虹雨
热门文章
- 微软一个关于team editon vs 2005文章的集锦页面
- 7.凤凰架构:构建可靠的大型分布式系统 --- 从类库到服务
- 3.分布式服务架构:原理、设计与实战 --- 服务化系统容量评估和性能保障
- 12.看板方法---度量和管理报告
- 5.七个重点网络协议
- 7.override a layout
- 15. PHP 全局变量 - 超全局变量
- 第3讲 zend原理剖析
- apache端口一直在增加_PHP环境全套针细教程:Windows安装Apache, PHP and MYSQL
- 大数据技术Hadoop介绍