记录破解兰空图床(Lsky-Pro)

记录破解兰空图床(Lsky-Pro)

2025-08-19
兰空图床是一个简洁易用(?)的图床框架,抓包了一下激活过程,这玩意居然没加密...记录一下

仅供学习交流,请在下载后24h内删除。体验地址: https://lsky.2x.nz 视频教程: https://www.bilibili.com/video/BV1UieUzQEvq/

方案一:本地开心版(推荐)

突然发现交付给我的项目是源码,那还逆向什么授权,直接永远返回true呗~

安装包体

zpaq可以使用 Bandizip 官方网站 - 免费压缩软件下载 (Windows) 进行解压,旧版不支持

我们做了什么?

环境配置

自行参考: https://docs.lsky.pro/guide/install

推荐使用宝塔面板部署,1Panel的容器化PHP好像有点问题

如果坚持要用1Panel,推荐使用PHP8.2,出现500,404等状态码问题请自行解决,似乎需要一个特殊的 fallback 设置。感谢 fishcpy提供的解决方案!这里是他的部署教程: AcoFork的兰空图床开心版1panel部署教程 - 福利羊毛 - LINUX DO

    # 全局 404 交给 @fallback 处理,不强制状态码
    error_page 404 @fallback;

    location / {
        try_files $uri $uri/ @fallback;
    }

    # 命名 location:交给 index.php,但不强制 200
    location @fallback {
        rewrite ^ /index.php last;
    }

    # -----------------------------
    # 特殊路径:/api/v2/ 也走 index.php,但不能强制 200
    # -----------------------------
    location ^~ /api/v2/ {
        # 同样使用 @fallback,不强制状态码
        try_files $uri $uri/ @fallback;
    }

安装过程

授权密钥随便填直接过

系统升级已Hook,定死版本

最终效果

方案二:手动破解

如果你想自己动手破解,或者需要获取最新版本包体,可以参考此方案。

注意。如果需要更新新版本,仍然需要有效的授权密钥,否则无法得到新版包体

下载包体

兰空图床Pro付费版包: https://r2.072103.xyz/lp223.zpaq (解压密码:2x.nz二叉树树)

破解授权

首先为你的Linux配置一个HTTP代理,指向 Burp Suite(软件自己找)

export http_proxy="http://127.0.0.1:8080"
export https_proxy="http://127.0.0.1:8080"

默认Burp仅拦截请求,不拦截响应,需要手动设置一下

然后启用拦截

当你通过官方教程到执行 ./install.sh 的时候

会要求输入域名和授权密钥,域名填你自己的,否则之后上传的图片的预览地址将会不正确!授权密钥随便填!

回车,会开始转圈圈

查看Burp,发现多了一个请求,首先点击放行

现在出现了响应,并且状态码为401

响应那块是可以编辑的,用 https://r2.072103.xyz/lsky_success_223.txt 中的内容替换原响应。然后点击放行

恭喜,通过授权了

安装完毕后也一样

38dd52c6e.webp)

进阶:自建授权服务器

可以通过Cloudflare Worker自建授权。感谢一位不愿透露姓名的小伙伴提供的代码

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  const jsonContent = `[{"logo":"products\\/lsky-pro.webp","name":"V 2.2.3","version":"2.2.3","changelog":"### \\u4f18\\u5316\\n- \\u6539\\u8fdb\\u76f8\\u518c\\u5217\\u8868\\u6837\\u5f0f\\n\\n### \\u4fee\\u590d\\n- \\u4fee\\u590d\\u4f7f\\u7528\\u624b\\u673a\\u53f7\\u6ce8\\u518c\\u8d26\\u53f7\\u8981\\u6c42\\u8f93\\u5165\\u90ae\\u7bb1\\u7684 bug\\n- \\u4fee\\u590d\\u72ec\\u7acb\\u9875\\u9762 title \\u663e\\u793a\\u4e0d\\u6b63\\u786e\\u7684 bug","pushed_at":"2025-07-29","milestone":"stable","download_url":"https:\\/\\/dl.huohuastudio.com\\/packages\\/products\\/lsky-pro\\/2.2.3.zip?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=d8vF9cr3Wmbu8qHMD3W1%2F20250818%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250818T141321Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1800&X-Amz-Signature=40682060b50fa3ee0f520f78418e5f0754277e14e4794f5e283ab4149a6028eb"},{"logo":"products\\/lsky-pro.webp","name":"V 2.2.2","version":"2.2.2","changelog":"### \\u65b0\\u589e\\n- \\u540e\\u53f0\\u7ba1\\u7406\\u5217\\u8868\\u589e\\u52a0\\u8fc7\\u6ee4\\u5668\\n- \\u652f\\u6301\\u8bbe\\u7f6e\\u9ed8\\u8ba4\\u4e0a\\u4f20\\u50a8\\u5b58\\n- \\u652f\\u6301\\u6279\\u91cf\\u590d\\u5236\\u94fe\\u63a5\\n- \\u652f\\u6301\\u63a7\\u5236\\u5e7f\\u573a\\u662f\\u5426\\u5c55\\u793a\\n\\n### \\u4f18\\u5316\\n- \\u6539\\u8fdb\\u6837\\u5f0f\\n- \\u7f51\\u9875 title \\u6839\\u636e\\u5f53\\u524d\\u83dc\\u5355\\u663e\\u793a\\n- \\u4eea\\u8868\\u76d8\\u589e\\u52a0\\u7edf\\u8ba1\\u5361\\u7247\\n- \\u6539\\u8fdb\\u5e7f\\u573a\\u7684\\u56fe\\u7247\\u5217\\u8868\\u663e\\u793a\\n\\n### \\u4fee\\u590d\\n- \\u4fee\\u590d\\u4f7f\\u7528 libvips \\u9a71\\u52a8\\u65f6\\u4e91\\u5904\\u7406\\u8f93\\u51fa\\u56fe\\u7247\\u8fd8\\u662f\\u4f7f\\u7528 imagick \\u5904\\u7406\\u7684 bug\\n- \\u4fee\\u590d\\u56fe\\u7247\\u5904\\u7406\\u4e2d\\u6c34\\u5370\\u9009\\u62e9\\u5e73\\u53f0\\u540e\\u4fdd\\u5b58\\u63d0\\u793a\\u9700\\u8981\\u9009\\u62e9\\u6c34\\u5370\\u4f4d\\u7f6e\\u7684 bug\\n- \\u4fee\\u590d\\u5220\\...

  const headers = new Headers({
    'Content-Type': 'application/json',
    'Content-Length': '30872',
    'Strict-Transport-Security': 'max-age=31536000',
    'Alt-Svc': 'h3=":443"; ma=86400',
    'Vary': 'Accept-Encoding',
    'Cache-Control': 'max-age=0, must-revalidate, no-cache, no-store, private',
    'Pragma': 'no-cache',
    'Expires': 'Fri, 01 Jan 1990 00:00:00 GMT',
    'Access-Control-Allow-Origin': '*',
    'X-Cache': 'MISS',
    'Server': 'WAFPRO'
  });

  // 使用当前日期作为响应日期
  const currentDate = new Date().toUTCString();
  headers.set('Date', currentDate);

  return new Response(jsonContent, {
    status: 200,
    statusText: 'OK',
    headers: headers
  });
}

自建结束后将 config/app.php 内的 服务接口地址 改为你的。就不需要每次安装都手动改响应包了

    /**
     * 服务接口地址
     */
    'service_api' => env('APP_SERVICE_API', 'https://huohuastudio.com'),