Minggu, 23 Maret 2014

Enkripsi Script PHP Agar Source Code Web PHP Tidak Bisa Dibaca, Menggunakan Fungsi Eval dan Encode 64

Enkripsi Script PHP Agar Source Code Web PHP Tidak Bisa Dibaca, Menggunakan Fungsi Evel dan Encode 64 cukup mudah dilakukan akan tetapi hasilnya cukup efektif untuk menyembunyikan kode program PHP sehingga sulit dibaca atau diedit oleh orang awam.

Tetapi sebenarnya cara ini bukan benar-benar mengamankan Script PHP akan tetapi hanya membuat bingung atau istilahnya obfuscate PHP script sehingga susah untuk dipecahkan walaupun oleh orang yang paham (programmer) dan bahkan kemungkinan besar tidak akan bisa dibaca atau dipecahkan oleh orang awam.

Dalam contoh program yang penulis buat terdiri dari 4 buah file, dengan urutan sebagai berikut :



1. decoded.php (file PHP asli yang dapat dibaca)
2. php-encoder.php (script PHP untuk mengenkripsi script yang ada di file decoded.php menjadi file encoded.php.
3. encoded.php (file PHP yang sudah dienkripsi sehingga tidak dapat dibaca tetapi masih dapat dijalankan secara sempurna.
4. php-decoder.php (script PHP untuk mengembalikan script terenkripsi yang ada pada file encoded.php menjadi file script PHP yang dapat dibaca kembali menjadi file decoded.php.

Jadi urutan pengetesannya kira-kira sebagai berikut :
decoded.php -> php-encoder.php -> encoded.php -> php-decoder.php -> decoded.php -> dst.

Misalnya kita buat contoh file script PHP pada decoded.php sebagai berikut :
decoded.php :

<?php echo date("Y-m-d")." Hello World"; ?>

Jika dijalankan dengan cara memanggil halaman web tersebut dengan URL http://localhost/php-encoder/decoded.php akan tampil sebagai berikut :


Kemudian kita buat program PHP dengan nama php-encoder.php  untuk mengenkripsi script php yang ada pada file decoded.php.
php-encoder.php :

<?php /*$php_code = '<?php echo date("Y-m-d")." Hello World"; ?>';*/ $php_code = file_get_contents("decoded.php"); //$_F=__FILE__; $_X='?>'.$php_code; $_X=strtr($_X,'aouie123456','123456aouie'); $_X=base64_encode($_X); //$_R=ereg_replace('__FILE__',"'".$_F."'",$_X); $result = "<?php \$_F=__FILE__;\$_X='".$_X."'; eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLC cxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GS UxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>"; file_put_contents("encoded.php", $result); echo str_replace('<','&lt',str_replace('>','&gt',$result)); ?>

Jika halaman php-encoder.php dijalankan dengan cara memanggil http://localhost/php-encoder/php-encoder.php. Hasilnya akan didapatkan file baru dengan nama encoded.php :



encoded.php :

<?php $_F=__FILE__;$_X='Pz48P3BocA0KNWNoMiBkMXQ1KCJZLW0tZCIpLiIgSDVsbDIgVzJybGQiOw0KPz4='; eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLC cxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GS UxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Kenyataanya jika halaman encoded.php yang sudah terenkripsi dan tidak dapat dibaca ini dijalankan dengan cara menanggil http://localhost/php-encoder/encoded.php, ternyata hasilnya persis seperti ketika menjalankan halaman decoded.php.


Untuk mengembalikan file yang terlah terenkripsi menjadi script PHP semula, kita buat file php-decoder.php untuk mengubah file encoded.php kembali menjadi file decoded.php yang mampu dibaca kembali.
php-decoder.php

<?php $_F=__FILE__; $encode = file_get_contents("encoded.php"); $_X = substr($encode, strpos($encode, "='") + 2, strpos($encode, "';") - strpos($encode, "='") - 2); //$_X='Pz48P3BocA0KNWNoMiAiSDVsbDIgVzJybGQiOw0KPz4='; $_X=base64_decode($_X); $_X=strtr($_X,'123456aouie','aouie123456'); $_R=ereg_replace('__FILE__',"'".$_F."'",$_X); $_R=substr($_R, 2, strlen($_R)-2); file_put_contents("decoded.php", $_R); echo str_replace('<','&lt',str_replace('>','&gt',$_R)); ?>

Ketika dijalankan dengan memanggil URL http://localhost/php-encoder/php-decoder.php maka akan dihasilkan file decoded.php kembali dengan isi persis seperti semula.


decoded.php

<?php echo date("Y-m-d")." Hello World"; ?>

File project selengkapnya dapat anda download disini. Jika bingung cara download, silakan lihat caranya disini.

Semoga bermanfaat :D

5 komentar:

  1. mass setelah saya coba terdapat error
    Deprecated: Function ereg_replace() is deprecated in C:\xampp\htdocs\rahasia\encoded.php(4) : eval()'d code on line 1
    mohon solusinya

    BalasHapus
  2. nanti semua file nya di upload kemana ya mas?
    maaf masih newbie

    BalasHapus
  3. thanks gan infonya

    kunjungi hargaalatantrianc2000.blogdetik.com pusatmesinantrianc2000.blogspot.co.id
    pusat alat antrian otomatis +software dan alat survey kepuasan pelanggan
    kami menjual alat antrian:

    -alat antri sederhana
    -alat antri berbasis android
    -survey kepuasaan layanan
    -kiosk
    -dan juga berbagai macam type tentunya

    hubungi www.alatantrian.com
    denny@cendana2000.com 082130345677

    BalasHapus
  4. kalau mau ganti key nya gmn gan ? "aouie123456", misal kita mau pakai kode kita sendiri

    BalasHapus
  5. Wah mantap gan, Lumayan Buat Belajar

    BalasHapus