리눅스

PHP에서 ScrewIM 확장 모듈을 설치하는 방법

변군이글루 2023. 8. 3. 22:27
반응형

PHP에서 ScrewIM(screwim) 확장 모듈을 설치하는 방법

ScrewIM 모듈이란?

ScrewIM은 PHP 코드를 암호화하여 소스 코드 유출을 방지하고 불법 복제를 어렵게 만드는 확장 모듈입니다. PHP 애플리케이션의 보안을 강화하는 데 효과적입니다.

테스트 환경

$ lsb_release -d
Description:	Ubuntu 22.04.2 LTS
$ php --version
PHP 8.1.2-1ubuntu2.13 (cli) (built: Jun 28 2023 14:01:49) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.13, Copyright (c), by Zend Technologies

필수 패키지 설치

sudo apt-get install -y build-essential autotools-dev zlib1g-dev
sudo apt-get install -y php-devel php-pear

Screw(screwim) 확장 모듈 설치

소스 코드 다운로드

cd /usr/local/src/
git clone https://github.com/OOPS-ORG-PHP/mod_screwim.git
cd mod_screwim

매직 키(Magic key) 수정

  • #define SCREWIM "\tSCREWIM DATA\t"
vim php_screwim.h
 34 #ifndef PHP_SCREWIM_H
 35 #define PHP_SCREWIM_H
 36 
 37 #define SCREWIM     "\tSCREWIM DATA\t"
 38 #define SCREWIM_LEN 14
 39 
 40 /* If build PHP module {{{
 41  */
 42 #ifndef NO_PHP_MOD

Screwim 컴파일 및 설치

컴파일

phpize
./configure --with-php-config=/usr/bin/php-config

시드 키(Seed Key) 변경

  • #define SCREWIM_ENC_DATA 14740, 18008, 5850, 3720, 19113, 5486, 19825, 22165, 4432
vim config.h
 58 /* define to support ScrewIm decrypt api */
 59 /* #undef SCREWIM_DECRYPT */
 60 
 61 /* Define to ScrewIm encrypt SEED key */
 62 #define SCREWIM_ENC_DATA 14740, 18008, 5850, 3720, 19113, 5486, 19825, 22165, 4432
 63 
 64 /* Define to ScrewIm Name */
 65 #define SCREWIM_NAME "ScrewIm"

설치

sudo make install

PHP에 Screwim 확장 모듈 로드

  • Screwim 확장 모듈을 로드하도록 설정합니다.
echo "screwim.enable = 1" | sudo tee /etc/php/8.1/mods-available/screwim.ini
echo "extension=screwim.so" | sudo tee -a /etc/php/8.1/mods-available/screwim.ini
sudo ln -s /etc/php/8.1/mods-available/screwim.ini /etc/php/8.1/fpm/conf.d/91-screwim.ini
sudo ln -s /etc/php/8.1/mods-available/screwim.ini /etc/php/8.1/cli/conf.d/91-screwim.ini

또는

echo "extension=screwim.so" | sudo tee /etc/php/$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')/mods-available/screwim.ini
sudo phpenmod screwim
728x90

Screwim 모듈 설치 확인

  • php -m 명령을 사용하여 Screwim이 PHP에 올바르게 설치되었는지 확인할 수 있습니다.
php -m | grep screwim
$ php -m | grep screwim
screwim

웹 서버 및 PHP-FPM 재시작

웹 서버와 PHP-FPM을 재시작

sudo systemctl restart nginx php-fpm

명령행 암화화 도구(screwim 명령어 설치하는 방법)

cd tools
./autogen.sh
./configure
sudo make install

 

which screwim
$ which screwim
/usr/local/bin/screwim

 

$ screwim -h
screwim 1.0.6 : encode or decode php file
Usage: screwim [OPTION] PHP_FILE
   -c VAL, --convert=VAL convert key byte to digits
   -d,     --decode   decrypt encrypted php script
   -h,     --help     this help messages
   -H VAL, --hlen=VAL length of magic key(SCREWIM_LEN or PM9SCREW_LEN).
                      use -d mode
   -k VAL, --key=VAL  key bytes. use with -d mode
   -v,     --view     print head length and key byte of this file

screwim 명령어를 사용하여 파일 암호화하는 방법

암호화할 파일 생성

echo "AAA3" > zz.txt
$ cat zz.txt
AAA3

 

$ file zz.txt
zz.txt: ASCII text

파일 암호화

screwim zz.txt
$ screwim zz.txt
Success Crypting(zz.txt.screw)

 

$ file zz.txt.screw
zz.txt.screw: data

 

$ cat zz.txt.screw
	SCREWIM DATA	l�qC���p��

파일 복호화

screwim --decode zz.txt.screw
$ screwim --decode zz.txt.screw
Success Decrypting(zz.txt.screw.discrew)

 

$ file zz.txt.screw.discrew
zz.txt.screw.discrew: ASCII text

 

$ cat zz.txt.screw.discrew
AAA3

 

참고URL

- PHP Screw Improved(ScrewIm) 확장 모듈 : https://github.com/OOPS-ORG-PHP/mod_screwim/blob/master/README.ko.md

 

728x90
반응형