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加密登录某博相关推荐

  1. Auto CAD:CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略

    Auto CAD:CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略 目录 CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略

  2. Scrapy实战案例--抓取股票数据并存入SQL数据库(JS逆向)

    目标网址:http://webapi.cninfo.com.cn/#/marketDataZhishu 之前在这篇文章里面对该网站的JS进行了一个逆向的解析:JS逆向解析案例 接下来我们来创建一个Sc ...

  3. js里面把密码encode_Python进阶最详细的JS加密登录X博

    声明:仅供技术交流,请勿用于非法用途 网站:aHR0cHMlM0EvL3dlaWJvLmNvbS8= 0x00 抓包分析 简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号 ...

  4. js 获取session_Python实战案例:这是你见过的最详细的JS加密登录某博

    0x00 抓包分析 简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号光标到达密码框时就会生成! 0x01 加密逻辑分析 搜索su=可以很快找到加密的位置,上图看到e.su ...

  5. 安全测试(三) 服务器安全 渗透测试 常规服务器安全漏洞 高危端口暴露、弱口令密码、暴力破解、服务器提权、Mysql数据库提权等 浅谈《社会工程学》实战案例

    文章目录 一.前言 二.服务器安全 高危端口 2.1 端口号(Port number) 2.2 常见端口后及其用途表 2.3 端口号 扫描工具介绍 2.4 端口号 端口说明 攻击技巧 2.5 安全警示 ...

  6. 掌财社:html5中AmazeUI框架中JS表单验证实战案例展示!

    今天和大家分享个有关于"html5中AmazeUI框架中JS表单验证实战案例展示!"这方面的相关内容知识,让大家对于html5中AmazeUI框架也可以有所了解! 1.需求 做一个 ...

  7. js实战案例--点击关闭二维码

    js实战案例–点击关闭二维码 要求:当鼠标点击二维码关闭按钮时,则关闭整个二维码 如

  8. JAVA使用web3j开发以太坊实战案例

    JAVA使用web3j开发以太坊实战案例 必读 1.前言 2.基础(必看) 3.web3j引入 4.创建账户(离线创建) 5.geth节点搭建.基本使用及一般问题 6.常量类 后面内容都要用到(必备! ...

  9. Linux 运维自动化之Cobbler实战案例

    大纲 一.前言 二.Cobbler 工作原理详解 三.Cobbler 常用命令汇总 四.Cobbler 各种目录说明 五.自定义Kickstart文件详解 六.Cobbler 实战案例安装CentOS ...

  10. 【网络安全】XSS盲打实战案例:某网页漫画

    什么是XSS盲打 简单来说,盲打就是在一切可能的地方尽可能多的提交XSS语句,然后看哪一条会被执行,就能获取管理员的Cooike.趁着没过期赶紧用了,这样就能直接管理员进后台.然后再上传一句话,Get ...

最新文章

  1. SVM的升维解决线性不可分
  2. JavaSE基础知识(5)—面向对象(5.3访问修饰符)
  3. matlab 里try用法,matlab在整个程序(全局)中使用try-catch来报告错误
  4. js计算数组中每个元素出现的次数(2种方法)
  5. 尼奥机器人不能手机绑定_微信绑定的手机号,如果手机号停用,是不是微信也不能用了?...
  6. C雨涵课后习题(18)
  7. XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用原点null
  8. mysql用户创建、授权
  9. 窝囊同事做测试三年未涨工资,被开当天,bat全部高管门口迎接。
  10. dw整个网站html文件怎么放一起,Dreamweaver模板如何批量做网页
  11. 阅读《Keyword-Guided Neural Conversational Model》
  12. 代码质量好坏如何评判
  13. element-ui 上传图片,图片404
  14. 如何在Android上玩经典复古游戏
  15. ug建模文本怎么竖着_UG编程文字加工,全方位实例讲解,文末有作业哦!
  16. 华为“天才少年”的200万年薪里,藏着人力资源管理的下一个10年
  17. 汽车运动之物理学分析二(计算速度、加速度和摩擦阻力)
  18. Hive 史上最全面的大数据学习第九篇(五) Hive 自定义函数 每一天都是美好的一天!
  19. README文档模板 含下载地址0积分 项目文档模板 springboot文档示例 readme参考文档 目录跳转 项目架构 使用说明 目录结构 等等 (含附件下载)
  20. java之数字彩虹雨

热门文章

  1. 微软一个关于team editon vs 2005文章的集锦页面
  2. 7.凤凰架构:构建可靠的大型分布式系统 --- 从类库到服务
  3. 3.分布式服务架构:原理、设计与实战 --- 服务化系统容量评估和性能保障
  4. 12.看板方法---度量和管理报告
  5. 5.七个重点网络协议
  6. 7.override a layout
  7. 15. PHP 全局变量 - 超全局变量
  8. 第3讲 zend原理剖析
  9. apache端口一直在增加_PHP环境全套针细教程:Windows安装Apache, PHP and MYSQL
  10. 大数据技术Hadoop介绍