1

JS逆向- openlaw 自动登录

 2 years ago
source link: http://xianyucoder.cn/2020/07/16/%E6%AF%8F%E6%97%A5JS-openlaw%E5%AF%86%E7%A0%81/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

JS逆向- openlaw 自动登录

发表于

2020-07-16

|

更新于 2020-09-24

| 分类于 js逆向

| 评论数: 0

| 586次阅读

本文字数: 3.7k

|

阅读时长 ≈ 6 分钟

如何用 js 自动登录 openlaw

先抓包分析一下登录的请求【图1-1】

分析加密参数

按照加密的参数,我们一个个分析。

首先是 _csrf ,这个参数比较简单,一般是用来防止跨域攻击的,感兴趣的朋友可以借助搜索引擎了解一下,不是重点我们就不详聊了。

直接检索 _csrf关键字,可以看到如图的结果,_csrf 在页面中传递过来的。【图2-1】

接着再分析 password , 直接检索 password 就可以找到关键的加密文件。【图2-2】

点进文件就可以看到密码的加密了【图2-3】,很明显是一个 RSA 和 AES 加密的结合。

我们简单扣取一下逻辑,运行一下结果。【图2-4】

既然能够生成密码值了就拿到了所有的加密参数了,现在整合到 Python 中看看。

Python 实现 Openlaw 登陆

之前没有学过 JS 逆向遇到登陆只会用 Selenium 模拟登陆,现在我们可以试试用 Python 直接搞起。

首先我们先生成加密后的密码:

def get_password():
with open(r"login.js", encoding="utf-8")as f:
js = f.read()
ctx = execjs.compile(js)
pwd = ctx.call("keyEncrypt", "密码")
return pwd

再看看整体的登陆逻辑是什么样的【图3-1】

可以看到先发起了请求1,提交了加密好的密码与账户名,并且携带上了csrf

之后是一个重定向请求【图3-2】

请求完上面的两个请求后,之后经过跳转就访问了我们的个人中心。

所以这里需要使用上session获取cookie并且禁止重定向

login_r = session.post("http://openlaw.cn/login", data=data, headers=headers,allow_redirects=False)

其他的部分只要使用session传递好cookie,在提交完数据后就可以访问个人中心了。【图3-3】

本篇文章其实想写很久了,但是遇到下面两个问题,我觉得有必要总结一下,方便大家避坑。

第一个问题,遇到一个报错ASN1 is not define 这是在JSEncrypt 这个加密库中报的错。

我一直以为是这个加密库的问题,因为在其他环境运行都没有问题,但是使用nodejs运行就会报错,之后通过定义window = global 解决了这个报错,之前我都是定义window = {}

感谢 @汪唔 老哥的帮助。

第二个问题,这个网站的账号很容易就被封了,所以在你运行代码时,最好先手动登陆一下看看账号是否被封禁,我就是拿了一个被封禁的账号测试了很久,一直以为是代码的问题。

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~
  • 本文作者: 煌金 | 微信公众号【咸鱼学Python】
  • 本文链接: http://www.xianyucoder.cn/2020/07/16/每日JS-openlaw密码/
  • 版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK