38 BAB 4 IMPLEMENTASI DAN HASIL PERANCANGAN
4.1 Spesifikasi kebutuhan sarana Untuk menjalankan program aplikasi ini dibutuhkan perangkat keras dan perangkat lunak dengan spesifikasi sebagai berikut:
4.1.1
Spesifikasi perangkat keras yang dibutuhkan Spesifikasi dari perangkat keras yang dianjurkan untuk digunakan dalam mengoperasikan program aplikasi ini adalah sebagai berikut: Unit Sistem PC dengan rincian spesifikasi:
4.1.2
•
CPU Intel Pentium IV 1,2 GHz
•
Memori 256 Mb
•
Hard disk 40 GB
•
Resolusi monitor 1024 x 768 pixels
Spesifikasi perangkat lunak yang dibutuhkan Spesifikasi dari perangkat lunak yang dibutuhkan untuk implementasi perancangan program aplikasi ini sebagai berikut: •
Sistem Operasi: Windows 98, ME, 2000, atau XP
•
Compiler Software: Borland Delphi 7.0, Macromedia Flash MX 2004
•
Decompiler Software: Sothink SWF Decompiler MX 2005
•
File Viewer: Flash Player 7, FileSee 3.1
39 4.2 Persiapan Data File yang diperlukan sebagai data input adalah file berformat SWF (berekstensi *.swf). File ini dapat dibuat dengan menggunakan program Macromedia Flash MX 2004. Sebelum menjalankan program aplikasi obfuskasi ini dianjurkan untuk memperhatikan hal-hal berikut: •
Terdapat variabel/nama objek di dalam bahasa pemrograman ActionScript yang sedang diimplementasikan.
•
User tahu secara sekilas mengenai variabel/nama objek apa saja yang ada di dalam file input SWF. Hal ini untuk mencegah terjadinya kesalahan pengacakan yang seharusnya tidak diperlukan, misalnya sebuah pesan yang digunakan untuk menampilkan informasi pada komponen alert box.
•
Sebaiknya tidak mengandung variabel yang di-load dari bahasa pemograman lainnya (seperti ASP, PHP, .XML, .NET, dll), kecuali user memang tahu persis variabel mana saja yang merupakan variabel eksternal tersebut. User dapat tidak mengacak variabelvariabel tersebut pada modul obfuscation.
•
Khusus penggunaan komponen (scrollbar, combo box, progress bar, dll), tidak semua atribut-atribut komponen boleh diacak variabelnya atau nama objeknya. Jika terdapat variabel/nama objek yang user tidak ingat telah membuatnya maka sebaiknya tidak perlu diacak. Hal ini dapat menyebabkan hilangnya fungsionalitas dari komponen yang sedang digunakan tersebut.
•
Besar file input SWF tidak terbatas. Namun perlu diingat bahwa semakin besar file SWF maka harus diimbangi dengan penggunaan hardware yang mendukung, terutama prosesor dan memori.
40 4.3 Pengoperasian program aplikasi obfuskasi RSA Program aplikasi ini dijalankan dengan menjalankan executable filenya yaitu AS Obfuscator.exe. Setelah itu akan muncul tampilan layar menu utama yang di dalamnya sudah terdapat seluruh modul yang siap digunakan. Tampilan seluruh modul ini dirancang dalam bentuk tab sehingga user dapat langsung berpindah modul tanpa harus kembali ke modul manapun. Fungsi-fungsi yang ada di dalam layar menu utama merupakan fungsi-fungsi umum yang dapat digunakan oleh keseluruhan aplikasi seperti open file, exit, dan beberapa menu item. Layar menu utama dapat dilihat pada gambar 4.1.
Gambar 4.1 Layar menu utama
41 Pertama kali program ini membutuhkan file input SWF yang dapat diperolah dengan menekan tombol open pada layar menu utama. Setelah memilih file input SWF maka secara otomatis proses tags parsing akan dijalankan. Hasil proses parsing ini dapat dilihat pada menu SWF Info.
4.3.1
Pengoperasian menu SWF Info Karena secara default menu SWF Info ini selalu muncul ketika program aplikasi mulai dijalankan maka user dapat langsung menggunakan menu ini. Ketika file SWF telah dipilih maka secara otomatis proses tags parsing dijalankan dan hasilnya dapat dilihat pada menu ini.
Gambar 4.2 Layar menu SWF Info
42 Informasi mengenai SWF type, version, file size, movie dimension, frame rate, total frames, dan background color diperoleh setelah program aplikasi membaca header file dari SWF tersebut. Dan pada bagian tabel dapat dilihat urutan tag-tag yang dijalankan oleh komputer. Pada contoh ini penulis menggunakan file matrix.swf sebagai file input. File ini mengandung sintaks ActionScript untuk menjalankan efek spesial “Matrix the Movie”.
Gambar 4.3 File input Matrix.swf
4.3.2
Pengoperasian menu SWF Member List Untuk dapat masuk ke menu ini cukup dengan menekan tab SWF Member List pada menu layar utama. Menu ini hanya menampilkan nama-nama objek yang digunakan pada file SWF seperti sprite, edit text, init action object dan frame label. Daftar nama-nama objek akan muncul setelah proses tags parsing selesai dilakukan. Pada contoh hanya terdapat objek/member yang digunakan pada file SWF ini, yakni kata_txt yang bertipe edit text.
43
Gambar 4.4 Layar menu SWF Member List
4.3.3
Pengoperasian menu Parse Action Pada menu ini hanya terdapat tombol “Parse Action”. Tombol ini akan aktif setelah proses tags parsing selesai dilakukan, yakni setelah user telah memilih file input SWF. Fungsi tombol ini adalah untuk melakukan proses action parsing guna mencari variabel/nama objek dari file SWF tersebut, serta menyaring variabel/nama objek tersebut dari reserved-word dan identifier yang digunakan dalam bahasa pemrograman ActionScript. Hasil proses action parsing dapat dilihat pada bagian Action Report, dan hasil filter variabel/nama objek dapat dilihat pada tabel variable(s) yang tersedia.
44
Gambar 4.5 Layar menu Parse Action
4.3.4
Pengoperasian menu Obfuscation Secara umum menu obfuscation berfungsi untuk melakukan enkripsi dengan metode enkripsi RSA dan membuat file baru hasil enkripsi tersebut. Setelah selesai melakukan proses action parsing yang dilakukan pada menu parse action maka daftar nama variabel/nama objek yang sudah disaring sebelumnya akan muncul pada table variable(s) obfuscation, dengan informasi nomor urut, variable name, dan position. Kolom obfuscated name akan terisi setelah user melakukan proses obfuscate nanti. Proses enkripsi dimulai dengan memasukkan dua angka bilangan prima, dengan bilangan prima pertama sebagai p dan bilangan prima kedua sebagai q. Kedua
45 bilangan prima tersebut dapat diperoleh dengan dua cara, yakni dengan memilih radio button “Generate Random Prime Number” atau radio button “Insert Own Prime Number”. Kedua bilangan prima yang diperoleh tersebut tidak melebihi dari angka 100. Setelah itu user dapat menekan tombol “Generate” untuk mendapatkan hasil perhitungan algoritma enrkipsi RSA atau menekan tombol “Clear” untuk memasukkan bilangan prima yang baru. Hasil perhitungan algoritma enkripsi RSA dapat dilihat pada bagian result, dengan nilai - nilai yang diperoleh adalah sebagai berikut: i.
modulus = p x q
ii.
totient = (p-1) x (q-1)
iii.
e atau “Encryption Exponent Possibility Number” = ( [GCD(1< e < totient, p-1) = 1] and [GCD(1 < e < totient, q-1) = 1] )
User harus memilih salah satu nilai dari e atau “Encryption Exponent Possibility Number” tersebut. Ketika tombol “Generate” ditekan maka kolom obfuscated name
dari setiap variabel/nama objek akan terisi sesuai perhitungan
algoritma enkripsi RSA diatas. User dapat memilih variabel/nama objek mana saja yang ingin dan tidak ingin diacak dengan mengaktifkan/menon-aktifkan tanda pada awal kolom. Terakhir, tombol “Create Obfuscated SWF” akan membuat file SWF baru dengan mengganti variabel/nama objek yang lama dengan obfuscated name. Pesan konfirmasi akan tampil setelah program aplikasi selesai membuat file SWF yang baru. File SWF baru tersebut tidak akan menimpa file input SWF. Secara default,
format
penamaan
file
baru
tersebut
adalah
46 “[nama_file_input_SWF]_obfuscated.swf”. User dapat membandingkan file SWF baru tersebut apakah telah berjalan sesuai dengan file SWF yang asli.
Gambar 4.6 Layar menu Obfuscation
4.3.5
Pengoperasian menu Report Menu Report merupakan laporan hasil obfuskasi setelah program aplikasi berhasil membuat file SWF yang baru, yang diproses sebelumnya pada modul Obfuscation. Laporan ini berisi alamat direktori dari file SWF yang baru, nilai input/output algoritma enkripsi RSA, dan perbandingan variabel/nama objek yang berhasil diacak. Tombol “Save Log” berfungsi untuk menyimpan format laporan
47 tersebut dalam bentuk Rich Text Format (berekstensi *.rtf). Pesan konfirmasi akan tampil setelah file laporan tersebut berhasil dibuat.
Gambar 4.7 Layar menu Report
Berikut adalah hasil perbandingan file SWF sebelum dan sesudah diacak dengan menggunakan bantuan program “Sothink SWF Decompiler MX 2005”.
48
Gambar 4.8 ActionScript sebelum diacak
Gambar 4.9 ActionScript setelah diacak
49 Sebelum diacak, ActionScript yang tertera adalah: // Action script... // [Action in Frame 1] function dropStart() { if (Math.random() > 0.900000) { this._visible = true; this.onEnterFrame = drop; } // end if } // End of the function function drop() { trailName = "trail" + trail; trail++; attachMovie("katakana", trailName, trail); _root[trailName]._x = this._x; _root[trailName]._y = this._y; _root[trailName]._xscale = this._xscale; _root[trailName]._yscale = this._yscale; _root[trailName].kata_txt = this.kata_txt; _root[trailName].fader_color = new Color(_root[trailName]); _root[trailName].fader_color.setRGB(3394611); _root[trailName].onEnterFrame = fadeTrail; this.kata_txt = String.fromCharCode(Math.floor(Math.random() 26) + 97); this._y = this._y + (this._yscale / 10 + 10); if (this._y > 400) { this._x = Math.round(Math.random() * 550); this._y = 0; } // end if } // End of the function function fadeTrail() { if (trail > 500) { this.removeMovieClip(); trail = 100; } // end if } // End of the function getURL("FSCommand:fullscreen", true); trail = 100; for (i = 0; i < 20; i++) { scale = Math.random() * 200; newName = "char" + i; attachMovie("katakana", newName, i); _root[newName]._x = Math.round(Math.random() * 550); _root[newName]._xscale = scale; _root[newName]._yscale = scale; _root[newName]._visible = false; _root[newName].onEnterFrame = dropStart; } // end of for
*
50 Setelah diacak, ActionScript yang tertera adalah: // Action script... // [Action in Frame 1] function UgdeDiRgi() { if (Math.random() > 0.900000) { this._visible = true; this.onEnterFrame = Ugde; } // end if } // End of the function function Ugde() { igRZayRbV = "igRZa" + igRZa; igRZa++; attachMovie("katakana", igRZayRbV, igRZa); _root[igRZayRbV]._x = this._x; _root[igRZayRbV]._y = this._y; _root[igRZayRbV]._xscale = this._xscale; _root[igRZayRbV]._yscale = this._yscale; _root[igRZayRbV].$RiRPimi = this.$RiRPimi; _root[igRZayRbV].WRUVgPTdadg = new Color(_root[igRZayRbV]); _root[igRZayRbV].WRUVgPTdadg.setRGB(3394611); _root[igRZayRbV].onEnterFrame = WRUVEgRZa; this.$RiRPimi = String.fromCharCode(Math.floor(Math.random() 26) + 97); this._y = this._y + (this._yscale / 10 + 10); if (this._y > 400) { this._x = Math.round(Math.random() * 550); this._y = 0; } // end if } // End of the function function WRUVEgRZa() { if (igRZa > 500) { this.removeMovieClip(); igRZa = 100; } // end if } // End of the function getURL("FSCommand:fullscreen", true); igRZa = 100; for (Z = 0; Z < 20; Z++) { hTRaV = Math.random() * 200; cVlyRbV = "TYRg" + Z; attachMovie("katakana", cVlyRbV, Z); _root[cVlyRbV]._x = Math.round(Math.random() * 550); _root[cVlyRbV]._xscale = hTRaV; _root[cVlyRbV]._yscale = hTRaV; _root[cVlyRbV]._visible = false; _root[cVlyRbV].onEnterFrame = UgdeDiRgi; } // end of for
*
51 4.4 Kelebihan Dan Kekurangan Program Aplikasi Yang Dirancang Berdasarkan hasil penelitian dan perancangan program aplikasi ini, dapat ditilik beberapa hal yang menjadi keunggulan dan kelemahan. Kelebihan dari rancangan program aplikasi ini: 1. Tidak terdapat perubahan ukuran file setelah dilakukan proses pengacakan. Ukuran file yang telah diacak tersebut akan sama besarnya dengan ukuran file SWF yang asli. Hal ini akan menjamin ukuran fie tetap kecil setelah dipublish ke dalam jaringan internet. 2. User dapat memilih variabel/nama objek mana saja yang perlu dan tidak perlu diacak. Hal ini sangat berguna untuk menjamin file hasil obfuskasi tetap berjalan seperti pada file SWF yang asli. 3. Memberikan informasi mengenai urutan kerja komputer ketika menjalankan file SWF. Informasi ini dapat dilihat pada tabel tag list dan tabel action report. 4. Perhitungan RSA yang sederhana membuat perhitungan pengacakan setiap variabel/nama objek berjalan dengan cepat. 5. Desain program dalam bentuk tab sehingga memudahkan user untuk berpindah-pindah menu tanpa harus kembali ke menu tertentu.
52 Kekurangan dari rancangan program aplikasi ini: 1. User yang dapat menggunakan program aplikasi ini adalah user yang telah mengerti seluk beluk bahasa pemrograman ActionScript. User yang bersangkutan juga harus mengerti mengenai file SWF yang akan diacak. 2. Filter variabel yang kurang sempurna menyebabkan sulitnya membedakan variabel/nama objek yang tidak perlu diacak. 3. Jika terdapat penggunaan komponen (seperti scrollbar, combo box, progress bar, dll) maka variabel/nama objek yang terkait dengan komponen tersebut tidak perlu diacak. Deklarasi variabel/nama objek yang panjang untuk satu komponen saja membutuhkan kejelian user untuk tidak mengacaknya. Karena deklarasi setiap komponen yang berbeda-beda menyebabkan sulitnya untuk menyaring variabel/nama komponen tersebut.