̃Gg[͂ĂȃubN}[Nɒlj

PHP :: PHP Screw で PHPソースを暗号化



PHP Screw はオープンソースソフトウェアで、ロイヤリティフリー(無償)で使えます。


インストール

% wget "http://prdownloads.sourceforge.net/php-screw/php_screw-1.5.tgz?download"
% tar -xvf php_screw-1.5.tgz
% cd php_screw-1.5
% phpize


暗号化・復号化モジュールのカスタマイズ

% vi my_screw.h

変更前)
short pm9screw_mycryptkey[] = {
  11152, 368, 192, 1281, 62
};

変更後)あくまで例です
short pm9screw_mycryptkey[] = {
  123, 456, 789, 987, 654, 321
};

  • 暗号化SEEDキー(pm9screw_mycryptkey)をお好みの値に変更。
    • short型 なので 32767 以下にした方が無難?
  • 暗号化SEEDキーは長いほうが暗号化強度は高まります。
  • なお、キーの長さは復号処理の時間とは関係有りません。なるべくキーを長くとって下さい。


./configure , make

% ./configure
% make


modules/php_screw.so を extension用のディレクトリにコピー

% sudo cp modules/php_screw.so /usr/lib/php5/modules/
  • コピー先は環境に合わせて適宜変更。


screw コマンドの作成

% cd tools
% make
% sudo cp -p screw /usr/bin


php.iniに次の行を追加

extension=php_screw.so

最後に apacheを再起動して、インストール完了。


さっそく使ってみる

% vi test.php
<?php echo date("Y-m-d H:i:s")."\n"; ?>

暗号化
% screw test.php

 ↓

Success Crypting(screw.php) と出れば成功。

暗号化されたか確認
% less test.php
 ⇒ バイナリファイルになっていればOK。

バックアップとして、同ディレクトリに test.php.screw が作成されるので必ず削除します。
ただし、オリジナルは削除したらダメ。念のため…

  • 複数ファイルを一括暗号化するコマンド
% for f in `find /path/to/script/dir -type f -name "*.php"`; do
screw $f
rm -f $f.screw
done

xargs コマンドとの組み合わせは、うまくいかなかった。。



なお、screw で暗号化したサーバーと暗号化したスクリプトを実行するサーバーは同一でないと駄目っぽい。
サーバAで暗号化したスクリプトを screw がインストールされたサーバーBでは実行できないという事。
ただし、暗号化SEEDキー(pm9screw_mycryptkey)を同じにして双方のサーバーにインストールした場合はこの限りではないかも。(未確認)




programming/php/etc/php_screw.txt