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 |