변군이글루 블로그(Development)
[draft] PHP에서 ScrewIM 확장 모듈을 설치하는 방법 본문
728x90
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
'리눅스' 카테고리의 다른 글
grubby 명령어 (0) | 2023.08.07 |
---|---|
셸(Shell) 스크립트에서 전역 변수와 로컬 변수를 사용하는 방법 (0) | 2023.08.04 |
File Browser를 Docker 컨테이너로 올리고 사용하는 방법(File Browser 설치) (0) | 2023.08.02 |
Squid의 액세스 로그(access_log)에 사용자 정의 포맷으로 설정하는 방법 (0) | 2023.08.02 |
리눅스에서 네트워크 어댑터의 MTU를 변경하는 방법(Adapter MTU 변경) (0) | 2023.07.30 |