看到最近 2 天讨论最多的前端加密方式防止逆向,分享一下有意思的东西 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hsuehly
V2EX    程序员

看到最近 2 天讨论最多的前端加密方式防止逆向,分享一下有意思的东西

  •  
  •   hsuehly 2023 年 8 月 22 日 6522 次点击
    这是一个创建于 888 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端如何做加密,解密才不能破解呢,这里发现了两个有意思的网站 网站 A: aHR0cHM6Ly95YW5ndHUudG9wLw== 网站 B:aHR0cHM6Ly9qeC5qc29ucGxheWVyLmNvbS9wbGF5ZXIvP3VybD1odHRwczovL3YucXEuY29tL3gvY292ZXIvbXpjMDAyMDBjdDIzMGgxL2owMDQ2NGJveDJkLmh0bWw= 大家感兴趣的可以看一下,他们是如何做的,这里只做技术交流,不涉及其他

    41 条回复    2023-08-23 20:41:08 +08:00
    mokiki
        1
    mokiki  
       2023 年 8 月 22 日
    T1DkuLrku4DkuYjopoHovaznoIHlkaLvvJ8K6L+Z5piv5Li65LuA5LmI5ZGi77yfCuWIsOW6leaYr+S4uuS6huS7gOS5iOWRou+8nw==
    AoEiuV020JP
        2
    AoEiuV020JP  
       2023 年 8 月 22 日
    不直接说一下吗, 是有什么亮点?视频资源站,应该都差不多吧,
    uibobo
        3
    uibobo  
       2023 年 8 月 22 日
    这玩意个解密有啥关系
    picone
        4
    picone  
       2023 年 8 月 22 日
    我也来分享一个,尝试逆向太难了。https://www.nftsniper.club/
    - 通过 timer 触发 debug ,通过代理 js 去掉了
    - 所有函数和字符串都有编码表,动态拼接起来,和你发的第二个有点类似,不过更复杂一些
    hsuehly
        5
    hsuehly  
    OP
       2023 年 8 月 22 日
    @AoEiuV020JP 两个都用了 wasm
    horizon
        6
    horizon  
       2023 年 8 月 22 日
    wasm 能被逆向吗
    enpitsulin
        7
    enpitsulin  
       2023 年 8 月 22 日
    不过看起来你这两个链接中的 wasm 都是提供弹幕功能的库罢了

    其实有一点就是如果使用 wasm 写通用逻辑完全可以 dump 找到 js 调用方直接去调,作为一个通用平台,提供 wasm 相当于提供了个库

    当然把业务逻辑完全写在 wasm 那就基本没得搞了,但是可能代价有点大
    32uKHwVJ179qCmPj
        8
    32uKHwVJ179qCmPj  
       2023 年 8 月 22 日
    wasm 又不是不能逆向
    tool2d
        9
    tool2d  
       2023 年 8 月 22 日
    第一个网站随便下断点调试,没看到什么亮点。

    第二个网站 m3u8 获取做了鉴权机制,把 header,refer 什么都加上就可以了。
    Binwalker
        10
    Binwalker  
       2023 年 8 月 22 日
    机器码都能逆向,前端那套当然更可以
    hsuehly
        11
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @tool2d 你仔细看一下其实第一个是最难的
    hsuehly
        12
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @enpitsulin 两个加解密的逻辑都在 wasm 里 wasm 没有提供弹幕功能,只做加解密相关
    tool2d
        13
    tool2d  
       2023 年 8 月 22 日
    @hsuehliuyang 第一个就是普通的 mp4 视频啊,我看的连 m3u8 都没加入。写个 JS 插件注入到页面,获取 mp4 url 就可以了。
    ljrdxs
        14
    ljrdxs  
       2023 年 8 月 22 日 via Android
    看了本站“关于”,没说不能发链接。为何用 base64 编码?
    tool2d
        15
    tool2d  
       2023 年 8 月 22 日
    哦,第一个电视剧腾讯源是 mp4 。普通的动画片是 m3u8 切片,但是放在阿里云上的,随便下。还不如第二个是自己的服务器,有鉴权机制。
    tool2d
        16
    tool2d  
       2023 年 8 月 22 日
    这种视频网站有个通病,就是再怎么加密,一定会有获取 m3u8 这个步骤。

    如果获取的是明文 m3u8 ,必定会被浏览器给捕获,也会被带过滤器的浏览器插件给捕获,这是 100%可以复现的。

    有那种二进制加密 m3u8 ,取回来内存解密,但是这种极少见。
    lllllliiii
        17
    lllllliiii  
       2023 年 8 月 22 日
    老哥你分享的第二个网站太棒了
    hsuehly
        18
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @tool2d 我给你单独抽出来吧 https://jx.yangtu.top/?url= 主流视频站的地址
    hsuehly
        19
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @ljrdxs 如果连 base64 编码都不知道,那我感觉他也不清楚网站的特殊之处,为了过滤一部分吧
    tool2d
        20
    tool2d  
       2023 年 8 月 22 日
    @hsuehliuyang 也许我们侧重点不一样,我是觉得自己插件能提取出任意的 m3u8 地址,直接本地播放。

    你可能需要研究 m3u8 地址是如何拼接出来的,如何调用他们的 API 。

    我不是做视频站的,对 API 不太关心。只要能下载视频切片,能本地看视频就可以了。
    fason1995
        21
    fason1995  
       2023 年 8 月 22 日
    哈哈 第二个网址不错 除了资源不太全 没啥问题
    otakustay
        22
    otakustay  
       2023 年 8 月 22 日
    如果我要 CSRF ,你加密是 wasm 我拿着你的 wasm 用就行了
    如果我要看加密前的内容,只要找到你调用 wasm 的地方打断点就行了
    所以这个解决了什么问题呢?
    kkk9
        23
    kkk9  
       2023 年 8 月 22 日
    没看出来有什么挑战性
    zzNucker
        24
    zzNucker  
       2023 年 8 月 22 日
    这种就别发了

    想挑战自己第一去搞谷歌的 recaptcha ,第二去搞淘宝的反爬
    danbai
        25
    danbai  
    PRO
       2023 年 8 月 22 日
    52 上这种破解 wasm 很多
    hsuehly
        26
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @otakustay 你可以拿着 wasm 运行一下,你就知道了
    ljrdxs
        27
    ljrdxs  
       2023 年 8 月 22 日
    @hsuehliuyang 光凭编码我也看不出。只是 base64 用的最多罢了。
    rb6221
        28
    rb6221  
       2023 年 8 月 22 日
    我只知道一个比较大的就是微信读书的 web 页面 https://weread.qq.com/ 反正这个没看到人破解
    learningman
        29
    learningman  
       2023 年 8 月 22 日
    wasm 总要导出函数,直接拿着导出函数用不就完事了,管他内部怎么处理的
    learningman
        30
    learningman  
       2023 年 8 月 22 日
    (func $env.syscall/js.valueSet (;0;) (import "env" "syscall/js.valueSet") (param i32 i32 i32 i32 i32))
    (func $env.syscall/js.valuePrepareString (;1;) (import "env" "syscall/js.valuePrepareString") (param i32 i32 i32))
    (func $env.syscall/js.valueLoadString (;2;) (import "env" "syscall/js.valueLoadString") (param i32 i32 i32 i32 i32))
    (func $env.syscall/js.valueLength (;3;) (import "env" "syscall/js.valueLength") (param i32 i32) (result i32))
    (func $env.syscall/js.valueIndex (;4;) (import "env" "syscall/js.valueIndex") (param i32 i32 i32 i32))
    (func $env.syscall/js.valueGet (;5;) (import "env" "syscall/js.valueGet") (param i32 i32 i32 i32 i32))
    (func $env.syscall/js.valueCall (;6;) (import "env" "syscall/js.valueCall") (param i32 i32 i32 i32 i32 i32 i32 i32))
    (func $env.syscall/js.stringVal (;7;) (import "env" "syscall/js.stringVal") (param i32 i32 i32 i32))
    (func $env.syscall/js.finalizeRef (;8;) (import "env" "syscall/js.finalizeRef") (param i32 i32))
    (func $env.runtime.ticks (;9;) (import "env" "runtime.ticks") (result f64))
    (func $wasi_snapshot_preview1.fd_write (;10;) (import "wasi_snapshot_preview1" "fd_write") (param i32 i32 i32 i32) (result i32))
    (func $wasi_snapshot_preview1.random_get (;11;) (import "wasi_snapshot_preview1" "random_get") (param i32 i32) (result i32))
    hsuehly
        31
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @learningman 内部有检测,你可以拿着运行一下
    tool2d
        32
    tool2d  
       2023 年 8 月 22 日
    一个视频网站,m3u8 没加密,切片没加密,我也不知道楼主想要破解什么信息。
    bigha
        33
    bigha  
       2023 年 8 月 22 日
    第一个网站 已经搞定了

    t/967442
    hsuehly
        34
    hsuehly  
    OP
       2023 年 8 月 22 日
    @tool2d 接口呀
    hsuehly
        35
    hsuehly  
    OP
       2023 年 8 月 22 日
    @bigha 大佬,大佬
    kuanat
        36
    kuanat  
       2023 年 8 月 22 日
    连 js 混淆都不做,根本没有想要防的意思。它这个业务,侵权就不说了,偷流量、滥用 cdn 真是熟练。
    hsuehly
        37
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @kuanat 有没有可能人家比较自信,连 debugger 都没
    kuanat
        38
    kuanat  
       2023 年 8 月 22 日 via Android
    @hsuehliuyang 这和有没有自信没关系啊。

    前段混淆无非就是防君子、小人和机器人。第一个网站的业务,显然不是防君子防机器人
    kuanat
        39
    kuanat  
       2023 年 8 月 22 日 via Android
    @hsuehliuyang 这和有没有自信没关系啊。

    前段混淆无非就是防君子、小人和机器人。第一个网站的业务,显然不是防君子防机器人,防小人也用不着,因为没有一点东西是自己的。

    但是你看它用伪造的 png 头假装图片跑视频流,然后用某站的缓存漏洞托管自己的播放列表文件,这种手段水平,想加个 js 混淆太容易了。

    它真想藏的大概不是 url 而是流量。
    hsuehly
        40
    hsuehly  
    OP
       2023 年 8 月 22 日 via iPhone
    @kuanat 是的就网站首页是他自己的
    cleveryun
        41
    cleveryun  
       2023 年 8 月 23 日 via Android
    @kuanat 我去,学习了,还能这样操作
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5547 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powred by solitude
    VERSION: 3.9.8.5 31ms UTC 08:59 PVG 16:59 LAX 00:59 JFK 03:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86