上一主题 下一主题
返回列表 发新帖

猿人学第一题js混淆加密

[复制链接]

93

主题

269

帖子

691

积分

高级会员

Rank: 4

积分
691
发表于 2020-12-30 20:39:27 | 显示全部楼层 | 阅读模式

image.png

抓取机票价格,计算平均值。

先说一下自己的思路,价格源码没有毫无疑问肯定是向服务器发送了一个请求,然后返回回来价格列表,我们只需要将返回的数据,取出我们所需要的价格计算即可。

首先,打开开发者工具,进行抓包。

image.png

debug直接跳过就可以不影响我们后面的操作。

image.png

刷新,通过简单的分析我们看到了这条请求,看一下返回的数据。

image.png

是我们需要的价格,看一下这个链接:http://match.yuanrenxue.com/api/match/1?m=42532d8cc5d339a5b8a434a7c282e53d%E4%B8%A81609426851

后面参数m有一个简单的加密,经验告诉我去解码看一下这条链接。

image.png

%E4%B8%A8是符号“|”,多次抓包发现每次都携带这个符号,开发者工具中搜索这个符号。

image.png

image.png

可以看到只有一条包含这个符号,进入js文件分析一下。

这是一整行代码,观察分析起来非常不方便,了解到notepad++里面自带插件jstool对它进行格式化,之后进行观察。

image.png

这样观察起来就方便很多。

image.png

找到了m所在位置。

var m = oo0O0(timestamp.toString()) + window.f;

oo0O0()猜测是一个函数

timestamp.tostring()时间戳转字符串

window.f 窗口调用f,f是啥玩意....我也不知道,先不管。先分析都是圈圈的那个函数。

搜素oo0O0这个函数 找到了两处 一处是function oo0O0() 另外一处就是我们m调用的这个函数

image.png

花里胡哨的返回了一个空.....

var m = window.f;

源码中搜索window.f

image.png

源码中没有找到这个window.f具体是什么东西....搜索方式可能不对,但是肯定不可能单独搜索f不然太多了。。

oo0O0()返回一个空,多少有点不太正常,我们回去重新看一下,发现在返回空上面那一行出现了

eval(atob(window['b'])[J('0x0', ']dQW')](J('0x1', 'GTu!'), '\x27' + mw + '\x27'));

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

eval中有一个函数atob()

atob() 方法用于解码使用 base-64 编码的字符串。

我们将atob(window[’b‘])在console里面跑一下

image.png

稍微有点经验都可以看出来这是md5加密的算法

image.png

md5算法的最后我们看到了window.f ,window.f就是将“mwqqppz”进行md5加密之后的值,mwqqppz这是啥玩意....我也不知道

将eval函数后面的J('0x0', ']dQW')扔进console看一下。

image.png

j是在oo0O0函数里面定义的,我们先运行oo0O0函数的代码定义一下这个J 然后再去跑这个J('0x0', ']dQW')

image.png

我们看到window.f里面进行md5计算的字符串出来了 是这个代码J('0x1', 'GTu!')

'\x27' + mw + '\x27'

这个为什么会找不出来值呢

image.png

我们可以看到'\x27'就是个单引号 至于mw是OOOOOO函数传进来的参数,

我们知道eval函数里面各种东西的意思之后,我们把我们取出来的值替换观察一下。

eval(atob(window['b'])[J('0x0', ']dQW')](J('0x1', 'GTu!'), '\x27' + mw + '\x27'));

eval(atob(window['b'])['replace']('mwqqppz', 'mw'));

这个的大概意思就是....将atob(window['b']里面的'mwqqppz'文本替换为 'mw',也就是替换成传入的参数--时间戳。

我们捋一下思路看一下,

var timestamp = Date.parse(new Date()) + 100000000;

var m = oo0O0(timestamp.toString()) + window.f;

var m = window.f

var m =hex_md5(mwqqppz)

var m = hex_md5(mv)

var m = hex_md5(timestamp)

放进调试工具调试看看。

我们的初始链接:http://match.yuanrenxue.com/api/match/1?m=42532d8cc5d339a5b8a434a7c282e53d%E4%B8%A81609426851

image.png

带入我们刚才的时间戳验证一下 经过计算 m的值得到了。

剩下的就是写代码了,用e 的话可能5分钟可以搞定,但是为了练习自己的python用python尝试写一下看看。

根据了解python可以用过execjs来执行js文件,我们讲创建js文件然后调用这个js得到加密后的数据使用即可。

image.png

计算成功python代码不做解释代码如下:

import requests
import execjs
import time

def Get_md5_value():
    #读取JS文件
    with open('JS/JS.js',encoding='utf-8',mode='r') as f:
        JSdata = f.read()
    #加载JS文件,通过call()传入我们需要调用的函数
    psd = execjs.compile(JSdata).call('get_cipher')
    psd = psd.replace('丨','%E4%B8%A8')
    return psd

def Get_data(page_number,md5):
    url = 'http://match.yuanrenxue.com/api/match/1?page='+str(page_number)+'&m='+md5
    headers = {
        'Host': 'match.yuanrenxue.com',
        'Referer': 'http://match.yuanrenxue.com/match/1',
        'User-Agent': 'yuanrenxue.project',
    }
    res = requests.get(url=url,headers=headers)
    return res.json()

if __name__ == '__main__':

    sum_num = 0
    index_number = 0
    for page_number in range(1,6):
        info = Get_data(page_number,Get_md5_value())
        price_list = [i['value'] for i in info['data']]
        print(f'第{page_number}的价格表{price_list}')
        sum_num += sum(price_list)
        index_number += len(price_list)
        time.sleep(1)
    average_price = sum_num/index_number
    print(f'机票的平均价格为{average_price}')

注:借鉴了大佬思路.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Vx:rsnhkx2015  公众号:陈公子的话
回复

使用道具 举报

93

主题

269

帖子

691

积分

高级会员

Rank: 4

积分
691
发表于 2020-12-30 20:40:21 | 显示全部楼层
这图片我也是....没整明白....咋就成这了....
Vx:rsnhkx2015  公众号:陈公子的话
回复

使用道具 举报

44

主题

431

帖子

623

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
623
发表于 2020-12-31 09:36:31 | 显示全部楼层
小陈 发表于 2020-12-30 20:40
这图片我也是....没整明白....咋就成这了....

markdown的原因....修复了应该就好了
上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
回复

使用道具 举报

3

主题

18

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2020-12-31 12:35:47 | 显示全部楼层
果然这个论坛里除了我是fw其他都是大佬
回复

使用道具 举报

93

主题

269

帖子

691

积分

高级会员

Rank: 4

积分
691
发表于 2020-12-31 13:55:04 | 显示全部楼层
StudyMaker 发表于 2020-12-31 12:35
果然这个论坛里除了我是fw其他都是大佬

哥哥谦虚了
Vx:rsnhkx2015  公众号:陈公子的话
回复

使用道具 举报

发表回复

本版积分规则

快速回复 返回顶部 返回列表