当前位置: 首页 > 工具软件 > php-beast > 使用案例 >

php-beast源码加密

林泰平
2023-12-01
下载源码 
wget https://github.com/liexusong/php-beast/archive/master.zip

解压 
unzip master.zip

进入源码目录 
cd php-beast-master

修改自定义文件头header.c

char encrypt_file_header_sign[] = {
    0xe8, 0x16, 0xa4, 0x0c,
    0xf2, 0xb2, 0x60, 0xee
};

修改默认的加密key。这里选用的是AES加密。因此修改aes_algo_handler.c文件,可以随机生成字符串替换。建议不要使用我测试时随便写的key。部署人员记得修改该key并保存。

static uint8_t key[] = {
    0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
    0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c,
};

为了安全机制,我们选择开启绑定网卡选项。修改networkcards.c文件,将MAC地址加进来。

char *allow_networkcards[] = {
   "替换成网卡的MAC地址", NULL,
};

开启绑定网卡以后,beast默认的网卡名字是eth0,如果你的网卡名字不是这个,后边需要将你的网卡名字加入到php.ini里。如:beast.networkcard = “eth0,eth1,eth2”。

使用phpize添加扩展

phpize 
./configure 
make install 

如果有一步报找不到php-config错误的话,手动加上php-config的路径编译。

安装完成后,修改php.ini

extension=beast.so 

重启php-fpm

到此为止,扩展安装完成。

加密代码
安装完 php-beast 扩展后,可以使用 tools 目录下的 encode_files.php 来加密你的项目。使用 encode_files.php 之前先修改 tools 目录下的 configure.ini 文件,如下:

; source path
src_path = ""

; destination path
dst_path = ""

; expire time
expire = ""

; encrypt type (selection: DES, AES, BASE64)
encrypt_type = "AES"

src_path 是要加密项目的路径,dst_path 是保存加密后项目的路径,expire 是设置项目可使用的时间 (expire 的格式是:YYYY-mm-dd HH:ii:ss)。encrypt_type是加密的方式,选择项有:DES、AES、BASE64。 修改完 configure.ini 文件后就可以使用命令 php encode_files.php 开始加密项目。

注意事项
步骤很多,但都是命令行。敲完命令就行了。
4,5,6是为了安全要做的。
绑定MAC地址以后,如果非绑定的MAC地址,重启php-fpm会无法启动,报错信息为NOTICE: PHP message: PHP Fatal error: Unable to start beast module in Unknown on line 0
failed
必须在绑定的网卡里才能加载生成的beast.so扩展。

部署安装方式
在目标机上安装扩展。装完扩展以后把php-beast-master目录的东西全部删除。
在部署的机子上也就是jenkins服务器上安装的扩展的目录不用删除,删除也行,记得备份第5步自定义的key。
在构建阶段执行自动化脚本执行php encode_files.php 加密代码。
在部署阶段将加密后的代码发布到目标机上。

原文链接:https://blog.csdn.net/u013705066/article/details/82703940

 类似资料: