比特微 Linux软件安装 typora video uwp mtu原理 orm Minjs vue数据绑定 linux内存管理 svn默认安装路径 最新更新国内最快的dns 华为路由器ipv6配置 mysql安装后怎么使用 arraylist删除指定元素 hadoop组件 linux查看防火墙 查看mysql密码 python运行环境 mysql函数 python分析 javaapplet java文档 javaworld 如何安装java环境 java基础代码 java的random java时间戳转换 java网络编程实例 customerrors ps插入表格 快点蛆虫成就单刷 labview宝典 思源黑体cn pr缩放 电脑手机模拟器 pr蒙版 mp4剪切合并大师 0x000007a 屏幕录像专家注册机
当前位置: 首页 > 学习教程  > 编程学习

js逆向系列:解决网页版微博登陆的js加密(2020.9.1最新版)

2021/1/9 2:07:42 文章标签: 微博取消赞

一、前言 博主最近沉迷js逆向,向各网站开刀,于是决定拿比较经典的微博登陆js加密来作为案例给大家讲解一下。 二、分析过程 我们先从这个登录界面进行调试。先随便填写账号密码,找到登陆的请求接口。 很容易就找到这个post请求,…

一、前言

博主最近沉迷js逆向,向各网站开刀,于是决定拿比较经典的微博登陆js加密来作为案例给大家讲解一下。

二、分析过程

在这里插入图片描述
我们先从这个登录界面进行调试。先随便填写账号密码,找到登陆的请求接口。

在这里插入图片描述
很容易就找到这个post请求,接下来分析他的表单。

在这里插入图片描述
经过多次发送请求,发现以下几个参数是变动的:severtime,nonce
,pubkey,rsaky,exectime,su,sp.
因此我们要在控制台内搜索这几个参数,首先我搜索了pubkey,发现了pubkey等参数是已经存在的。

在这里插入图片描述
这样就好办多了,只要分析sp和su参数那不就行了么,经过分析su就是账号经过加密后的参数,sp就是密码经过加密后的参数。
在这里插入图片描述
于是,又在控制台内搜索su和sp这两个参数,最后发现index.js这个js文件最为可疑。于是点进去仔细看了一下,发现了我们需要的参数。
在这里插入图片描述
这不就是我们要的su吗,于是我们直接编写js文件进行调试。

在这里插入图片描述

随便输入一串数字测试一下,看结果是不是和在网页中的值是一样的。

在这里插入图片描述
运行后的结果
在这里插入图片描述
是不是有点眼熟?于是我重新登陆了微博,一样的账号,返回的su的值就是这个,大功告成,结束。
在这里插入图片描述
不不不,还有一个sp参数,我们还没解决呢。
在这里插入图片描述
OK,我们继续看,在js文件中搜索sp,发现了这个:在这里插入图片描述
不过不是很确定这就是我们需要的sp参数,于是我在这边打了个断点,运行结果:
在这里插入图片描述
发现这串数字是不是和刚开始表单内的sp很像?没错,这就是我们需要的sp参数,功夫不负有心人,终于找到了。
在这里插入图片描述
我们接着往向下看:
在这里插入图片描述
发现b是通过这种方法得到的,然后把我们需要的js代码都复制粘贴进本地的js文件中,提供调用。
大致的解密思路差不多了,接下来就是编代码了。

三、编写代码

def get_sp_user():
    with open('weibo.js',encoding='utf-8-sig') as f:
        js_code = f.read()
        ctx = execjs.compile(js_code)
        sp = ctx.call("getpwd",pubkey,servertime,nonce,pwd )
        su = ctx.call("getuser",user)
        return sp,su

这里通过eecjs模块运行得到sp,su参数,然后其余参数都是现成的,我们加进去就行了。

form_data = {
    'entry':'sso',
    'gateway':'1',
    'from':'null',
    'savestate':'0',
    'useticket':'0',
    'pagerefer':'',
    'vsnf':'1',
    'su':su,
    'service':'sso',
    'servertime':servertime,
    'nonce':nonce,
    'pwencode':'rsa2',
    'rsakv':'1330428213',
    'sp':sp,
    'sr':'1536*864',
    'encoding':'UTF-8',
    'cdult':'3',
    'domain':'sina.com.cn',
    'prelt':exectime,
    'returntype':'TEXT',
}
response = requests.post(url=url,headers = headers,data=form_data)
print(response.text)

打印下的请求结果如下:
在这里插入图片描述
怎么回事?这个怎么还是乱码的?于是我将unicode码转为中文,结果如下:
在这里插入图片描述
因为个人设置原因,于是在手机端微博同意登陆申请,最后成功登陆微博网页!

在这里插入图片描述

在这里插入图片描述

四、结语

微博的js加密说难也不难,说简单吧,找这些参数也得花点时间,写下这篇文章,主要是想和大家分享一下js逆向的技巧,希望大家能够有所收获!

最后,还是希望大家点个赞、点个关注,让博主有继续写下去的动力,谢谢大家!
在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_1100306.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?