首页 > 其他分享 >js逆向实战之集思录登录参数加密解析

js逆向实战之集思录登录参数加密解析

时间:2024-04-30 10:36:38浏览次数:24  
标签:加密 name url js user key 集思录 data

url:https://www.jisilu.cn/account/login/

分析过程

  1. 输入用户名和密码,抓包。(因为是测试,输入的账号和密码都是123456)
    image
    可以看到用户名和密码都被加密了,且是被同一种加密算法加密的。

  2. 搜索关键词user_name,有很多条记录。
    image
    一个一个看,很快就可以确定加密的位置。
    image

  3. 打断点,重新登录触发断点。
    image

  4. 先输出原始的user_namepassword,都是明文。
    image

  5. 当经过data['user_name'] = jslencode(data['user_name'], key)的执行后,user_name就被加密了,说明加密逻辑就在这行代码中。
    image

  6. 看下key是什么,在该文件中搜索key就可以找到定义的位置。
    image
    image
    两个key的值是一致的,采用的是同一个。

  7. 找到jslencode的定义位置。
    image

  8. 老朋友,AES算法,找到keyivmode即可。打断点,运行进来。
    image

  9. key就是传进来的397151C04723421Fiv是个空值,要加密的字符串是我们传入的用户名和密码,这些都经过utf-8的编码;modeECB
    image

  10. 编写python代码处理,登录还涉及到了验证码的识别。

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import json
import requests
import ddddocr  # 导入打码平台库

sess = requests.session()

img_url = "https://www.jisilu.cn/account/captcha/5612"  # 图片验证码的地址
resp1 = sess.get(img_url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ("
                                                     "KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"})

with open("verify_code.png", mode="wb") as file_object:
    file_object.write(resp1.content)

ocr = ddddocr.DdddOcr()
result = ocr.classification(resp1.content)  # 识别图片验证码
print(result)

verify_url = "https://www.jisilu.cn/webapi/account/check_code_verify/"  # 验证码检查的地址
resp2 = sess.post(verify_url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ("
                                                     "KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36", "Referer":
                                           "https://www.jisilu.cn/account/login/"},
                  data={"code_verify": result})
print(resp2.text)

url = "https://www.jisilu.cn/webapi/account/login_process/"

key = "397151C04723421F".encode("utf-8")
iv = ""
username = input("请输入用户名:")
password = input("请输入密码:")

aes = AES.new(key=key, mode=AES.MODE_ECB)
username = pad(username.encode("utf-8"), 16)
user_name = aes.encrypt(username).hex()
password = pad(password.encode("utf-8"), 16)
pass_word = aes.encrypt(password).hex()
print(user_name, pass_word)

json_data = {
    "return_url": "https://www.jisilu.cn/",
    "user_name": user_name,
    "password": pass_word,
    "aes": 1,
    "auto_login": 0,
    "code_verify": result,
}

data = json.dumps(json_data)
resp = sess.post(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, "
                           "like Gecko) Chrome/123.0.0.0 Safari/537.36"}, data=data)

print(resp.text)

不知道为什么验证码检查那里返回的内容一直不对,导致利用python进行登录不成功,若下次找到问题所在再进行改进

标签:加密,name,url,js,user,key,集思录,data
From: https://www.cnblogs.com/sbhglqy/p/18167308

相关文章

  • SpringBoot的JSR303校验
    关于JSRJSR是JavaSpecificationRequests的缩写,意思是Java规范提案。是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。关于JSR-303JSR-303是JAVAEE6中的一......
  • Babel与core-js
    1.Babel是把ES6的语法转成ES5比如:const、箭头函数、...(结构)、模板字符串等等Babel原理转译分为三阶段:解析(Parse),将代码解析⽣成抽象语法树AST,也就是词法分析与语法分析的过程转换(Transform),对语法树进⾏变换方面的⼀系列操作。通过babel-traverse,进⾏遍历并作添加、更新、......
  • vue.js 3 初学经验:开发环境搭建,Windows,nginx
    Windows11nginx-1.20.0"vue":"^3.4.21"--- 序章vue3开发,不需要后端服务业是可以的。在需要后端服务时,使用nginx来转发请求是很好的(个人开发者)。 注,还有什么其它方式吗?注,本文的后端服务是使用Java开发的HTTP接口。注,参考资料#2介绍了多个vue.js3.0项目......
  • 给Qt搭建一个简单的Json服务器用于软件调试
    一.vscode+nodejs+npm安装二.nodejs服务器开启打开vscode-终端-新建终端进入json_server目录cdD:\json_server运行启动命令,启动json-server服务器npmrunjson:server效果如下:PSD:\json_server>npmrunjson:server>[email protected]:se......
  • aes加密解密
    packagecom.hcp.utils.config;importorg.apache.commons.codec.digest.DigestUtils;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjavax.crypto.Cipher;importjavax.crypto.spec.SecretKeySpec;importjava.security.SecureRandom;/*......
  • rsa加密解密
    packagecom.hcp.config.rsa;importorg.bouncycastle.util.encoders.Base64;importjavax.crypto.Cipher;importjava.security.*;publicclassRsaUtil{/***公钥*/privatestaticPublicKeypublicKey;/***私钥*/private......
  • html-docx-js 导出word
    1:列表页面按钮<el-buttontype="warning"plainicon="el-icon-download"size="mini"@click="exportWorddata">导出word</el-button> <......
  • 视野修炼-技术周刊第82期 | Node.js v22
    欢迎来到第82期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • JS代码混淆
    开源代码混淆加密JJEncodeAAEncodeJSFuckhttps://www.sojson.com/ 首先拿一段示例代码functionaa(){console.log('123');}aa();控制台中输出会显示123。 aaencode加密结果゚ω゚ノ=/`m´)ノ~┻━┻//*´∇`sojson.com*/['_'];o=(゚ー゚)=_=3;c=(゚Θ゚)=(゚ー゚)-(゚ー゚);......
  • 零知识证明与同态加密:隐私计算的双剑
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。在数字时代,隐私保护已成为全球关注的焦点。隐私计算作为解决数据隐私问题的关键技术,其核心目标是在不泄露个人或敏感信息的前提下,实现数据的计......