3. III. ANALISA DAN PERANCANGAN
3.1 ANALISA KEBUTUHAN Pemilik aplikasi berbasis web yang ditempatkan pada public hosting service menginginkan aplikasi yang bisa menyembunyikan kode sumbe PHP agar tidak mudah dibaca dan digunakan oleh orang yang tidak berhak menggunakan fasilitas standar yang ada di public hosting service. Alur proses yang diharapkan sebagai berikut:
Gambar 3.1 Flowchart PHP Encoding
55
56
3.2 ANALISA KONDISI PUBLIC WEB HOSTING Fungsi-fungsi PHP yang terpasang pada public web hosting umumnya adalah fasilitas standar dengan penambahan beberapa fungsi non-standar. Fungsi-fungsi non-standar “premium” yang terpasang antara lain: 1. Zend Optimizer. Digunakan untuk menjalankan PHP yang telah dicompile dan diencode sebelumnya menggunakan aplikasi Zend. 2. Source Guardian. Digunakan untuk menjalankan PHP yang telah diencode sebelumnya menggunakan aplikasi Source Guardian. 3. IonCube. Digunakan untuk menjalankan PHP yang telah diencode sebelumnya menggunakan aplikasi IonCube. Fungsi dasar yang berhubungan dengan compress/decompress, encode/decode dan encrypt/decrypt antara lain: 1. Base64_encode, fungsi untuk meng-encode text/binary menjadi text berbasis 64. 2. Base64_decode, fungsi untuk men-decode text berbasis 64 menjadi text/binary. 3. Mcrypt_encrypt, fungsi untuk mengenkrip text menggunakan metode enkripsi yang tersedia (DES, TripleDES, Blowfish (default), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 dan GOST). 4. Mcrypt_decrypt, fungsi untuk mendekrip text yang telah dienkrip menggunakan metode dekripsi yang tersedia. 5. Gzcompress, fungsi untuk meng-compress text menggunakan metode LZW. 6. Gzuncompress, fungsi untuk men-decompress text yang sudah ter-compress menggunakan metode LZW.
57
3.3 DESAIN APLIKASI Ide dasar pembuatan aplikasi yang penulis terjemahkan ke bentuk MindMap adalah sebagai berikut:
Gambar 3.2 MindMap pengembangan PHP Encoder
3.3.1 Desain menggunakan UML 3.3.1.1 Use case diagram
Gambar 3.3 Use Case diagram
58 Tabel 3.1 Narasi use case Open Console
Use case name
Open Console
Actor
PHP Owner
Brief Description
Use case ini merupakan awal dari proses Encode PHP, yaitu membuka console screen.
Exception
-
Basic Flow
1. Tekan Start – Run – ketik “cmd” – tekan enter (pada windows)
Alternative Flow
1. Tekan Menu – System Tools – Console (pada linux)
Pre-condition
Console belum terbuka
Post-condition
Console terbuka
Tabel 3.2 Narasi use case Prepare PHP
Use case name
Prepare PHP
Actor
PHP Owner
Brief Description
Use case ini merupakan tahap persiapan sebelum encode PHP
Exception
PHP yang sudah ter-encode tidak perlu melewati use case ini.
Basic Flow
1. Pastikan file PHP sudah ada dan tidak bermasalah atau tidak ada error di dalamnya. 2. Copy file PHP tersebut pada direktori PHPEncoder 3. Tentukan nama file yang akan di encode 4. Tentukan nama file output dari PHPEncoder
Alternative Flow
-
Pre-condition
PHP file belum siap di-encode
Post-condition
PHP file siap di-encode
Tabel 3.3 Narasi use case Encode PHP
Use case name
Encode PHP
Actor
PHP Owner
Brief Description
Use case ini merupakan bagian utama dalam PHPEncoder
Exception
File PHP yang sudah ter-encode tidak perlu melewati tahap ini.
59 Basic Flow
1. Buka file yang sudah disiapkan sebelumnya 2. Baca file dan tempatkan text hasil pembacaan pada variabel A 3. Encode text pada variabel A dan tempatkan hasil Encode pada variabel B 4. Buat file baru dengan nama yang sudah disiapkan sebelumnya, jika file sudah ada, batalkan proses 5. Tulis hasil encode yang ada pada variabel B pada file baru 6. Tutup file asal, tutup file tujuan.
Alternative Flow
-
Pre-condition
File PHP asal sudah siap dan belum ter-encode
Post-condition
File PHP ter-encode pada file tujuan yang baru dibuat.
Tabel 3.4 Narasi use case Compress Text
Use case name
Compress Text
Actor
-
Brief Description
Use case ini merupakan bagian dari use case Encode PHP
Exception
-
Basic Flow
1. Compress text yang ada pada variabel A menggunakan fungsi PHP gzcompress() 2. Tempatkan hasil kompresi pada variabel C
Alternative Flow
-
Pre-condition
Text belum ter-compress
Post-condition
Text sudah ter-compress
Tabel 3.5 Narasi use case Encrypt Text
Use case name
Encrypt Text
Actor
-
Brief Description
Use case ini merupakan bagian dari use case Encode PHP
Exception
-
Basic Flow
1. Encrypt text yang ada pada variabel C menggunakan fungsi encrypt() 2. Tempatkan hasil enkripsi pada variabel E
60 Alternative Flow
-
Pre-condition
Text belum ter-encrypt
Post-condition
Text sudah ter-encrypt
Tabel 3.6 Narasi use case Encode Text
Use case name
Encode Text
Actor
-
Brief Description
Use case ini merupakan bagian dari use case Encode PHP
Exception
-
Basic Flow
1. Encode text yang ada pada variabel E menggunakan fungsi PHP base64_encode() 2. Tempatkan hasil encode pada variabel B
Alternative Flow
-
Pre-condition
Text belum ter-encode
Post-condition
Text sudah ter-encode
Tabel 3.7 Narasi use case Deploy PHP
Use case name
Deploy PHP
Actor
PHP Owner
Brief Description
Use case ini merupakan tahapan yang dilakukan Actor untuk mendeploy PHP pada server web hosting.
Exception
-
Basic Flow
1. Buka alat yang diperlukan untuk meng-upload file PHP ke server web hosting (misalnya: ftp client, web browser) 2. Login pada server 3. Upload file PHP yang sudah ter-encode ke server 4. selesai
Alternative Flow
-
Pre-condition
File terbaru yang sudah ter-encode belum ada di server
Post-condition
File terbaru yang sudah ter-encode sudah ada di server
61 3.3.1.2 Activity Diagram
Gambar 3.4 Activity diagram Encode PHP sampai Deploy PHP
Diagram di atas menjelaskan tahapan aktivitas yang dilakukan untuk encode PHP sampai deploy PHP yang sudah ter-encode pada server web hosting.
3.3.1.3 Sequence diagram Pada sequence diagram berikut menjelaskan alur secara berurutan tahapan proses yang dilakukan pada tiap-tiap entity yang bertugas sesuai dengan fungsinya dalam rangkaian proses encode PHP sampai deploy PHP yang sudah ter-encode pada server web hosting.
62
Console
PHP Owner
Server Local
Public Hosting Server
Storage
Open Console Prepare PHP Prepare PHP finished PHP Prepared Encode PHP PHPEncoder->encode() finished
proses encode
PHP Encoded Finished Login Login Validation Login Validation Validation Result
proses validasi
Validation Result Deploy PHP Simpan File Simpan File Status Penyimpanan
Status penyimpanan
Status penyimpanan
Finished Logout
Logout
Logout
Finished
Status logout
Status logout
Gambar 3.5 Sequence diagram proses encode PHP sampai Deploy PHP
3.3.2 Desain Proses PHP Encoder Desain Proses Encoding PHP adalah sebagai berikut:
Gambar 3.6 Proses Encoding PHP
proses logout
63 Gambar di atas menggambarkan proses Encoding file PHP menjadi file PHP yang terencode setelah file PHP tersebut di-encode menggunakan PHP encoder. Proses encoding PHP dilakukan sebagai berikut:
Gambar 3.7 Proses Encoding PHP
Gambar di atas menunjukkan proses encoding dalam PHP encoder yang melakukan urutan proses kompresi text dengan metode LZW (gz), enkripsi text dengan metode 3DES, dan encode text. Algoritma proses encoding PHP adalah sebagai berikut: GET SET SET SET SET SET SET SET SET SET
key k1 = key[1] k2 = key[2] k3 = key[3] text = text in PHP source file compressed_text = gzcompress(text) e1 = encrypt(compressed_text, k1) e2 = decrypt(e1, k2) encrypted_text = encrypt(e2, k3) encoded_text = base64_encode(encrypted_text)
64 Proses Decoding PHP digambarkan sebagai berikut:
Gambar 3.8 Proses Decoding PHP
Gambar di atas menggambarkan proses decoding text PHP yang terencode menjadi text yang tidak ter-encode setelah text tersebut di-decode. Proses decoding PHP dilakukan sebagai berikut:
Start
Decode Text
Decrypt Text
Decompress Text
End
Gambar 3.9 Proses Decoding PHP
Gambar di atas menunjukkan proses decoding dalam PHP encoder yang melakukan urutas proses decode text, dekrip text dengan metode 3DES, dan decompress text dengan metode LZW (gz).
65 Algoritma proses decoding PHP adalah sebagai berikut: GET SET SET SET SET SET SET SET SET SET
key k1 = key[1] k2 = key[2] k3 = key[3] encoded_text = encoded PHP code encrypted_text = base64_decode(encoded_text) d1 = decrypt(encrypted_text, k3) d2 = encrypt(d1, k2) compressed_text = decrypt(d2, k1) text = gzuncompress(compressed_text)
Proses menjalankan PHP yang sudah ter-encode digambarkan sebagai berikut:
Gambar 3.10 Proses run PHP ter-encode
Proses menjalankan PHP yang sudah ter-encode dilakukan sebagai berikut:
Gambar 3.11 Proses run PHP ter-encode
66 Gambar di atas menunjukkan proses menjalankan text PHP yang dalam keadaan terencode, yang kemudian di-decode dahulu sebelum kemudian dijalankan dengan perintah eval(). Algoritma proses run PHP ter-encode adalah sebagai berikut: SET encoded_text = text in encoded PHP SET text = decode(encoded_text) CALL eval(text)
3.3.3 Desain Interface Interface menggunakan command line interface (CLI) memanfaatkan fasilitas PHP CLI.
Gambar 3.12 Desain command line interface
Command Line yang akan digunakan adalah: encode.file
[kunci enkripsi] adalah file PHP yang akan di encode. harus diisi, dan nama file yang diisikan harus ada sebelumnya. Jika tidak diisi, maka proses encoding akan tidak dilakukan.
67 adalah nama file yang akan digunakan sebagai hasil dari PHP encoder. harus diisi, dan nama file yang diisikan tidak boleh ada sebelumnya. Jika tidak diisi, maka proses encoding akan tidak dilakukan. [kunci enkripsi] adalah kata kunci yang akan digunakan untuk enkripsi. [kunci enkripsi] ini tidak wajib diisi, jika tidak diisi, maka akan menggunakan kata kunci standar yang sudah dipersiapkan.