吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20591|回复: 186
上一主题 下一主题
收起左侧

[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值,也就是网址后面的几个数字。


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



3. IV值的获取并没有变化,仍然是原来的算法。


4.  AES解密的密钥,key值的计算和原来不一样,经观察后面这一串字符应该是固定的,





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


[Python] 纯文本查看 复制代码
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
太棒了,感谢!
3#
DRLLL 发表于 2022-9-25 23:43
很好用,可以可以
4#
wujianbiao 发表于 2022-9-25 23:47
多谢大佬!
5#
xcz123m 发表于 2022-9-26 00:01
学习了  谢谢分享
6#
wa2012 发表于 2022-9-26 00:41
谢谢楼主分享
7#
MorN 发表于 2022-9-26 00:50
不错,很强
8#
wmk2000 发表于 2022-9-26 00:51
谢谢楼主分享
9#
开创者 发表于 2022-9-26 05:04
这个方法要是能应该到我的网站就很不错,仿采集系数提高了
10#
bj9ye666 发表于 2022-9-26 06:09
小姐姐我来也 谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 10:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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