吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22897|回复: 200
收起左侧

[Web逆向] 小姐姐网站 (美之图) js逆向

    [复制链接]
Arcticlyc 发表于 2022-9-25 22:31
本帖最后由 Arcticlyc 于 2022-11-9 08:28 编辑

起因
在论坛冲浪时发现有人分享了一个很nice的网站:https://mmzztt.com/,又看到有uu在问如何获取图片地址,因此对其进行研究并写下帖子记录。


提醒:该网站现已限制最多浏览15张图片,想看更多需要下载app
    看见有人问这个是用来干嘛的,因为网站每个图集打开只能看到第一张图片,后面的图片链接无法直接得到,本帖是逆向网站js获取每个图集里的图片链接地址
    *** 但是由于现在限制了只能看15张图片,所以其实也只能获取到前15张图片的链接,我感觉前15张图片没什么好看的,所以主要是找到js解密的关键代码并分享出来,大家想爬的可以自己写代码爬取,现在已经能够获取到图片的链接,其他的应该也不是很困难 ***

   


逆向过程
当我f12打开控制台的时候,真的是一脸懵逼,这混淆得我真的想哭!!!一眼看去没有一个知道是啥的变量,只能硬着头皮上了。


首先打开是一个自动debugger,这个直接找到断点的起始处,用本地替换过掉,然后开始分析。刚开始我完全是自己琢磨,一看图片既不在源代码也没有ajax请求,找了好久才发现是js解密后直接得出图片链接,又花了很长时间才找到加密关键处。


但是,由于这个坑爹的混淆(一句代码甚至占好久行),我被引向了岔路,而且还搞了几个小时,最后本来打算放弃了,但是突然又发现已经有人分享过这个逆向方法了,一看,我中间那段找对了呀,于是重拾信心,根据原帖,修改(很小)部分代码,并测试成功。


原帖地址:http://www.konforever.xyz/2022/mmzztt-spider/

逆向分享
1. pid值,也就是网址后面的几个数字。
屏幕截图(34).png

2. 根据原帖,图片采用AES加密,其中解密需要用到cacheSign,这个参数在源代码中可以找到,不过现在的位数有所变化,我对代码进行了修改。
1.jpg
屏幕截图 2022-09-25 221709.jpg

3. IV值的获取并没有变化,仍然是原来的算法。
屏幕截图(35).png

4.  AES解密的密钥,key值的计算和原来不一样,经观察后面这一串字符应该是固定的,
屏幕截图(36).png
屏幕截图(37).png



结束
至此该网站js逆向结束,顺便附上js解密部分的代码。


[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from typing import List
import binascii
import json
 
import re
import requests
from lxml import etree
from Crypto.Cipher import AES
from Crypto.Hash import MD5
 
 
def decrypt(pid: str|int, cache_sign: str) -> List[str]:
    pid = int(pid)
    IV = "".join([str(pid % i % 9) for i in range(2, 18)]).encode()
    key = MD5.new((f"{pid}6af0ce23e2f85cd971f58bdf61ed93a6").encode()).hexdigest()[8:24].encode()
    aes = AES.new(key, AES.MODE_CBC, IV)
    result = aes.decrypt(binascii.a2b_hex(cache_sign)).rstrip()
 
    result = re.findall(r'(\[.*\])', result.decode())[0]
    return json.loads(result)
 
 
def get_cache_sign(pid: str|int) -> str|None:
    url = "https://mmzztt.com/photo/{}".format(pid)
    res = requests.get(url, headers={
        "referer": "https://mmzztt.com/",
        "user-agent": "Mozilla/5.0"
    })
    if res.status_code == 200:
        html = etree.HTML(res.text)
        return html.xpath("//body/comment()")[0].__str__()[68:-3]
 
if __name__ == '__main__':
    pid = ''
    res = get_cache_sign(pid)
 
    resp = decrypt(pid, res)
    print(resp)

免费评分

参与人数 25吾爱币 +21 热心值 +21 收起 理由
QQGGOODD + 1 我很赞同!
yjn866y + 1 + 1 谢谢@Thanks!
52bbQ + 1 我很赞同!
fff123123 + 1 + 1 谢谢@Thanks!
rangersxiaoyan + 1 + 1 我很赞同!
wojiaomqf + 1 + 1 谢谢@Thanks!
qiyou77 + 1 我很赞同!
guoruihotel + 1 + 1 谢谢@Thanks!
notlove + 1 + 1 热心回复!
zheng8082 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
arabianight + 1 我很赞同!
小鱼儿飞呀飞 + 1 + 1 这个站点一直换,前几次还成功逆了,还是你强啊
宝儿的马 + 1 谢谢@Thanks!
zz08808 + 1 + 1 热心回复!
DaKxhq54zDH + 1 + 1 好评加鹅
xyl52p + 1 谢谢@Thanks!
zhaoqingdz + 1 用心讨论,共获提升!
腰围两尺99 + 1 + 1 我很赞同!
Sweeper + 1 + 1 我很赞同!
zp999 + 1 + 1 谢谢@Thanks!
jasonA + 1 + 1 热心回复!
woyucheng + 1 + 1 谢谢@Thanks!
Takitooru + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wangming5787 + 1 我很赞同!
lin2lin3lin5 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| Arcticlyc 发表于 2024-3-25 11:45
gouzi123 发表于 2024-3-24 21:28
网站好像打不开了,是不是被爬太多了

需要代{过}{滤}理
头像被屏蔽
rangersxiaoyan 发表于 2022-12-6 17:54
 楼主| Arcticlyc 发表于 2022-11-9 11:07
开创者 发表于 2022-11-9 10:54
就是做个他这样的网站把图片保护起来,防小白

那应该就是学各种反爬虫的手段吧,各种加密、混淆,一般加一点js加密就能拦住很多没学过逆向的人吧,但是我对前端和js也不了解,不会做这些。或者像它这样做成app,用自用证书,我连证书校验都过不去,包也抓不到,更不用说爬虫了。
aspllh 发表于 2022-9-25 23:20
太棒了,感谢!
DRLLL 发表于 2022-9-25 23:43
很好用,可以可以
wujianbiao 发表于 2022-9-25 23:47
多谢大佬!
xcz123m 发表于 2022-9-26 00:01
学习了  谢谢分享
wa2012 发表于 2022-9-26 00:41
谢谢楼主分享
MorN 发表于 2022-9-26 00:50
不错,很强
wmk2000 发表于 2022-9-26 00:51
谢谢楼主分享
开创者 发表于 2022-9-26 05:04
这个方法要是能应该到我的网站就很不错,仿采集系数提高了
bj9ye666 发表于 2022-9-26 06:09
小姐姐我来也 谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-24 13:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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