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

PHP-Beast 代码加密

权韬
2023-12-01

1 如果你只想让别人看不懂你的代码,你可可以使用代码混淆,让php代码失去可读性。混淆的代码能否被解密只取决于别人对你的代码的兴趣大小。

2 实现代码加密,并指定服务器上才能运行。只能依赖带php扩展形式PHP-Beast。带php扩展,代码解析速度几乎没有影响。而且解密难度特别高。

下载

§wget https://github.com/liexusong/php-beast/archive/master.zip
$ unzip master.zip
$ cd php-beast-master

先配置 再编译(网上很多文章都是下载后直接编译,这种做法虽然能加密,但是使用默认配置就很容易解密)

  1. 修改自定义文件头header.c 字母范围 a-f 数字范围0-8

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

2.修改aes模块加密key: aes_algo_handler.c 字母范围 a-f 数字范围0-8

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

3.修改des模块加密key: des_algo_handler.c 字母范围 a-f 数字范围0-8

static char key[8] = {
0x21, 0x1f, 0xe1, 0x1f,
0xy1, 0x9e, 0x01, 0x0e,
};

4.修改base64模块加密key: base64_algo_handler.c

static const short base64_reverse_table[256] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};

5.限制网卡地址 networkcards.c

char *allow_networkcards[] = {
   "网卡1的MAC地址","网卡2的MAC地址",
};

可以指定多个网卡地址,

如果运行环境的网卡名字不是 eth0,

php.ini里指定 beast.networkcard = “eth0,eth1,eth2”

编译 php-config的路径根据自己的实际情况而定。

phpize
./configure --with-php-config=/www/server/php/74/bin/php-config
make && make install

不指定php-config的路径肯定会报错。

成功后 修改php.ini (具体参数依自己的实际配置)

extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/beast.so
beast.enable=on
beast.networkcard = "eno1"

如果你修改了配置文件,一定要重新编译生成beast.so 否则修改是不会生效的。

加密方案1:

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

src_path = ""
dst_path = ""
expire = ""
encrypt_type = "DES"

src_path 是要加密项目的路径,

dst_path 是保存加密后项目的路径,

expire 是设置项目可使用的时间 (expire 的格式是:YYYY-mm-dd HH:ii:ss)。

encrypt_type是加密的方式,选择项有:DES、AES、BASE64。

修改完 configure.ini 文件后就可以使用命令 php encode_files.php 开始加密项目。

加密方案2:

使用beast_encode_file()函数加密文件

php encode_file.php --encrypt DES --oldfile $input_file --newfile $output_file --expire $expire

  1. $input_file: 要加密的文件

  1. $output_file: 输出的加密文件路径

  1. $expire: 文件过期时间戳 "2016-10-10 10:10:10"

  1. $encrypt_type: 加密使用的算法(支持:BEAST_ENCRYPT_TYPE_DES、BEAST_ENCRYPT_TYPE_AES)

以上方法都是亲自测试过,网上查询到的文章很多都是残缺不全的,自己要有判断力。

 类似资料: