首页 > 其他分享 >百度翻译逆向Acs-Token逆向百度翻译爬虫(调试篇)

百度翻译逆向Acs-Token逆向百度翻译爬虫(调试篇)

时间:2024-06-16 21:31:40浏览次数:26  
标签:逆向 翻译 加密 value let key CryptoJS 断点 百度

文章声明

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除!

概要

- 该篇文章是基于translate接口的分析
- 用到的工具 Edge浏览器

逆向目标

求参数 Acs-Token

上一篇百度翻译是技巧篇,这篇来带着一步步找加密点

参数定位及逆向

  • 搜索Acs-Token并定位
    在这里插入图片描述

  • 发现p是由e.sent赋值的,那么我们就需要向上找e,这个时候有两种情况,

    • e是在其他分支中被赋值的
    • e是被当成参数传递的
  • 大致看完代码之后发现是第二种情况,然后打断点

在这里插入图片描述

  • 注意断点不要打在函数内部,要打在return Dv()这个位置,因为js中使用了大量的异步操作,很多值你正常跟是跟不到的

  • 既然e是被当成参数传递的,我们就看看他对这个函数都进行了什么处理,断点打在wrap然后单步进入

  • 先不要关心值在哪里, 先看看他想要干什么,知道他的目的之后就能找到值的位置

  • 一直往下跟,这是一个枯燥的过程,然后走到这里就开始做事情了

在这里插入图片描述

  • 进入i.HB方法,发现只执行了d方法,而该方法内部中出现了关键字眼sign这个时候我们就需要额外关注了

    在这里插入图片描述

  • 看到new Promise之后,就找e方法,看看该方法传递了什么参数(为什么看e?, 了解Promise之后你就明白了)

  • 最终断点落在了e(r)处,且r就是我们要的加密值,并且又看到了我们熟悉的acs文件
    在这里插入图片描述

  • 根据堆栈找r看看哪里都用到了这个加密值, 最终定位到这里
    在这里插入图片描述

  • 可以看到f就是加密值,打个断点,重新触发请求,在这里直接打断点会断下很多次,使用条件断点(typeof f == 'string' && f.length == 540), 540是我这里加密结果的固定长度

  • 断到之后可以发现r[a].get()是一个取值操作,而值是早已经生成过了, 在控制台看看r
    在这里插入图片描述

  • 发现r是一个数组,并且数组内对象的结构都是固定的{kind:0, value:xxxx}

  • 去搜索kind,kind附近一定有value, 找到了这两处,保险起见都打上条件断点,否则断点会很多

  • typeof e == 'string' && e.length == 540

  • 放开断点,重新触发请求
    在这里插入图片描述

  • 断到了第一个value,去找上一个堆栈,找到了(new t(i + o);)就是组成的value
    在这里插入图片描述

  • 发现o的值也是通过value的方式获取的,这个时候就要去修改前面的条件断点了

  • typeof e == 'string' && e.length == 512

  • 放开断点,重新触发请求
    在这里插入图片描述

  • 继续找上一个堆栈,看到这里应该很熟悉了把n.V = new t(o.apply(i, a));
    在这里插入图片描述

  • 进入到o函数,看见了很多老朋友
    在这里插入图片描述

  • 然后再往上看看代码,你会发现encrypt关键词, 这就和上一篇相呼应上了吧

  • 剩下就没啥东西了,到这里基本上就结束了

加密测试

- 测试的网站: https://tool.lmeee.com/jiami/aes

在这里插入图片描述

  • 解密时把前面的两个时间戳给去掉,_也别忘记了

JS实现

// 声明.我没有测试,大致模板就是这样,如果网站的加密结果和这个结果不一样,就在下面代码的基础上修改一下即可
// 安装插件
npm install crypto-js
const CryptoJS = require("crypto-js");

let key = CryptoJS.enc.Utf8.parse(key); 
let iv = CryptoJS.enc.Utf8.parse(iv); 
let info = {
    mode: CryptoJS.mode.CBC,
    iv: iv,
    padding: CryptoJS.pad.Pkcs7
}
// 加密
let encrypt = CryptoJS.AES.encrypt('明文', key,info);
let Data = encrypt.toString(CryptoJS.enc.Utf8);
console.log(Data);

 
 
//解密
let decrypte  = CryptoJS.AES.decrypt('密文数据', key, info);
let text = decrypte.toString(CryptoJS.enc.Utf8);
console.log(text);

贴一下我的名片

在这里插入图片描述

标签:逆向,翻译,加密,value,let,key,CryptoJS,断点,百度
From: https://blog.csdn.net/Not__Cry/article/details/139726675

相关文章

  • 百度202425
    #include<bits/stdc++.h>usingnamespacestd;#definelsu<<1#definersu<<1|1constintN=3e5+7;inta[N];structnode{intl,r,tag,odd[2],even[2];}tr[N<<3];intok;voidpushup(intu){tr[u].odd[0]=tr[ls].odd[0]+......
  • 百度云CDN怎么样?对新站有什么好处?
    百度云CDN是百度智能云提供的内容分发网络服务•优势:•收录快:小编在2024/6月份一共注册3个域名全部已备案,通过百度云CDN内容分发,大部分3天内收录仅限于WWW与根域名。•安全稳定:创新智能的安全防护思路,拒绝一刀切式的安全防护,引入深度学习引擎技术,守护财富安全。•......
  • python爬虫获取百度热搜
    注:本篇学习需要python基础前言:在上篇中,我们学习了怎么用python发送网页请求来获取网站的源代码,在这篇中,我们将进一步学习本篇目标:利用python爬虫获取百度热搜第一步,用浏览器打开百度热搜网站百度热搜网址https://top.baidu.com/board?tab=realtime页面如下:第二步,按下F12键......
  • 新网站如何把链接提交给百度搜索引擎
    新网站如何把链接提交给百度搜索引擎 很多新手或者刚接触的人,搭建好了网站,并没有百度蜘蛛或者其他的搜索引擎蜘蛛来抓取爬行,所以对于这样的新站,我们首先的是要提交给百度,不能坐等百度来找我们。工具/原料爱站工具网站链接数据百度站长工具方法......
  • 利用某些平台(聚合API、百度AI、科大讯飞API)的API接口,利用HTTP协议向服务器发送请求,并
    要使用C语言通过HTTP协议向服务器发送请求并接收响应,你可以使用如libcurl这样的库来发送HTTP请求。libcurl是一个免费且易于使用的客户端URL传输库,支持多种协议,包括HTTP。同时,为了解析服务器响应中的JSON数据,你可以使用cJSON库,这是一个轻量级的JSON解析库。以下是一个简单的示例......
  • PC微信逆向) 定位微信浏览器打开链接的call
    首发地址:https://mp.weixin.qq.com/s/Nik8fBF3hxH5FPMGNx3JFw前言最近想写一个免费的微信公众号自动采集的工具,我看公众号文章下载需求还挺多的。搜了下github,免费的工具思路大多都是使用浏览器打开公众号主页获取到需要的请求参数,例如key、uin等,然后再用参数请求历史。优化......
  • python运行js代码拿到逆向数据-execjs库
    #前提安装了node.js并且设置环境变量https://blog.csdn.net/bestyellow/article/details/119820509importsubprocessfromfunctoolsimportpartialsubprocess.Popen=partial(subprocess.Popen,encoding='utf-8')importexecjs#如果funcs_name是js代码里面的函数名字var代......
  • easyrecovery专业版破解无需注册绿色版免费下载 easyrecovery16数据恢复软件永久激活
    EasyRecovery(易恢复中国)是由全球著名数据厂商Ontrack®出品的一款数据文件恢复软件。支持恢复不同存储介质数据:硬盘、光盘、U盘/移动硬盘、数码相机、Raid文件恢复等,能恢复包括文档、表格、图片、音视频等各种文件。开发背景:全球领先的数据恢复解决方案提供商Ontrack近......
  • IBM DB2 和 Oracle SQLJ 翻译器在哪里?
    一年前我一直在开发一个Java项目,并使用CodehausMojoSQLJPlugin将.sqlj文件翻译为可访问的Java类。由于我保存了旧的版本库,我看到以下<plugin>被插入到我的pom.xml中:<plugin>?<build>;<插件>;<plugin>;<groupId>o......
  • 110.网络游戏逆向分析与漏洞攻防-装备系统数据分析-装备与技能描述信息的处理
    免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了内容参考于:易道云信息技术研究院上一个内容:109.商店与捨取窗口数据的处理码云版本号:4275a0966772e3fd4941ee......