声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

网站

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

网站分析

要求:
我们话不多B 直接抓包看看
我们可以看到 这个value的值是加密的,大概率就是我们所要解密的数据了。
与此同时 还看见了有个值是woff。
说到woff,我之前也发过一篇博客https://www.cnblogs.com/zichliang/p/17408064.html
也是讲woff 动态字体的爬的是某点中文网。有兴趣的朋友可以看看。
说道这个value
一般的这种解密都有对应关系的。
比如:

'''
&#xb134 &#xb742 &#xb618 &#xb134
2  3 4 2
'''

也就代表着 &#xb134代表着2 &#xb742代表着3。这样就能搞出个映射关系,然后给他解密出来了。
那我们刷新一下看看这个 &#xb134是否还代表着2
很好 完全不一样。说明每次发起了一个请求就有一个编码的格式。

上文说到请求还返回给我们了一个woff。
woff的值好像有点像base64编码的。
一般来说网站都会附带一个woff的请求,我们找一下看看能不能找得到。

类似于这种的就是woff的请求,只不过这个请求经过了base64编码。而这个base64链接就是上文传给我们的woff的值。
而这个网页的value的编码也是一直在变的。也就代表每次都要去解析这个编码。才能完成解密。
我们首先下载下来这个woff 其次用FontCreator 去解析下这个woff。看看在 FontCreator中的映射关系。
【fontCreator官网: FontCreator 多功能字体设计制作编辑软件丨中文网站特价购买 点击免费下载 下载即可 有免费试用权限】
解析出来是这样的,再看看浏览器接口返回给我们的数据
发现这个3236 ==== &#xb673 &#xc427 &#xb673 &#xb982
可以发现 虽然前面不一样,但是后面这个abcdefg... + 数字编号是一样的。

而本题的要求是
所以我们还需要查找下召唤师名和胜点是如何对应的。我们打上断点。
可以看到 如下代码就是获取召唤师姓名的逻辑。 我们可以通过js 或者是python改写去获得。

let name = ['极镀ギ紬荕', '爷灬霸气傀儡', '梦战苍穹', '傲世哥', 'мaη肆風聲', '一刀メ隔世', '横刀メ绝杀', 'Q不死你R死你', '魔帝殤邪', '封刀不再战', '倾城孤狼', '戎马江湖', '狂得像风', '影之哀伤', '謸氕づ独尊', '傲视狂杀', '追风之梦', '枭雄在世', '傲视之巅', '黑夜刺客', '占你心为王', '爷来取你狗命', '御风踏血', '凫矢暮城', '孤影メ残刀', '野区霸王', '噬血啸月', '风逝无迹', '帅的睡不着', '血色杀戮者', '冷视天下', '帅出新高度', '風狆瑬蒗', '灵魂禁锢', 'ヤ地狱篮枫ゞ', '溅血メ破天', '剑尊メ杀戮', '塞外う飛龍', '哥‘K纯帅', '逆風祈雨', '恣意踏江山', '望断、天涯路', '地獄惡灵', '疯狂メ孽杀', '寂月灭影', '骚年霸称帝王', '狂杀メ无赦', '死灵的哀伤', '撩妹界扛把子', '霸刀☆藐视天下', '潇洒又能打', '狂卩龙灬巅丷峰', '羁旅天涯.', '南宫沐风', '风恋绝尘', '剑下孤魂', '一蓑烟雨', '领域★倾战', '威龙丶断魂神狙', '辉煌战绩', '屎来运赚', '伱、Bu够档次', '九音引魂箫', '骨子里的傲气', '霸海断长空', '没枪也很狂', '死魂★之灵'];$.each(data, function(index, val) {let ppo = mad;for (let imgnum = 1; imgnum <= 5; imgnum++) {ppo = ppo.replace('img_number', yyq * window.page + imgnum_arr[imgnum])}html += ppo.replace('九不想乖', name[yyq + (window.page - 1) * 10]).replace('win_number', imgnum_arr[yyq] * level_arr[window.page] * 88 + '场').replace(/win_rank/g, imgnum_arr[yyq] + 60 + level_arr[window.page] + '%').replace('random_level', imgnum_arr[yyq] * level_arr[window.page] + 100 * level_arr[window.page]).replace('img_number', yyq * window.page).replace('random_rank_number', val.value.replace(/ /g, '') + 'LP');yyq += 1;img_num += 1});

结论:

一个woff对应一个页面,对应一个解析规则。

步骤分析

既然我们知道了 如何去做,其实就很简单了
首先分一下步骤

  1. 请求接口 提取出woff的值
  2. 转换woff 转换成可视化的样式 并且使用fontTools转换成XML
  3. 提取刚刚请求的接口的value的值。
  4. 清洗刚刚提取出来的value 只保留后面的数字。(删除&#x)
  5. 使用库来解析woff文件转换为XML 再找到对应关系,映射起一张对应表。
  6. 按照对应表 与接口值映射从而获取真实数据。

以下提供两种找出映射关系的方法:

根据解析TTGlyph下的on标签 找出映射关系,然后手动写出映射关系。

通过解析两次不同的woff文件。可以发现 在TTGlyph下的on标签不变。如下图:
同事分析1这个数字所对应的字体码 分别是 b953b295
然后我们去xml文件中找相对应的 TTGlyph 下面的标签
可以看出 on标签是一直不会变的,也就意外这 on标签所对应的数字也是不会变的,所以我们可以得到下面这段映射关系。

map_number = {'10100100100101010010010010': '0','1001101111': '1','100110101001010101011110101000': '2','10101100101000111100010101011010100101010100': '3','111111111111111': '4','1110101001001010110101010100101011111': '5','10101010100001010111010101101010010101000': '6','1111111': '7','101010101101010001010101101010101010010010010101001000010': '8','10010101001110101011010101010101000100100': '9',}

然后再通过解析 name 和这个 on值再做一组映射表就可以拿到真正的映射关系表
最后再通过计算胜点最多那一组 找出召唤师 即可完成题目。

通过转换woff 为图片 然后使用ocr去识别

这种方法 是不被允许的,而且感觉有些太简单了,一般题目有要求不准如此。
这里就简单说一下。

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

  1. 猿人学web端爬虫攻防平台第七题动态字体

    本人呢很喜欢爬虫,但是技术不好,所以呢就一直慢慢的摸索着,也不知道那什么练手进行学习,直到我在偶然的机会接触到了猿人学,发现了 猿人学web端爬虫攻防平台这个网站,久旱逢甘霖,他乡遇故知呀(蹩脚的词语 ...

  2. js逆向系列之猿人学爬虫第17题-天杀的http2.0

    文章目录 1. 目标网站 2. 抓包分析 3. 编码测试 1. 目标网站 网址: https://match.yuanrenxue.com/match/17 2. 抓包分析 这道题目,叫天杀的http ...

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

    文章目录 1. 目标网址 2. 抓包分析 3. 编码测试 1. 目标网址 目标网站:猿人学web第13题 2. 抓包分析 浏览器打开无痕模式,看第一页数据包: 两个名叫13的包,第二个有数据,是请求了 ...

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

    案例目标 网址:第七题 动态字体,随风漂移 - 猿人学 本题目标:采集 5 页中胜点列的数据,找出胜点最高的召唤师,将召唤师姓名填入答案中 字体反爬 演变的基本阶段: 1. 固定字体编码.固定字体坐标 ...

  5. python爬虫进阶js逆向实战 | 爬取 破解某安部加速乐cookie

    很久没有写技术性的文章了,最近打算更新一系列的js逆向实战 今天的网站是某安部的一个加密cookie的分析跟破解 aHR0cHM6Ly93d3cubXBzLmdvdi5jbi9uMjI1NDA5OC9 ...

  6. OpenCV-python验证码识别之猿人学第八题

    目录 目标网站 下载图片 使用opencv处理图片 图片识别测试(百度aip) 目标网站 猿人学第八题 https://match.yuanrenxue.com/match/8 下载图片 打开F12调 ...

  7. 万字,入门教学,js逆向实战,某易云评论,歌词,(附源代码)仅供学习使用。

    js逆向教学,+qq群652543917 以网易云音乐    ​​​​​为例 按f12查看源码 刷新 然后找到歌词,评论各自所在的包 发现json数据基本都在这些后缀为csrf_token的包里面 经 ...

  8. 19、猿人学第四题:雪碧图、样式干扰【Post/Js逆向笔记】

    目标网址 https://match.yuanrenxue.com/match/4 逆向题目 采集这5页的全部数字,计算加和并提交结果 开始分析 打开chrome浏览器 打开开发者工具后,清除缓存,然 ...

  9. JS逆向实战1——某省阳光采购服务平台

    分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...

最新文章

  1. linux中普通文件和块设备文件的区别
  2. 类与类之间关系,用C#和JavaScript体现
  3. 计算机网络期末考长沙学院,校内用-第二套计算机网络试卷A..doc
  4. 【opencv图像基础】图像常见的通道模式:RGB、YUV、HSV
  5. 基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的智慧养老管理系统
  6. oracle新建一个用户_Kettle 连接oracle将数据保存到Excel
  7. sql 一次性批量插入_考虑使用SQL批量插入的安全性
  8. feign hystrix 线程池伸缩控制
  9. 手机便携版_智能体验醇音随行 哈曼卡顿音乐琥珀便携版评测
  10. android 权限问题吗,Android 6.0前后权限问题
  11. 计算机中用于描述音乐乐曲并,计算机中用于描述音乐乐曲并由声卡合成出音乐来的语言(规范)为。...
  12. 企业全面运营管理沙盘模拟心得_企业经营沙盘模拟心得总结
  13. PAT甲级准备历程及经验教训总结
  14. 2021齐齐哈尔实验中学高考成绩查询,齐齐哈尔名列前茅的4所高中,成绩一目了然,谁是市内最强中学?...
  15. 启动VMware虚拟机显示:物理内存不足无法使用
  16. MS coco数据集下载链接
  17. [Python随笔]暴力解解决“崩铁”的引航罗盘解密
  18. 解决因蓝牙驱动版本问题无法升win10问题 (附 WIN7升级WIN10超详细步骤 及 升级后个别问题软件处理方法)
  19. OpenGL和OpenCV
  20. C# 里面的 #region 是什么意思 以及partial 作用

热门文章

  1. 最强蜗牛击败毁灭机器人_最强蜗牛恶魔形态所有阶级详解_恶魔形态介绍
  2. MVC基础和HTTP
  3. 基于php+mysql的医保管理系统
  4. 掌阅公布数字阅读报告:00后成第二大阅读群体
  5. 阿里达摩院python教程真的吗_阿里达摩院特供最新172G的python教程,据说懂中文就能入门高清版...
  6. SEO新手入门系列2022(六):站内SEO内容篇
  7. 李宏毅《机器学习》笔记 DAY1
  8. [销售易] 报价单,结算单最高限价
  9. 华为悦盒EC6108V9C变小型服务器和NAS
  10. linux gpio 模拟串口,STM32的GPIO口模拟串口通信.rar