忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/07/23 19:52 |
PHP5.3.3 blencでPHPソースを暗号化(復号できない)
PHPはソースが平文です。
シェアウェアのMovableTypeや、はてまた糞高いSitePublisですら、ソースさえ手に入れてしまえばどうとでもできてしまいます。

ということでソースを暗号化してしまいましょう。
BlencというBLowfishライブラリを見つけましたが、日本語情報がマニュアルのコピペサイト以外一切ありません。
どうなってんだ。

PECLなのでLinuxであれば適当にpecl installとかしてください。
Windowsはdllが用意されているので拾ってきてphp.iniにextensionを書けばOKです。
extension=php_blenc.dll
blenc.key_file = C:\xampp\blenc.key_file
blenc.key_fileは暗号化キーを保存する場所の設定です。
デフォルトは'/usr/local/etc/blenckeys'になっているので、Windowsでは変更必須です。
ini_set()で変更してもいいです。
<?php
	
	// 暗号化するソース
	$source = file_get_contents('path/to/hoge.php');
	
	// 暗号化して書き込み。返り値は暗号化キー
	$key = blenc_encrypt($source, 'path/to/hoge.encrypt.php');
	
	// 暗号化キーも保存
	file_put_contents($ini_get('blenc.key_file'), $key, FILE_APPEND);
hoge.phpをBlowfishで暗号化した結果がhoge.encrypt.phpとして保存されました。
中を見てみると、全く読むことができない状態になっているのがわかります。

そしてこのhoge.encrypt.php、直接PHPファイルとして取り扱い可能です。

Fatal error: blenc_compile: Module php_blenc was expired. Please buy a new license key or disable the module. in Unknown on line 0

おうふ。

expiredってなんだよ。

Blencのソースを見てみる。

http://svn.php.net/viewvc/pecl/blenc/trunk/blenc.c?view=markup
	// エラーはここで発生
	if(BL_G(expired)) {
		zend_error(E_ERROR, "blenc_compile: Module php_blenc was expired. Please buy a new license key or disable the module.");
		return NULL;
	}
	
	// BL_Gはexpire_charと比較してる
	BL_G(expire_date) = pemalloc(sizeof(expire_char), TRUE);
	
	// expire_charはBLENC_PROTECT_EXPIRE
	char expire_char[] = BLENC_PROTECT_EXPIRE;
http://svn.php.net/viewvc/pecl/blenc/trunk/blenc_protect.h?view=markup
	// BLENC_PROTECT_EXPIREは2013年4月30日
	#define BLENC_PROTECT_EXPIRE "30-04-2013"
なんだこれ。

ということでソースからコンパイルできる人続きを頼んだ。

PR


2013/12/27 19:17 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<買ったものリスト 2013/12/29 | HOME | Dust: An Elysian Tail Chapter11>>
忍者ブログ[PR]