X3 photo gallery简单的相册程序,伪授权方法

 X3 photo gallery是一款简单,漂亮,功能强大的相册程序,不用数据库,直接读取文件夹内容。有免费版和专业版区分,相比$75的个人版和$150的专业版,免费版只是少了全景功能和底部有不可更改的版权信息,除此之外没有太大差距。

    有意思的是免费一旦自行修改版权信息,网页就会弹窗提示未授权并跳转官网,在查看代码过程发现当中引用了几个伪装的授权代码,即使除去了没能真正除去版权信息,本文主要是为了探讨学习与研究记录一下学习过程。有需要请支持正版,其实免费版足以解决大部分需求。

官网:https://www.photo.gallery/

DEMO:https://shanliang.xyz/

图片[1]-X3 photo gallery简单的相册程序,伪授权方法-李峰博客

-------------------------------------------------------------------------------

  • 安装

前面最新版是3.30.1,官网下载链接:https://www.photo.gallery/downloads/

安装环境:PHP 5.3 或更高,需要PHP扩展 GD 和 Mcrypt 。

安装过程接不多说了,参考官方详细文档

需要注意的的伪静态设置是,如果原来配置文档有涉及js,css的设置建议先删除。(例如宝塔需要删除原来配置文档里面location ~js jpg...那部分)

nginx伪静态

location / {
    if (!-e $request_filename){
      # Rewrite any calls to html|json|xml|atom|rss if a folder matching * exists
      rewrite (.+)\.(html|json|xml|atom|rss)$ $1/ last;
      # Rewrite any calls to /render to the X3 image resizer
      rewrite ^/render/. /app/parsers/slir/ last;
      # Rewrite routes to X3 application index.php if they are non-existent files/dirs
      rewrite ^(.*)$ /index.php?$1 last;
    }
  }
  # Prevent web access to X3 /config and /_cache directories
  location ~ /(config|_cache) {
    deny all;
  }

-------------------------------------------------------------------------------

  • 伪授权

以这个版本为例,目标:把验证网址https://auth.photo.gallery/改成 /auth

/auth放入自己的授权文件

1)前台 修改 /app/public/js/3.30.1/x3.min.js

搜索 aHR0cHM6Ly9hdXRoLg== 替换为 Lw==

搜索 cGhvdG8uZ2FsbGVyeQ== 替换为 YXV0aA==

代码为base64加密,解密后对应

aHR0cHM6Ly9hdXRoLg==  →→→  https://auth
cGhvdG8uZ2FsbGVyeQ==  →→→  photo.gallery
Lw==  →→→ /
YXV0aA==  →→→ auth

2)后台 修改 /panel/filemanager_js/x3_panel.js

搜索 aHR0cHM6Ly9hdXRoLnBob3RvLmdhbGxlcnkv 替换为 L2F1dGgv

代码为base64加密,解密后对应

aHR0cHM6Ly9hdXRoLnBob3RvLmdhbGxlcnkv  →→→  https://auth.photo.gallery/
L2F1dGgv  →→→  /auth/

3)修改使用本地x3.min.js,方法有二

一是修改引用文件:

修改/app/templates/cc/29/202264ab201d0d43a63882c31b1c06ae7e7992a5c371c52f885633d0acfa.php

大概第71行

$context["core_js"] = (("https://cdn.jsdelivr.net/npm/x3.photo.gallery@" . $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "x3_version")) . "/js/x3.min.js");      
修改为:
$context["core_js"] = ("/app/public/js/3.30.1/x3.min.js");

二是后台设置取消cdn,全部使用本地静态:

在后台设置->高级-CDN,取消勾选。

4)新建 验证文件/auth/index.php

简单模式:

<?php 
header('Access-Control-Allow-Origin: *');
header('content-type:application/json');
echo '{"status":200,"message":"License is valid.","parameters":{"type":"1"}}';
?>

或者指定域名模式

<?删除php 
header('Access-Control-Allow-Origin: *');
header('content-type:application/json');
$allowed_hosts = array('shanliang.xyz', 'p2.btu.pp.ua'); //修改为自己域名
if (in_array($_SERVER['SERVER_NAME'], $allowed_hosts)) {
    echo '{"status":200,"message":"License is valid [btu.pp.ua]","parameters":{"type":"1"}}';
}else{
    echo '{"status":301,"message":"License not Found"}';
}
?>

这样应该可以了。

好像POST授权网址后,只要status返回的代码不是301,它就不会判断是不是正版,不再进行下一步的弹窗和跳转了

-------------------------------------------------------------------------------

目前个人使用遇到最大问题

文件夹不支持 #$%^&*()+=[]'"/\|{}`~!@. 

Other disallowed characters

Other characters that are not allowed in folder names include #$%^&*()+=[]'"/\|{}`~!@. Most of these characters are simply not allowed in URL's, while some characters are disallowed because they break the functionality of X3.

© 版权声明
THE END
喜欢就支持一下吧
点赞16赞赏 分享