爬虫逆向:猿人学js逆向第七题

猿人学web端爬虫攻防大赛赛题解析_第七题:动态字体,随风漂移 动态字体,随风漂移一、前言二、分析过程 一、前言 上一道字体反扒的css加密题还是第四题,不过那道题主要还只是做了个数字的坐标偏移,逻辑分析起来不算难,这道动态字体的题算是真正的字体反扒题,做了一下感觉挺长见识的,对于了解同类型字体加密有不小帮助,闲言少叙,开搞! 二、分析过程 题目的要求是采集胜点列的数据,找出胜点最高的召唤师,那加密的数据肯定就是胜点数据了,核心应该是解析出胜点值,其次就是将这个值与对应的召唤师匹配,最后比较五十个玩家的胜点,找出胜点最高那一个。 这里仔细观察一下,可以发现胜点数字的字形 阅读详情

创建main.py

import requests
import base64
from lxml import etree
from fontTools.ttLib import TTFont
def get_data_font(page):
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
    }
    url = "https://match.yuanrenxue.cn/api/match/7"
    params = {
        "page": page
    }
    resp = requests.get(url, headers=headers, params=params)
    resp_json = resp.json()
    data_list = resp_json["data"]
    #获取字体加密数据并保存
    font_file = base64.b64decode((resp_json['woff']))
    with open('match_07_.ttf', 'wb') as f:
        f.write(font_file)
    #转换格式 : ttf-->xml 方便观察
    font_obj = TTFont('match_07_.ttf')
    font_obj.saveXML('match_07_.xml')
    return data_list

def parse_data(data_list, page):
    #构造on的映射字典
    xml = etree.parse('match_07_.xml')
    uni_to_on = dict()
    for obj in xml.xpath('//TTGlyph'):
        on = obj.xpath('.//pt/@on')
        value = ''.join(on)
        key = obj.xpath('.//@name')[0]
        uni_to_on[key] = value
    # print(uni_to_on)
    #修改机密数字操作
    yyq = 1
    for data in data_list:
        info = data['value'].split(' ')[:-1]
        info = [i.replace('&#x','uni') for i in info]
        # print(info)
        data_end = ['0'] * len(info) #创建空列表
        for index in range(len(info)):
            data_end[index] = on_to_num[uni_to_on[info[index]]]
        all_data.append(''.join(data_end))
        # print(data_end)
        name_data.append(name[yyq + (page - 1) * 10])
        yyq += 1

if __name__ == '__main__':
    on_to_num = {
        # '111' : '.notdef',
        '10100100100101010010010010' : '0',
        '1001101111' : '1',
        '100110101001010101011110101000' : '2',
        '10101100101000111100010101011010100101010100' : '3',
        '111111111111111' : '4',
        '1110101001001010110101010100101011111' : '5',
        '10101010100001010111010101101010010101000' : '6',
        '1111111' : '7',
        '101010101101010001010101101010101010010010010101001000010' : '8',
        '10010101001110101011010101010101000100100' : '9',
    }
    all_data = []
    name_data = []
    name = ['极镀ギ紬荕', '爷灬霸气傀儡', '梦战苍穹', '傲世哥', 'мaη肆風聲', '一刀メ隔世', '横刀メ绝杀', 'Q不死你R死你', '魔帝殤邪', '封刀不再战', '倾城孤狼', '戎马江湖', '狂得像风', '影之哀伤', '謸氕づ独尊', '傲视狂杀', '追风之梦', '枭雄在世', '傲视之巅', '黑夜刺客', '占你心为王', '爷来取你狗命', '御风踏血', '凫矢暮城', '孤影メ残刀', '野区霸王', '噬血啸月', '风逝无迹', '帅的睡不着', '血色杀戮者', '冷视天下', '帅出新高度', '風狆瑬蒗', '灵魂禁锢', 'ヤ地狱篮枫ゞ', '溅血メ破天', '剑尊メ杀戮', '塞外う飛龍', '哥‘K纯帅', '逆風祈雨', '恣意踏江山', '望断、天涯路', '地獄惡灵', '疯狂メ孽杀', '寂月灭影', '骚年霸称帝王', '狂杀メ无赦', '死灵的哀伤', '撩妹界扛把子', '霸刀☆藐视天下', '潇洒又能打', '狂卩龙灬巅丷峰', '羁旅天涯.', '南宫沐风', '风恋绝尘', '剑下孤魂', '一蓑烟雨', '领域★倾战', '威龙丶断魂神狙', '辉煌战绩', '屎来运赚', '伱、Bu够档次', '九音引魂箫', '骨子里的傲气', '霸海断长空', '没枪也很狂', '死魂★之灵']
    for page in range(1, 6):
        data_list = get_data_font(page)
        # print(data_list)
        parse_data(data_list, page)
    print(all_data)
    print(name_data)
    max_index = all_data.index(max(all_data))
    print(name_data[max_index])

第一届猿人学爬虫比赛1-20题题解 猿人学第一届Web端反混淆攻防赛1-20题题解 阅读详情

相关推荐

猿人学web端爬虫攻防大赛赛题解析_第六题:js 混淆 - 回溯

第六题:js 混淆 - 回溯1、前言2、题目理解3、加密原理解析3.1、加密位置判断3.2、解密_萌新试错版3.3、解密_老手经验版4、代码实现过程4.1、坑一:风控不通过4.2、坑二:参数q设置有误4.3、完全体代码5、结语6、参考文献 1、前言 万万没想到,距离上次做完第四题之后,再次动手写猿人学赛题解析的博客已经是四个多月之后了。其中各种艰辛,难以言表,只能说逆向这鬼东西水太深了,要掌握的各种知识和骚操作是真的不少,奈何自己人菜瘾还大,不信邪非要靠自己手撕代码,想在不借助外力的情况下,自己把代码还原出

仙路尽头谁为峰 1772

【JavaScript 逆向】猿人学 web 第七题:动态字体,随风漂移

猿人学练习平台 web 比赛第七题:动态字体,随风漂移,css 字体反爬,动态文件、动态坐标、动态编码、微变字形

Yy_Rose的博客 3627

JS逆向系列之猿人学爬虫第6题-js混淆-回溯

JS逆向系列之猿人学爬虫第6题

自成背后的博客 6251

JS逆向实战17——猿人学第七题 动态字体 随风漂移

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 https://match.yuanrenxue.cn/match/7 网站分析 要求: 我们话不多B 直接抓包看看 我们可以看到 这个value的值是加密的,大概率就是我们所要解密的数据了。 与此同时 还看见了有...

有什么问题回复不及时,可以私聊我。也可以加我的星球:知识爬行者 792

JS逆向之猿人学爬虫第20题-wasm

JS逆向之猿人学爬虫第20题-wasm

自成背后的博客 9156

JS逆向系列之猿人学爬虫第4题-雪碧图-样式干扰

猿人学爬虫攻防赛第4题

自成背后的博客 5430

猿人学第七题-动态字体-随风漂移

最后有一点网页里名字的索引是从1开始的,所以point的最大值索引要+1才是名字的索引。通过这两步可以建立初始化的name与num列表。

zhuangjoo的博客 699

JS逆向系列之猿人学爬虫第7题-动态字体,随风漂移

JS逆向系列之猿人学爬虫第7题-动态字体,随风漂移

自成背后的博客 5935

14.Vue网络请求:axios

简介 Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。 Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。   请求方法的别名 为方便使用,官方为所有支持的请求方法提供了别名,可以直接使用别名来发起请求: axios.request(config) axios.get(url[, config]) axios.delete(url[, config]) axios.head(url[, config]) axios.post(u

高新园养鸡场 556

JS逆向系列之猿人学爬虫第5题

猿人学爬虫攻防赛web第5题乱码增强

自成背后的博客 6364

JS逆向系列之猿人学爬虫第3题-访问逻辑-推心置腹

猿人学第3题题解

自成背后的博客 6115

【猿人学WEB题目专解】猿人学第6题

第六题 js 混淆 回溯 - 猿人学

user_from_future的博客 1万+

猿人学第一届

本文记录了作者通过抖音博主启发,尝试对猿人学网站第一题进行JS逆向分析的过程。作者首先定位到数据接口,构建Python请求后发现参数m需要逆向破解。通过启动器跟栈分析找到混淆的JS代码,使用在线工具解混淆后,解析出加密逻辑:参数m由时间戳、特定算法生成的值和固定值组合而成。文章详细展示了从接口定位到代码解混淆的完整逆向思路,为初学者提供了清晰的JS逆向学习路径。

m0_71937380的博客 1203

猿人学·爬虫逆向高阶课

我跟 virjar 出了一套爬虫课(猿人学·爬虫进阶培训课),包含:安卓逆向抓取、JS 高阶逆向抓取、安卓群控抓取、容器定制化等。 实际上我去年就在做这个爬虫课了,一直没有放到网课平台上公开宣传,但是也有多位同学信任我,跟着我在精进爬虫技术。 今年 virjar 大佬加入,我俩一起做这个爬虫课,目标是做一套成体系和有竞争力的爬虫高阶课。 | 课程内容 | 爬虫技术进阶体现在反爬对抗和规模化抓取上。 目前网页的对抗难度上限是跟浏览器特征绑定的高度混淆 JS 和验证码拖拽等;APP 的加固,SO 混淆,抓包和

小猿猿的博客 7449

3D点云目标检测Complex-YOLO(训练篇)(一)———KITTI数据集预处理与制作

KITTI dataset Download dataset KITTI 3D Object Detection Evaluation 2017 link 下载四个部分,共41.4GB 解压后为四部分内容(相机校准矩阵calib、RGB图像image_2、标签label_2、点云数据velodyne) 对应的testing和training数据。其中,training数据为7481张(图片和点云对应的场景),testing数据 7518张(无label_2数据)。 Data Preprocess

“知识最大的敌人不是无知,而是错觉” 7152

Docker部署 SRS rtmp/flv流媒体服务器

SRS(Simple Realtime Server)是一款开源的流媒体服务器,具有高性能、高可靠性、高灵活性的特点,能够支持直播、点播、转码等多种流媒体应用场景。SRS 不仅提供了流媒体服务器,还提供了适用于多种平台的客户端 SDK 和在线转码等辅助服务,是一款十分强大的流媒体解决方案。

m0_56659620的博客 4869

js逆向系列之猿人学爬虫第13题

文章目录1. 目标网址2. 抓包分析3. 编码测试 1. 目标网址 https://match.yuanrenxue.com/match/13 2. 抓包分析 浏览器打开无痕模式: 可以看到第一页数据包。 两个名叫13的包,第二个有数据,是请求了一个api接口,第一个推断应该是加载了cookie。 点一下第二页: 发现抓不到这个包,说明有cookie验证。 我们不用无痕窗口看一下第二页: 发现是可以看的,所以接下来我们的解决思路就有了,我们先直接对这个网站发请求: import request

自成背后的博客 5968

华为硬件逻辑岗笔试题(一)

积少成多,集腋成裘,坚持!!! 目录 1. 进制转换 2. 状态机和编码方式 3. 存储器的分类 4. Verilog语法中的操作符 5. 对组合逻辑的认识 6. 对时序逻辑的认识 7. 竞争冒险的认识 8. 基本时序逻辑电路 9. 建立时间和保持时间 10. 同步时序电路 11. 组合逻辑和时序逻辑判断 13. 基本总线的理解 14.加法器 15.FPGA开发工具 1. 进制转换 1、十进制46.25对应的二进制表达式为( )。 A 101110.11...

qq_42235129的博客 1万+

猿人学第二届-第一题 逆向分析详解

这道题主要考验读代码的能力。代码无强混淆,逻辑基本都能看通。理解自定义模块加载器的作用认识到魔改加密函数的存在正确补入浏览器环境通过路由函数监控环境调用仔细阅读代码找出环境检测逻辑整个逆向过程需要耐心分析,不能盲目补环境,要结合实际代码逻辑进行针对性处理。

CCpps的博客 1333

保姆级教学,教你在vscode和cursor上调试matlab!!!

保姆级教你如何在vscode或者cursor上面调试matlab

yang_upup的博客 2083

法兰克仿真软件FANUC CNC Guide v25.0 安装教程及中文设置

下载地址在文末。我们公司用新到一批FANUC 系统的设备,为方便使用就装了一个 FANUC 数控系统仿真软件FANUC CNC Guide v25.0 ,还是最新版不是市面上流传的老版本。模拟学习一下。

hakesashou的博客 1万+

JS逆向系列-猿人学web第一题

JS逆向系列-猿人学web第一题 富有的,给他更多;没有的,把他仅有的也拿走。 爬虫真是一个有意思的东西,简单的页面,不费力就能爬取,复杂的页面,费尽心思也不知如何爬取。就像玩游戏,刚开始时在新手村砍稻草人,等出了新手村,你面对的直接就是最终boss。 最近有点喜欢爬虫js逆向了,喜欢那种被虐的死去活来,悲痛欲绝的感觉(没错说的就是你,只狼)。 最近学习爬虫,发现网上免费的资料教程,要么很简单,在headers中添加user-agent就能爬取,要么很高深,照着读了好几篇也搞不懂到底是怎么实现的,并且还

sinat_41715275的博客 512

华为OD机试真题 新系统 9月16号 【统计特殊数字】

华为OD新系统机试真题【统计特殊数字】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【统计特殊数字】。

qq_45776114的博客 771

猿人学第二题

猿人学第二题

2301_79699440的博客 1737

OpenHarmony之Histreamer引擎深度解析:pipeline_core架构如何全面取代GStreamer,一统音视频播放与录制

Histreamer是OpenHarmony多媒体框架的核心媒体引擎,采用架构设计。一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。1.播放场景分为如下几个节点:数据源读取、解封装、解码、输出;2.录制场景分为如下几个节点:数据源读取、编码、封装、输出。该引擎从OH5.0开始取代了原有的媒体引擎gstreamer(部分文档还保留较老架构的讲解),提供统一的音视频播放、录制、元数据解析等能力。

m0_67505153的博客 333

使用 ABAP 代码动态创建新的 Function Module

通过内表。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6907
上一篇: 爬虫逆向:猿人学js逆向第六题
下一篇: 让Pycharm的Terminal进入创建好的虚拟环境
Byh2001
博客等级 码龄5年 91粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值