吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11298|回复: 108
上一主题 下一主题
收起左侧

[Web逆向] 记一次实习僧雪碧图字体加密反爬

  [复制链接]
跳转到指定楼层
楼主
wangguang 发表于 2022-8-19 20:23 回帖奖励
本帖最后由 wangguang 于 2022-8-19 20:26 编辑

网站:aHR0cHM6Ly90dWlndWFuZy5zaGl4aXNlbmcuY29tLw==
思路:分析精灵图—>查找定位样式—>分析定位样式规律—>分析代码—>构建替换字典—>敲代码


1.分析精灵图+查找定位样式

分析css代码,每隔一个数字定位数越来约大,第一个和第七个都是0其定位值却不一样。

我们尝试将定位值修改为0看看是多少,修改之后便可知道定位值为0的图片显示为1

再尝试把图片调试显示为二,便可知道图片一和二的值差为-30,再把图片的值修改为三就能看出真实定位值为-30.或者30





2.分析定位样式规律
由上面图可知,定位的真实值为-30或者30,因为图片在y轴0往上30个像素(正)就是从1变成0,而在y轴往下30个像素就是从1变成2
而我们现在要寻找的便是定位样式的规律,他们混淆的定位像素如何变成我们所能看懂的定位像素,比如-2070px与30px有什么关系,又与-270有什么关系。他们的图片显示都是图片0,像素却不一样。
当然规律不是凭空出现的,我们便要分析他们的代码找到规律。




3.分析代码
我这次选择的是最常用的搜索法!

发现有三个webpackJsonp文件,webpack必定有个模块加载器,我们可以在几个文件里面搜索关键词call或者apply
但是搜索之后发现有些文件不仅搜不出有的文件搜出来了也不是我们想要的。

那便继续从这些文件里面搜索background-position,毕竟混淆定位值才是我们想要拿的值。

可以看到里面有个background-position,并且下面有个热门职位数量加载中..,目测这是个关键位置。
因为源代码里面也有个热门职位数量加载中..,并且还有各个定位值的静态文本

便可以知道网页上的代码都是从这里动态渲染的
打上断点刷新代码断了下来,我们可以看到选中(-30 * parseInt(t - 1) - 300 * (i + 1))之后混淆定位值出现了,是-270,这个值与参数t=’0‘和i=0都有关

但是我们怎么找到关键参数t和i呢,每次放开断点之后,t和i都会产生变化
回溯函数Te发现了t值是一个值会变化的数组

下了断点之后可以在控制台调试一下Te,看看能不能找到t值从哪里来的。可以看出Te函数可以直接调出八个定位的样式值,也可以获取到我们之前所需要的t值

回去调试一下看看t值是不是一样的。通过下面图可得t值是一样的

重新刷新一下网页获取t值,可以发现t值是可变的,那肯定是通过XHR响应的

抓包调到XHR抓到一个有时间戳的包查看值跟刚刚刷新的值是一样的

现在t值有了,i是for循环产生的,便可以通过(-30 * parseInt(t - 1) - 300 * (i + 1))获取到混淆的定位值




4.构建替换字典
首先我们通过调试知道
30是0
60是9
90是8
120是7
150是6
180是5
210是4
240是3
270是2
300是1
0是1
-30是2
-60是3
-90是4
-120是5
-150是6
-180是7
-210是8
-240是9
-270是0
就可以构建字典,找出网站定位(会随机改变的,有正有负数)与图片定位(固定的)的关系
把值分列出来找对应关系
-270 ———0
-600 ———1
-1140 ———9
-1320 ———5
-1470 ———0
-1920 ———5
-2160 ———3
-2640 ———9
我们便可以通过上面推出下面(值已经通过xhr更新了),300是一个循环,同时通过(-30 * parseInt(t - 1) - 300 * (i + 1))推出和上面的值逆向推出下面的方式
300x1-270————————30——————0
300x2-600————————0——————1
300x3-1140————————    -240——————9
300x4-1320————————    -120——————5
300x5-1470————————    30——————0
300x6-1920————————    -120——————5
300x7-2280————————    -180——————7
300x8-2400————————    0——————1
真实定位值都有了,便可以敲代码了
5.敲代码
[Python] 纯文本查看 复制代码
import re
import requests
# import execjs
import json
import time,math
#获取时间戳 -^^-就算是吊车尾,也要做一个为第一而活的吊车尾
ts = time.time()
millis = int(round(time.time() * 1000))
# 获取t值 -^^-就算是吊车尾,也要做一个为第一而活的吊车尾
url="https://tuiguang.shixiseng.com/proxy-prefix/new-intern-api-host/api/interns/v3.0/interns/intern_total?build_time="+str(millis)
html1 = requests.get(url)
re2 = re.compile('{"code":100,"msg":{"total":(.*?)}}')
re2 = re2.findall(html1.text)
# 构建字典 -^^-就算是吊车尾,也要做一个为第一而活的吊车尾
zd={
    '30':'0',
    '60':'9',
    '90':'8',
    '120':'7',
    '150':'6',
    '180':'5',
    '210':'4',
    '240':'3',
    '270':'2',
    '300':'1',
    '0':'1',
    '-30':'2',
    '-60':'3',
    '-90':'4',
    '-120':'5',
    '-150':'6',
    '-180':'7',
    '-210':'8',
    '-240':'9',
    '-270':'0'
}
#字典替换并且下载 -^^-就算是吊车尾,也要做一个为第一而活的吊车尾
for i in range(0,7):
    try:
        re3 = re.compile('\d')
        re3 = re3.findall(re2[0])
        t = re3[i]
        jg = str(300 * (i + 2) + (-30 * (int(t) - 1) - 300 * (i + 2)))
        with open('实习僧1' + '.txt', mode="a", encoding='utf-8')as f:
            f.write(jg.replace(jg, zd[jg]))
    except:
         break





5.作者有话说
其实有心人都已经看出那个有时间戳的url里面的值就是我们所需要的值,根本就不需要什么字体反反爬,但是我觉得吧这个应该属于这个网站的bug,不然他这雪碧图反爬就摆着好看啊。而我们这篇文章就是关于雪碧图字体反爬的。就算看到了我们也要假装没有看到,然后把雪碧图字体反爬好好练一遍。其实,鼠鼠也是写文章的时候才发现的,真的是栓Q。

免费评分

参与人数 30威望 +2 吾爱币 +126 热心值 +28 收起 理由
1FF1 + 1 我很赞同!
lin0jian + 1 大佬厉害
Rdyl + 1 + 1 热心回复!
ULL + 1 + 1 谢谢@Thanks!
菜鸟小白 + 1 + 1 热心回复!
隔壁老王Orz + 1 谢谢@Thanks!
慕冬 + 1 + 1 我很赞同!
MaxTao + 1 + 1 我很赞同!
MIC生命互联网 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
zhczf + 1 + 1 我很赞同!
jackies + 1 用心讨论,共获提升!
wgt627 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
eer123 + 1 + 1 热心回复!
alderaan + 1 + 1 谢谢@Thanks!
62070F + 1 + 1 用心讨论,共获提升!
pdcba + 1 + 1 谢谢@Thanks!
xzhtx + 1 + 1 谢谢@Thanks!
XIAOHUANGDI520 + 1 + 1 谢谢大佬
努力加载中 + 1 + 1 热心回复!
taczer + 1 + 1 用心讨论,共获提升!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wangshisuifeng1 + 1 + 1 热心回复!
yjn866y + 1 + 1 热心回复!
笙若 + 1 + 1 谢谢@Thanks!
ddddhm + 1 + 1 热心回复!
RippleSky + 1 热心回复!
kiopc + 1 + 1 哈哈哈 假装没看到
1MajorTom1 + 1 热心回复!
r2df + 1 + 1 谢谢@Thanks!
涛之雨 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
ahui66 发表于 2022-8-21 10:13
学习了,谢谢分享
推荐
wpa 发表于 2022-8-21 09:24
推荐
yuzhiyizhan 发表于 2022-8-20 08:45
沙发
Nemoris丶 发表于 2022-8-19 20:52
牛啊!学习了
3#
丨miss丶星星 发表于 2022-8-19 21:05
活到老,学到老
4#
ciker_li 发表于 2022-8-19 21:47
大佬厉害,学习学习
5#
a446489393 发表于 2022-8-19 21:57
太牛了吧,牛。
6#
shutegame 发表于 2022-8-19 22:06
学习了,膜拜大佬
7#
平淡 发表于 2022-8-19 22:13
有意思的经历,挺好玩吧
8#
外酥内嫩 发表于 2022-8-19 23:00
感谢楼主,又学到了
9#
zxcvbnm12 发表于 2022-8-20 07:55
牛蛙,谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 08:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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