JS逆向——抠代码练习

7 篇文章 3 订阅
5 篇文章 1 订阅
本文介绍了如何通过开发者工具分析一个加密网站的异步请求,利用断点定位JS加密代码,并通过跟随堆栈找到加密逻辑。作者提供了部分JS代码示例,讲解了如何模拟生成或直接提取加密函数来获取加密数据,适合对JS逆向和Python爬虫感兴趣的学习者。
摘要由CSDN通过智能技术生成

练习网站:某省投资项目平台(注:本教程只用来分享逆向技术)

网站分析:

点击网站翻页,在控制面板中可发现,数据是通过异步请求接口传入的

遇到加密网站,一般我们都会先试一下能不能搜出来字段值的入口。显然这个网站没有搜到(像这种单字母的值基本上排除这种办法找入口)

 那么,我们就要想办法定位到其中一个加密字段所在的js文件的栈位置。根据自己的经验,我选择通过开发者工具中的initiator启动器快速定位到js发送请求的位置

 如图

 然后在这个位置打上断点,点击翻页,使新一页请求的数据断到这行代码

 成功断住之后,我们就可以顺着堆栈结构往上跟。如果大家是新手的话,建议大家跟栈的时候一步一步的跟,可能跟栈会自己枯燥,但是肯定能准确定位到加密位置。经过跟栈,我定位到了加密所在js文件,因为在这里已经能看到加密值,如图

 那么,具体的加密逻辑也就差不多在这里附近。然后我就往上看代码,终于,加密位置也被成功找到

 那就基本上找到治病药方了,接下来,大致读了一下js代码逻辑,我们就可以把这三个加密字段破解出来。具体怎么破,如果你完全熟悉他的js逻辑,那你就可以写python脚本去模拟生成;那如果你不想那么麻烦,你就完全可以抠出来代码,稍加改动,让其核心加密代码能够在你的js程序中运行就行了。具体抠代码如下:

function fjm_sdk() {
    // var curUrl = '/icity/api-v2' + "/" + 'jxtzxm.app.icity.ipro.IproCmd' + "/" + 'getDisplayListByPage';
    var curUrl = "";
    // var sig = "";
    var chars = "0123456789abcdef";
    var curTime = parseInt(Math.random() * (9999 - 1000 + 1) + 1000) + "" + Date.parse(new Date());
    sig = chars.charAt(parseInt(Math.random() * (15 - 15 + 1) + 10)) + chars.charAt(curTime.length) + "" + curTime;
    var key = "";
    var keyIndex = -1;
    for (var i = 0; i < 6; i++) {
        var c = sig.charAt(keyIndex + 1);
        key += c;
        keyIndex = chars.indexOf(c);
        if (keyIndex < 0 || keyIndex >= sig.length) {
            keyIndex = i;
        }
    }
    var timestamp = parseInt(Math.random() * (9999 - 1000 + 1) + 1000) + "_" + key + "_" + Date.parse(new Date());
    var tkey = "";
    var tkeyIndex = -1;
    for (var i = 0; i < 6; i++) {
        var c = timestamp.charAt(tkeyIndex + 1);
        tkey += c;
        tkeyIndex = chars.indexOf(c);
        if (tkeyIndex < 0 || tkeyIndex >= timestamp.length) {
            tkeyIndex = i;
        }
    }
    var t = timestamp;
    //LEx.azdg.encrypt(timestamp,key);
    t = t.replace(/\+/g, "_");
    curUrl += "?s=" + sig;
    curUrl += "&t=" + t;
    curUrl += "&o=" + tkey;
    return curUrl
}
console.log(fjm_sdk())

运行js文件,就能得到加密数据,接下来就能正常获取到网站数据了

 那么,今日的分享就到这里,想要学习更多的python爬虫和js逆向的相关技巧和知识的小伙伴们一定要点下关注哟,后期会不定时分享相关干货内容

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Crazy ProMonkey

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

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

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

打赏作者

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

抵扣说明:

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

余额充值