【2024-04-03】JS逆向之网易云音乐(私信、关注、点赞)

64 篇文章 93 订阅

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!


前言

目标网站:https://music.163.com/

注:看了下其他博主写的,咋说呢,都没有写全,checkToken这个参数是需要动态的,你可能hook下来的时候有用,但是过几分钟他就失效了。


一、页面分析

请求包里的两个参数params和encSecKey,是比较简单的,包含了AES和RSA的加密,其中里面的key是随机生成的

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。


二、抓包分析

1.主要加密方法分析

在这个JS里面嗷,直接定位到加密的位置,里面主要的是a、b、c方法,然后加密的参数主要是这个d
在这里插入图片描述

先说a、b、c这三方法吧,a断点进去就可以看到是一个16位的随机数
在这里插入图片描述

再看这个b,是一个AES的加密,其中key是a方法生成的16位随机数
在这里插入图片描述

c方法是一个RSA加密,16进制的公钥跟生成位数都已经有了,然后加密参数a是那个16位随机数,这里注意AES加密的key和RSA加密的参数,都是这个16位随机数(只生成一次)
在这里插入图片描述

2.加密的参数d分析

主要的加密方法已经知道了,然后需要这个加密后的参数,先来看看参数d里面有什么值吧,这里就直接讲了,不细说

password:MD5(原密码)
checkToken:根据环境加密生成的随机值

在这里插入图片描述

然后这里主要的是一个checkToken,由于他的生成方法里有时间戳,所以有一定的失效性,那总不可能失效了就在去hook吧。
追一下栈到这里,就是生成的位置了。

在这里插入图片描述

里面有两参数,其中C的值t是一个随机数,ka好像是固定的false
在这里插入图片描述

t的值是这里生成的,用了一个$b方法,我们进去瞅瞅看
在这里插入图片描述

也不知道啥玩意,反正到时候直接扣代码,现在控制台看看
在这里插入图片描述
是个32位的随机数
在这里插入图片描述

checkToken的加密参数已经分析好了,然后这个加密方法bc(),看看就行,到时候也直接扣。
在这里插入图片描述


三、模拟请求

在经过一系列的扣加密代码后,发送请求,看看结果是正确的
在这里插入图片描述

在这里插入图片描述

四、总结

绿泡泡:scorpio_a_j

在这里插入图片描述

# -*- coding: utf-8 -*-
'''
@File:      login.py
@SourceUrl: 
@Author:    阿J
@Date:      2021/4/2 16:34
@Software:  PyCharm
@Desc:
'''

import requests, execjs, hashlib

with open('./code.js', encoding='utf8') as f:
    js_fun = execjs.compile(f.read())

with open('./my.js', encoding='utf8') as f:
    xx = execjs.compile(f.read())


headers = {
    'authority': 'music.163.com',
    'pragma': 'no-cache',
    'cache-control': 'no-cache',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    'nm-gcore-status': '1',
    'content-type': 'application/x-www-form-urlencoded',
    'accept': '*/*',
    'origin': 'https://music.163.com',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://music.163.com/',
    'accept-language': 'zh-CN,zh;q=0.9',
}

session = requests.session()
session.get('https://music.163.com/#',headers=headers)

phone = ''
pwd = ''

# checkToken 为前环境生成的随机值
checkToken = xx.call('get_acToken')
print('参数checkToken:',checkToken)
password = hashlib.md5(pwd.encode(encoding='UTF-8')).hexdigest()
p1 = '{"phone":"'+phone+'","password":"'+password+'","rememberLogin":"true","checkToken":"'+checkToken+'","csrf_token":""}'

data = js_fun.call('d',p1)
print('加密后的data:',data)

response = session.post('https://music.163.com/weapi/w/login/cellphone', headers=headers, data=data)
print('登入信息:',response.text)

cookies = dict(session.cookies)
csrf_token = cookies.get('__csrf')
print('登入后的csrf_token:',csrf_token)



  • 65
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 51
    评论
回答: 在你的问题中,你遇到了一个错误,即"Error: Cannot find module 'crypto-js'"。这个错误是因为你的代码中引用了一个名为'crypto-js'的模块,但是系统找不到这个模块。\[3\]为了解决这个问题,你需要确保你已经正确安装了'crypto-js'模块,并且在你的代码中正确引用了它。你可以使用npm来安装'crypto-js'模块,命令如下: ``` npm install crypto-js ``` 安装完成后,你可以在你的代码中使用以下语句来引用'crypto-js'模块: ``` const CryptoJS = require('crypto-js'); ``` 这样就可以解决"Error: Cannot find module 'crypto-js'"的问题了。\[2\]希望这个解答对你有帮助。 #### 引用[.reference_title] - *1* *3* [爬虫 js逆向,调用js 第三方库报错:execjs._exceptions.ProgramError: ReferenceError: crypto-js is not ...](https://blog.csdn.net/weixin_41354919/article/details/116494736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [2020-1-5 爬网页17-js逆向入门(AES加密-对称加密,crypto,分组模式CBC,填充模式)](https://blog.csdn.net/weixin_42555985/article/details/103840701)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿J~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值