PHP源码加密之php-beast

1、简介

php-beast可以对PHP源码文件进行加密,加密后的文件也可以正常的访问。

 

2、安装php-beast

# 下载php-beast
wget https://github.com/liexusong/php-beast/archive/master.zip

# 解压下载的文件
unzip master.zip

# 进入解压后的目录
cd php-beast-master

# ‌生成配置文件
phpize

# 检测系统环境,确认是否具备编译和安装所需的依赖项。如果加上参数【--enable-execute-normal-script=off】可以禁止执行未加密的PHP脚本。
./configure

# 安装
sudo make && make install

 

安装完毕后,修改 php.ini 文件,添加【extension=beast.so】配置项后重启php-fpm。

 

3、配置与使用

3.1、配置

3.1.1、php-beast是开源项目,为防止网上的解密软件识别我们的加密文件,所以需要修改加密的key,增强加密的安全性。

  • header.c:加密文件头结构
  • aes_algo_handler.c:使用aes模块就修改此文件
  • des_algo_handler.c:使用des模块就修改此文件

 

3.1.2、根据需要修改 configure.ini 的配置内容。

  • src_path:要加密项目的路径。
  • dst_path:保存加密后项目的路径。
  • expire:设置项目可使用的时间 (expire 的格式是:Y-m-d H:i:s )。
  • encrypt_type:加密的方式,选择项有:DES、AES、BASE64。

 

3.1.3、设置指定的机器上运行,要使用此功能可以在 networkcards.c 文件添加服务器的IP地址。

注意:由于有些机器网卡名可能不一样,所以如果你的网卡名不是 eth0 的话,可以在 php.ini 中添加配置项: beast.networkcard = "xxxx" 其中 xxxx 就是你的网卡名,也可以配置多张网卡,如:beast.networkcard = "eth0,eth1,eth2"。

 

3.2、使用

3.2.1、可用函数

  • beast_encode_file(): 用于加密一个文件
  • beast_avail_cache(): 获取可以缓存大小
  • beast_support_filesize(): 获取beast支持的最大可加密文件大小
  • beast_file_expire(): 获取一个文件的过期时间
  • beast_clean_cache(): 清空beast的所有缓存(如果有文件更新, 可以使用此函数清空缓存)

 

3.2.2、编写PHP代码加密

# $file 要加密的php原文件,$targetFile 加密后的文件,$res 加密成功返回true
$res = beast_encode_file($file, $targetFile);

 

3.2.3、工具加密

在解压后的目录中有个tools目录,其目录下有两个文件,一个是加密单个文件,一个是加密目录下的所有PHP文件。

(1)加密一个文件:encode_file.php

使用格式:php encode_file.php --oldfile old_file_path --newfile new_file_path --encrypt DES --expire "2024-12-12 12:12:12"

  • --oldfile:加密文件的路径
  • --newfile:加密后文件的路径
  • --encrypt:加密方式
  • --expire:过期时间

 

(2)加密目录下的所有PHP文件:encode_files.php

第一步必须先配置【configure.ini】文件

第二步在tools目录下执行【php encode_files.php】

 

3.2.4、加密效果

 

3.2.5、注意:我所使用的是PHP7.4版本的,加密后网站是可以正常访问,实操验证过。可据其他PHPer说PHP8版本不支持,我没验证过。

 

4、参考资料

 

posted @ 2024-12-16 13:42  疯子丶pony  阅读(26)  评论(0编辑  收藏  举报