Kerja Praktek – Persiapan

Hallo…

Pada postingan ini, saya ingin berbagi cerita mengenai kerja praktek saya liburan kemarin :D

Saya kerja praktek di Pertamina Pusat tepatnya di bagian IT Solution. Saya tidak sendiri, ananti (nti) dan riffa (iponk) turut menemani saya dalam kerja praktek ini. Sebenernya perjanjian dari perusahaannya kan 3 bulan, tapi karena waktu liburan cuma 2 bulan, maka mau ga mau kita harus menyelesaikan kerja praktek ini dalam waktu 2 bulan juga. Gimana bisa jadi 2 bulan?nah saya ceritakan pengalaman kp saya :D Secara garis besar pelaksanaan KP ini terbagi jadi 3 yaitu persiapan, pelaksanaan, dan pelaporan

Dimulai pada akhir bulan Mei dimana mahasiswa yang akan KP harus segera mempersiapkan segala keperluan untuk KP, mulai dari surat ijin kp, lembar penilaian, surat perjanjian, dan lain-lain. Sebelum melakukan KP, kita juga dibekali petuah-petuah dari dosen tentang bagaimana harus bersikap selama KP. Pokoknya kita diwanti-wanti supaya menjaga nama baik almamater dan juga jurusan :D . Selama persiapan itu, saya harus mondar-mandir ke kampus lebih tepatnya TU program studi untuk mengurus masalah KP ini. Saya juga harus berkali-kali menghubungi pihak pertamina (PLC) mengenai permintaan KP disana, untung ada Kak Roy yang membantu saya dalam mengurus masalah KP di pertamina. Tapi yang paling membuat saya sangat berkesan selama masa persiapan ini adalah saya harus meminta tanda tangan dari Ketua prodi untuk surat perjanjian (ada 3 surat perjanjian untuk saya, nti, dan iponk) nah masalah terjadi di TU dimana saat saya ingin mengambil surat perjanjiannya, ada 1 surat yang terselip sehingga masih belum di tandatangani oleh Kaprodi padahal hari itu sudah siang dan saya harus pergi ke bogor malamnya. Saya sudah sangat hopeless banget karena Kaprodi sedang pergi hingga sore dan TU tutup jam 15.30, saya sungguh bingung, saya juga sudah berencana untuk membatalkan kepulangan ke bogor. Hingga pukul 15.15 saya bolak-balik ke TU untuk mengecek surat itu, tapi bapak TU bilang Kaprodi masih belum dateng >,< , sebenernya saya juga tidak enak menanyakan terus ke TU soalnya bapak TU juga terkenal galak, saya takut juga sih klo bolak-balik nanyak ke bapak TU. Tapi keajaiban terjadi, alhamdulillah saat saya kembali dari TU menuju ke lab saya melewati ruang Kaprodi dan tanpa sadar ternyata Kaprodi sudah datang dan berjalan di belakang saya menuju mushola. Saya menyadari hal ini saat saya ingin naik tangga dan melihat Kaprodi ada di belakang saya, langsung saja saya berbicara kepada beliau jika saya membutuhkan tanda tangannya saat ini untuk surat perjanjian KP.

Saya sepertinya sangat memelas gitu, sehingga beliau bilang “Iya nanti saya tandatangani setelah saya solat ya, kamu tunggu saja di depan ruangan saya, tadi saya juga sudah lihat ada surat yang harus ditandatangani dengan tulisan urgent” sambil dengan nada yang khawatir gitu (hahahaha, jadi malu). Ya sudahlah akhirnya, selama kyanya 30 menit saya menunggu sambil geje di depan ruangan Kaprodi, beliau muncul juga dan masuk untuk menandatangani surat saya tadi. Saya merasa sangat beruntung sekali karena saya bertemu dengan Kaprodi dan tidak jadi membatalkan kepulangan saya :D

Akhirnya malamnya saya, nti, dan iponk berangkat ke bogor untuk memulai petualangan KP kami. Kami sampai di bogor sekitar pukul 23.00 dan langsung saja tepar karena capek. Besoknya kami harus ke PLC untuk menyerahkan syarat-syarat administrasi dan sekalian mencari kostan yang dekat dengan kantor. Kami kira di PLC akan memakan waktu yang lama, ternyata sangat sebentar sekali, kita ketemu dengan seseorang dan menyerahkan persyaratannya dan langsung pergi deh tanpa diminta yang macem2 lagi, padahal saya kira bakal ada wawancara atau semacamnya tapi ternyata tidak :D Setelah itu, kita mencari kostan dan ternyata yang dekat dengan kantor sudah penuh semua, ada sih yang kosong tapi ga banget deh untuk ditinggali, akhirnya kami mendapatkannya di daerah Kwitang lebih tepatnya Keramat Kwitang. Dengan rayuan-rayuan dan bujukan dari Ibu, kami berhasil mendapatkan kamar yang dapat diisi oleh 3 orang dengan harga yang lumayan dan yang penting ada AC nya :D secara jakarta panas banget kalo ga ada AC. Ibuku emang keren deh kalo urusan tawar-menawar.

Nah setelah itu kita ke daerah Pejaten deh sambil nunggu jam 20.00 dimana mbak chica dateng dari Medan karena ada urusan di kantor Jakarta. Di Pejaten ada rumah saudara, saya juga baru pertama kali ke sana, karena selama keluarga saya ke sana, pasti saya ada di Bandung jadi belum sempet melihat rumahnya :D . Kita nunggu di sana hingga pukul 17.00 dan setelah itu langsung menuju Soekarno Hatta untuk jemput mbak chica, sempet macet juga sih tapi ga parah.

Pukul 20.00 lebih pesawat mbak chica landing dan kita langsung menuju Bakmi GM soalnya bapak nitip beliin Bakmi GM deh. Dengan ngebut, kita sampe di Bakmi GM jam 21.15 padahal tutupnya jam 21.30 untung aja masih dilayani. Sebenernya saya udah ngantuk banget dan ga nafsu makan lagi, tapi karena dipaksa ya sudah deh mau apa lagi :D Setelah selesai makan kita pun pulang ke Bogor. Adapun sampe di bogor udah jam 23.00 hehehe..:D dan saya pun langsung tidur, udah ga tahan lagi :D

Besoknya, Ibu, saya, nti, dan iponk jalan-jalan untuk membeli peralatan di kostan mulai dari ember, piring, termos, sabun, sikat gigi, dan lain-lain. Karena hari itu adalah hari Sabtu jadi macet dimana-mana dan parkir di mall penuh semua, puihhh…lama banget cari parkirnya, tapi untungnya kita langsung dapat tempat parkir kok :D Hari minggunya kita mulai mengangkut barang-barang deh ke kostan :D ternyata sangat banyak sekali barang-barang yang dibawa ya :D Setelah selesai menata barang-barang di kostan, saya pulang ke Bogor lagi karena KP dimulai dari tanggal 1 Juni (selasa), nti dan iponk ga mau ikut ke bogor lagi soalnya mereka mau jalan-jalan di jakarta (hahahaha). Di rumah pun saya menikmati liburan sebelum KP dimulai yaitu dengan tidur sepuas-puasnya di rumah :D Hari Senin saya pergi ke Jakarta untuk bergabung dengan teman saya yang lain dan mempersiapkan untuk hari pertama KP esoknya :D

Sekian tahap persiapan KP saya, untuk tahap pelaksanaan KP akan di post setelah ini :D

By tara Posted in study

Kembali Lagi..^^

Hai hai..setelah lama saya tidak eksis di dunia blog, saya ingin memulai eksis lagi. Maklum tingkat kemarin sangat sibuk dan tidak sempat untuk main-main ke blog saya sendiri. Liburan kemarin diisi dengan Kerja Praktek yang sangat hectic banget dan waktu masuk udah diribetin sama laporan-laporan dan tugas-tugas lain..Hehehehe..:D

Oh ya, semester ini saya akan memulai Tugas Akhir saya, rencananya sih saya ingin membahas mengenai design pattern, tapi masih belum ada ide khususnya..Semoga saja bisa dapat pencerahan. ^^. Jika ada yang tertarik dengan design pattern bagi-bagi ya ilmunya, supaya saya juga bisa tahu lebih banyak tentang design pattern ^^

Nice Day ^^

Mengetahui informasi dari suatu akun facebook

Hai, ketemu lagi dengan saya di tugas kuliah saya yaitu keamanan informasi. Pada kesempatan kali ini, saya diberi tugas dengan deskripsi sebagai berikut :

Dikisahkan Anda diteror oleh seseorang di rekening Facebook Anda. Misalnya Anda menerima message dari orang yang tidak dikenal secara berulang-ulang, atau orang tersebut menuliskan pesan yang tidak bertanggung jawab. Bagaimana Anda mengetahui siapa orang ini?

Dalam kasus lain, Anda diminta untuk mencari tahu siapa yang membuat sebuah group tanpa ikut menjadi anggota dari group tersebut. Bagaimana caranya?

Singkatnya Anda diminta untuk melakukan investigasi terhadap rekening facebook. Uraikan ide-ide Anda.

Nah, gimana ya caranya untuk melakukan hal-hal diatas? Mari kita pikirkan sekarang ^^.

A. Masalah peneror

1. Mencari tau email atau informasi lain mengenai peneror dengan googling atau melihat header dari email.

Hal ini merupakan langkah awal bagi saya untuk mengetahui siapa yang telah mengirimkan spam atau meneror saya. Jika informasi mengenai orang tersebut tidak ada di google, maka saya akan mencari cara lainnya. Dengan melihat header dari email yang dia kirimkan, saya bisa mendapatkan alamat email yang dia gunakan untuk mengirimkan email pada saya. Saya kepikiran untuk membuat suatu program sederhana dimana jika ada email dari orang tersebut, maka saya juga dapat mengirimkan email yang sama persis seperti yang dia kirimkan kepada saya. Jadi dia juga terkena spam seperti halnya yang terjadi pada diri saya. Hal ini bertujuan agar dia jera untuk mengirimkan message yang berulang-ulang kepada saya. Alamat email dari orang tersebut juga dapat saya gunakan untuk melangkah ke cara yang lain untuk mengetahui informasi tentang dirinya karena pada waktu googling saya tidak menemukan informasi apapun tentang dirinya.

2. Melihat group yang diikuti oleh peneror dan daftar teman-temannya

Dengan melihat group apa saja yang diikuti oleh peneror kita dapat mengetahui karakter dari si peneror. Setelah itu kita bisa mengetahui siapa saja di group tersebut maupun teman-temannya yang kira-kira cukup aktif untuk merespon apa yang dia lakukan. Lalu saya akan meminta teman dari si peneror tersebut untuk berteman dengan saya. Lalu dengan pendekatan yang intens saya mungkin dapat menggali informasi lebih mengenai peneror dari teman-temannya tersebut.

3. Phising

Kita memberikan sebuah link yang menarik di wall kita, agar orang itu tertarik untuk membuka link tersebut. Selanjutnya di halaman phising tersebut dia diminta untuk mengisikan beberapa informasi mengenai dirinya seperti username dari facebook bahkan password dari facebook dirinya agar dapat menjalankan link tersebut. Hihihi ^^ sepertinya kalau cara ini agak kelewatan ya..^^. Jika kita telah mendapatkan akun dari facebook dan password dari peneror maka kita dapat melakukan hal-hal sesuka hati kita dan dapat masuk ke akun facebook si peneror lalu membajak facebook dari peneror.

4. Mencuri cookie dari sang peneror

Kita dapat membuat suatu script yang bertujuan untuk mencuri cookie dari sang peneror. Kita dapat membuat file flash yang berekstensi .swf . Lalu pada file tersebut akan kita sisipkan suatu script yang dapat mencuri cookie dari sang pengakses. Karena setiap akun di facebook mempunyai id yang berbeda-beda maka kita dapat mengetahui id dari si peneror dengan mengambil custom user url. Jebakan ini dapat diletakkan di wall saya sendiri. Jika si peneror sudah mengeklik yang kita berikan, maka pada si pengakses akan muncul alert yang meminta dia untuk melakuka login ulang akan tetapi halaman login yang di-direct-kan ke pengakses adalah halaman login facebook yang asli akan tetapi segala aksinya telah kita sadap dengan menggunakan teknik XSS dan mengambil cookie yang tersimpan pada saat orang ini melakukan login. Semua hasil lognya dapat kita lihat pada halaman yang telah kita siapkan di awal dengan menggunakan bantuan PHP.

Dengan mendapatkan cookie ini kita dapat masuk ke facebook orang tersebut tanpa melakukan autentifikasi berupa password dan kita dapat dengan mudah untuk mengakses ke halaman pribadi si peneror yang sudah terjerumus tadi. Dengan cookie kita juga dapat melakukan pencurian password. ^^

B. Mencari tahu admin dari group

Biasanya pada sebuah group dapat dilihat siapa yang menjadi admin atau moderator dari group tersebut dan kita dapat melakukan pengambilan informasi dengan menggunakan beberapa cara diatas. Akan tetapi jika tidak dapat mengetahui admin atau moderatornya sementara kita tidak mengikuti group tersebut adalah kita dapat melihat siapa saja yang terlibat dalam group tersebut, lalu kita bisa mengirimkan private message kepada salah seorang yang kita anggap admin dari group tersebut dengan melihat cara dia berinteraksi di group tersebut. Dalam email tersebut kita meminta penjelasan mengenai group tersebut, jika dia memang admin atau moderator pasti dia tau mengenai segala sesuatu mengenai group tersebut. Dari hal ini kita bisa melangkah untuk mengetahui informasi dari si admin atau moderator juga dengan menggunakna teknik yang telah dijelaskan diatas.

Sekian postingan dari saya untuk tugas kali ini. Jika ada yang tidak benar jangan diikutin ya terutama bagian mencuri cookie atau phising hehehe…^^

Sampai jumpa di postingan berikutnya…>,<

Tugas KI dengan wireshark

Sekarang ada lagi tugas KI yang meminta saya untuk menggunakan program sniffer (penyadap) seperti wireshark, tcpdump, atau sejenisnya untuk melakukan salah satu dari hal di bawah ini:

  1. mengukur jumlah data yang digunakan untuk membuka satu sesi gmail atau facebook;
  2. memantau serangan dari port scanning yang dilakukan dengan menggunakan program nmap.

Saya memilih tugas yang no 1, dengan spesifikasi dari tugasnya adalah satu sesi adalah login, membaca sebuah email (atau menulis sebuah email), kemudian logout. Jangan lupa program sniffer diset agar *semua* data ditangkap. Biasanya default dari program sniffer hanya menangkap header saja. Tujuan utamanya adalah untuk menghitung jumlah data yang ditangkap.

Nah setelah saya menginstall wireshark untuk 32 bit pada laptop saya, mulailah saya membuka wireshark untuk capture packet. Saya mencoba capture packet dari www.plurk.com .

Pertama-tama buka wireshark dan buka menu capture -> interface maka akan muncul tampilan yang mengharuskan kita untuk memilih ip address yang akan dipakai, setelah itu kita pilih tombol option dan akan keluar jendela baru dimana kita harus mengisi website mana yang harus kita pantau aliran paketnya. Pada Capture Filter, saya isikan host www.plurk.com and host 167.205.35.124 (nomor IP kompputer saya). Setelah itu klik tombol start maka akan muncul jendela baru yang berisi packet-packet apa saja yang ada di jaringan saat itu. 

Lalu saya pun login plurk dan memposting beberapa plurk dan mengkomentari plurk dari teman-teman saya, selanjutnya saya pun log out dari plurk. (syarat 1 session : login->do something -> logout)

Pada jendela aliran packet ktia dapat melihat paket-paket apa saja yang terlibat. Mulai dari nomor paket,  time, source, destination, protocol, dan juga info dari paket itu. Nah setelah saya logout dari plurk, saya pun menstop pemantauan paket. Untuk melihat kesimpulan dari proses yang kita jalankan tadi, maka dapat dilihat di menu Statistics -> Summary. Disana kita dapat melihat jumlah paket yang kita tangkap tadi.

Untuk lebih jelasnya, maka saya lampirkan screenshot dari wireshark.

KI-wireshark

UTS Keamanan Informasi

Hari ini saya ujian Keamanan Informasi, tapi UTS kali ini bersifat online. Setelah tugas2 yang saya kerjakan selama ini, saya pikir ujiannya akan serupa dengan itu, tapi ternyata berbeda…

Kalau tidak salah, jumlah mahasiswa yang mengikuti kelas KI berjumlah 110 orang. Kita secara bersama-sama mengakses server dari blendedlearning.itb.ac.id untuk mengakses soal UTS, tapi yang ada servernya malah down…hahahaha…kocak banget. Pak Budi selaku dosen juga tertawa-tawa seperti halnya kita sebagai mahasiswanya, karena berulang kali server down. hahahaha..ini mungkin salah satu penerapan dari aspek DoS (denial of service) attack untuk membuat hang/down suatu server. hahaha…seperti tugas pertama kami, yaitu mencari aplikasi pada web yang rentan dengan serangan…kami semua di kelas tadi tertawa-tawa dengan kejadian ini. Pada saat ingin submit eh ternyata servernya down lagi,,,hahaha…kocak banget deh tadi UTSnya…menurut saya ini UTS yang paling singkat dan paling menyenangkan yang pernah saya alami…Apakah kalian juga pernah mengalami UTS seperti ini???

Pak Budi emang keren…(rock)

Semoga nilai UTS saya bagus amin…hehehe…^^

Hal yang ingin dilakukan saat ini

Huaaa…lagi banyak tugas tapi untunglah UTS sudah lewat, tapi masih ada sih 1 lagi UTS, hehehe. Di tengah banyak tugas ini, banyak banget hal yang pengen saya lakukan :
1. Ingin Jalan-jalan dan main-main
2. Ingin cheese cake
3. Ingin makan di Pizza Hut
4. Ingin nonton bioskop
5. Ingin Tugas semuanya tiba-tiba udah selesai semua…(hahaha, mungkin ga ya?)
6. Ingin pulang ke rumah (bogor emang rock abis)
7. Ingin tidur dengan pulas tanpa ada beban
8. Ingin Berenang
9. Ingin makan masakan rumah
10. Ingin nyanyi yang keras
11. Ingin semua stress hilang
12. Ingin ketemu Hongki (kyakya)
13. Ingin nonton dorama yang lucu
14. Ingin beresin kamar yang udah ga jelas lagi (berantakan banget..hihihi..^^)

List diatas masih belum meliputi dari semua yang ingin saya lakukan. Masih banyak banget yang ingin saya lakukan. Huaaa…pusing….tugasnya masih banyak banget…Tapi apakah saya bisa merealisasikan dari keinginan saya diatas ditengah hujan tugas ini?^^
Yah kita lihat nanti saja deh, semoga semua bisa terlaksana disaat tugas ini melanda..^^ (mode lebay)

Steganografi ^^

Ketemu lagi dengan saya, dalam tugas keamanan informasi yang lain. Sekarang tugasnya adalah membuat suatu steganografi.

Sebenarnya apa sih pengertian dari steganografi? Sebenarnya sih saya juga tidak begitu mengerti awalnya, tapi waktu kuliah dijelaskan kalau steganografi adalah metode penyembunyian pesan bisa dalam teks, gambar, lagu, atau berbagai media lainnya tanpa disadari oleh orang lain jika ada pesan yang tersembunyi (mohon dikoreksi kalau salah ^^). 

Nah pada tugas ini saya menggunakan media penyembunyian berupa gambar dan beberapa bait puisi. Hahaha. Tapi bikin puisinya asal banget, jangan diketawain ya…^^
Berikut ini adalah steganografi yang saya buat. Ada pesan tersembunyila lho. Ayo coba cari apa pesan yang saya coba sembunyikan dan bagaimana cara kalian menemukannya?

Steganografi…

saat langit malam, bintang pun bersinar
pikiran gelap, tak tau harus kemana
maka…
ikutilah terangnya, pikiran pun ‘kan terbuka
dua orang anak akan datang
beritahu kemana harus mencari
telusurilah
atas lebih baik dari bawah
kiri lebih utama dari kanan
berpalinglah ke bawah
sang peri kan turun membawa berita 
“gnommish” katanya 
taukah kau?
carilah, carilah, carilah
kelak kau pun akan mengerti

Sekian puisi dari saya, maaf jika garink dan tidak bagus (tidak punya bakat buat puisi), hehehe…^^
Kalau kalian mau tau apa isi pesan dan bagaimana cara menemukan pesan tersembunyi tersebut, tunggu saya membocorkannya ya..hahaha..^^…Selamat berusaha \(^^)/

Cat: gambarnya kurang keliatan semuanya, ada yang kepotong di blognya, jadi disimpan dulu atau buka aja di tab yang lain, supaya gambarnya secara keseluruhan terlihat jelas…^^..maaf ya..

FT ISLAND ^^

Saya lagi suka sama band korea yang disebut FT ISLAND. Emang sih udah lama banget band ini, tapi saya baru tau, ga papa telat daripada ga tau ada band ini..hahahaha…personil mereka masih muda-muda lho. Ini lagu kesukaan saya dari band ini

Ini judulnya FT ISLAND, bikin semangat..^^

Kalo yang ini judulnya Raining, emang sih ceritanya agak sedih gitu, tapi tetep enak didengar kok lagunya, habis keren sih…^^

Semoga bisa menghibur kalian semua…^^

Kapan-kapan saya akan kasih lagu-lagu yang bikin semangat, hehehee…^^

Facade Design Pattern

Kemarin saya disuruh eksplor apa itu Facade Design Pattern. Sebenarnya ini adalah bagian dari software engineering. Nah mau tau kan apa itu Facade Design Pattern. Tapi pertama-tama kita cari tau dulu apa itu design pattern.

Design pattern adalah

solusi umum yang dapat digunakan kembali pada permasalahan umum yang sering terjadi pada software design. Design pattern bukan desain final yang dapat ditransformasikan secara langsung kedalam kode. Ini hanyalah deskripsi atau template untuk mengetahui bagaimana menyelesaikan permasalahan yang dapat digunakan pada berbagai macam situasi yang berbeda. Design pattern dari object-oriented secara tipikal menunjukkan hubungan dan interaksi antara kelas dan objek tanpa menspesifikasikan kelas atau objek dari aplikasi final yang terlibat didalamnya.

nah setelah tau apa itu design pattern kita beralih ke jenis-jenis dari design pattern. Banyak banget lho macam-macam dari design pattern diantaranya Adapter, Bridge, Composite, Decorator, Facade, FlyWeight, dan Proxy. Akan tetapi saya hanya diminta untuk mencari tau apa yang dimaksud dengan facade design pattern.

Menurut Wikipedia

Facade pattern adalah design pattern dari software engineering yang banyak digunakan dengan pemrograman berorientasi objek. Façade adalah objek yang menyediakan interface yang telah sederhana dari deretan kode yang sangat besar, seperti class library. Façade dapat:

  1. Membuat software library yang mudah untuk digunakan dan dipahami selama façade mempunyai metode yang mudah dimengerti untuk pekerjaan yang umum.
  2. Membuat kode yang menggunakan library lebih mudah dibaca untuk alasan yang sama.
  3. Mengurangi ketergantungan dari kode eksternal pada pekerjaan internal dari library selama sebagian besar kode menggunakan façade sehingga yang menggunakannya dapat lebih fleksibel di dalam mengembangkan sistem.
  4. Membungkus koleksi API yang tidak didesain bagus dengan satu API yang didesain bagus.

Façade digunakan ketika seseorang menginginkan untuk berhubungan dengan interface yang mudah digunakan dan sederhana dalam bekerja.  Design pattern façade menyediakan interface yang mudah untuk digunakan dibandingkan dengan koleksi dari interface subsistem yang kompleks. Hal ini dapat membuatnya lebih mudah dengan menyembunyikan detail dari implementasi. Design pattern façade menghubungkan kode yang kita tulis untuk suatu aplikasi yang melakukan pekerjaan yang spesifik seperti membuat laporan, dan implementasi dari level bawah yang menangani detail seperti membaca file, berinteraksi dengan jaringan, dan membuat suatu output. Façade adalah interface dimana aplikasi dapat menggunakannya untuk melakukan sesuatu tanpa mengkhawatirkan mengenai detail-detail yang terlibat. Façade memisahkan layer-layer yang terlibat sehingga layer-layer tersebut tidak bergantung satu sama lainnya dimana membuat masing-masing layer dapat dengan mudah untuk dikembangkan, mudah untuk digunakan, dan mempertimbangkan untuk menggunakan code re-use.

Bagaimanapun juga, façade dapat menjadi sangat kompleks untuk subsistem yang sangat besar. Untuk itu, perlu ditambahkan abstract façade diatas façade yang telah ada. Salah satu contoh yang umum adalah dengan menggunakan pattern melalui webservice, dimana membuat webservice berperilaku sebagai façade atau interface terhadap banyak dll yang berbeda yang masing-masing merepresentasikan suatu subsistem tertentu.

Kelas dan/atau objek yang berpartisipasi pada façade adalah:

  1. Façade (misal. MortgageApplication)
    1. Mengetahui kelas-kelas subsistem yang bertanggung jawab terhadap permintaan
    2. Mendelegasikan permintaan dari klien kepada objek subsistem yang bersesuaian
  2. Kelas subsistem (misal. Bank, Credit, Loan)
    1. Mengimplementasikan fungsionalitas dari subsistem
    2. Menangani pekerjaan yang diberikan oleh objek façade
    3. Tidak mempunyai pengetahuan mengenai façade dan tidak peduli dengan reference mengenai hal ini

Kelebihan façade daripada design pattern yang lain adalah sebagai berikut:

  • Facade mendefinisikan interface baru, sedangkan Adapter menggunakan interface yang lama. Adapter membuat dua interface yang telah ada bekerja sama sebagai lawan untuk mendefinisikan suatu interface yang baru
  • Ketika Flyweights menunjukkan bagaimana cara membuat objek kecil yang banyak, Façade menunjukkan bagaimana membuat objek tunggal yang merepresentasikan subsistem secara keseluruhan
  • Mediator serupa dengan façade dalam hal mengabstraksikan fungsionalitas dari kelas yang telah ada. Abstrak mediator mengkomunikasikan antar objek yang setara. Hal ini secara rutin akan menambahkan value dan hal ini diketahui oleh objek yang setara. Secara kontras, façade mendefinisikan interface yang lebih sederhana dari subsistem dan tidak menambahkan fungsionalitas baru dan tidak diketahui oleh kelas subsistem lainnya
  • Abstract factory dapat digunakan sebagai alternatif pada façade untuk menyembunyikan kelas platform yang spesifik
  • Objek façade biasanya singleton karena hanya satu objek façade yang dibutuhkan
  • Adapter dan façade keduanya adalah pembungkus, tapi keduanya adalah pembungkus yang berbeda. Fokus dari façade adalah untuk menciptakan interface yang lebih sederhana dan fokus dari adapter adalah untuk mendesain pada interface yang telah ada. Ketika façade secara rutin membungkus objek-objek, adapter membungkus objek tunggal. Façade dapat menjadi front-end dari objek kompleks tunggal dan adapter dapat membungkus beberapa objek yang telah ada

Pada intinya, Facade artinya “tembok luar” atau “muka bangunan”. Orang yang melintas hanya dapat melihat luarnya saja, tanpa mengetahui isi di dalamnya. Dengan menggunakan facade, detil proses dan kompleksitas sistem disembunyikan dari pengguna. Pengguna hanya perlu mengakses facade untuk dapat memanfaatkan salah satu fungsi dalam sistem.

  1. Sederhana, kesatuan interface untuk subsistem atau komponen
  2. Mendesain kelas “wrapper” yang mengenkapsulasi subsistem
  3. Façade atau wrapper menangkap kompleksitas dan mengkolaborasikan komponen-komponen dan mendelegasikan kepada metode yang bersesuaian
  4. Klien hanya menggunakan façade
  5. Mempertimbangkan penambahan façade akan menambah nilai

Inilah sekilas mengenai facade design pattern, semoga bisa membantu untuk menambah ilmu…Sampai bertemu lagi di postingan berikutnya…bye..^^

By tara Posted in study

Self-generating code…apa itu???

Hai-hai ketemu lagi dengan saya di tugas kuliah keamanan informasi ^^

Sekarang tugas saya adalah membuat self-generating code seperti yang ada di paper Ken Thompson, Reflections on Trusting Trust. Bahasa pemrograman yang dipakai sih bebas aja, sesuka kita.

Tapi sebelum masuk ke codingannya, apa sih yang dimaksud dengan self-generating code itu?

Menurut wikipedia, quine (sebutan lain dari self-replicating code)

program komputer yang menghasilkan salinan dari source codenya sendiri sebagai output dari program itu.

berdasarkan paper dari Ken Thompson, self-generating code itu

menulis suatu program yang ketika dicompile dan dieksekusi akan menghasilkan output berupa salinan yang sama dari source codenya.

sebenarnya sih pengertiannya sama aja ya..hehehe.

Mungkin bagi kita hal ini terlihat mustahil untuk menghasilkan output berupa kode program dimana program tersebut kita gunakan untuk menghasilkan kode program itu (wew, kok jadi pusing ya? ^^). Tapi sekarang saya akan menunjukkan bahwa quine progam itu mungkin saja dilakukan. Berikut adalah contoh dari program quine yang dibuat dalam bahasa C. Kita memakai bahasa C soalnya bahasa C sudah banyak dikenal oleh orang dan karena ada fungsi printf() yang membuat kita mudah untuk membuat program quine ini.

Sekarang ayo kita liat program yang udah dibuat dalam bahasa C mengenai Quine ini :

/* See comments below */

const unsigned char data[] = {
/* 000000 */  0x2f,  0x2a,  0×20,  0×54,  0×68,  0×69,  0×73,  0×20,
/* 0×0008 */  0×69,  0×73,  0×20,  0×61,  0×20,  0×73,  0×65,  0x6c,
/* 0×0010 */  0×66,  0×72,  0×65,  0×70,  0×20,  0×28,  0×71,  0×75,
/* 0×0018 */  0×69,  0x6e,  0×65,  0×29,  0×20,  0×70,  0×72,  0x6f,
/* 0×0020 */  0×67,  0×72,  0×61,  0x6d,  0x2e,  0×20,  0×20,  0×49,
/* 0×0028 */  0×74,  0×20,  0×75,  0×73,  0×65,  0×73,  0×20,  0×74,
/* 0×0030 */  0×68,  0×65,  0×20,  0×61,  0×62,  0x6f,  0×76,  0×65,
/* 0×0038 */  0×20,  0×64,  0×61,  0×74,  0×61,  0×20,  0×28,  0×77,
/* 0×0040 */  0×68,  0×69,  0×63,  0×68,  0x0a,  0×20,  0x2a,  0×20,
/* 0×0048 */  0×69,  0×73,  0×20,  0x6e,  0x6f,  0×20,  0x6f,  0×74,
/* 0×0050 */  0×68,  0×65,  0×72,  0×20,  0×74,  0×68,  0×61,  0x6e,
/* 0×0058 */  0×20,  0×74,  0×68,  0×65,  0×20,  0×41,  0×53,  0×43,
/* 0×0060 */  0×49,  0×49,  0×20,  0×72,  0×65,  0×70,  0×72,  0×65,
/* 0×0068 */  0×73,  0×65,  0x6e,  0×74,  0×61,  0×74,  0×69,  0x6f,
/* 0×0070 */  0x6e,  0×20,  0x6f,  0×66,  0×20,  0×65,  0×76,  0×65,
/* 0×0078 */  0×72,  0×79,  0×74,  0×68,  0×69,  0x6e,  0×67,  0×20,
/* 0×0080 */  0×73,  0×74,  0×61,  0×72,  0×74,  0×69,  0x6e,  0×67,
/* 0×0088 */  0x0a,  0×20,  0x2a,  0×20,  0×66,  0×72,  0x6f,  0x6d,
/* 0×0090 */  0×20,  0×74,  0×68,  0×69,  0×73,  0×20,  0×63,  0x6f,
/* 0×0098 */  0x6d,  0x6d,  0×65,  0x6e,  0×74,  0×29,  0×20,  0×74,
/* 0x00a0 */  0x6f,  0×20,  0×70,  0×72,  0×69,  0x6e,  0×74,  0×20,
/* 0x00a8 */  0×69,  0×74,  0×73,  0×20,  0x6f,  0×77,  0x6e,  0×20,
/* 0x00b0 */  0x6c,  0×69,  0×73,  0×74,  0×69,  0x6e,  0×67,  0x2e,
/* 0x00b8 */  0×20,  0x2a,  0x2f,  0x0a,  0x0a,  0×23,  0×69,  0x6e,
/* 0x00c0 */  0×63,  0x6c,  0×75,  0×64,  0×65,  0×20,  0x3c,  0×73,
/* 0x00c8 */  0×74,  0×64,  0×69,  0x6f,  0x2e,  0×68,  0x3e,  0x0a,
/* 0x00d0 */  0x0a,  0×69,  0x6e,  0×74,  0x0a,  0x6d,  0×61,  0×69,
/* 0x00d8 */  0x6e,  0×20,  0×28,  0×76,  0x6f,  0×69,  0×64,  0×29,
/* 0x00e0 */  0x0a,  0×20,  0×20,  0×20,  0×20,  0×20,  0x2f,  0x2a,
/* 0x00e8 */  0×20,  0×54,  0×68,  0×65,  0×20,  0x6d,  0×61,  0×69,
/* 0x00f0 */  0x6e,  0×20,  0×70,  0×72,  0x6f,  0×67,  0×72,  0×61,
/* 0x00f8 */  0x6d,  0x2e,  0×20,  0×20,  0×57,  0×65,  0×20,  0x6f,
/* 0×0100 */  0×75,  0×74,  0×70,  0×75,  0×74,  0×20,  0×74,  0×68,
/* 0×0108 */  0×65,  0×20,  0×64,  0×61,  0×74,  0×61,  0×20,  0×69,
/* 0×0110 */  0x6e,  0×20,  0×74,  0×68,  0×65,  0×20,  0×66,  0x6f,
/* 0×0118 */  0×72,  0x6d,  0×61,  0×74,  0×20,  0×75,  0×73,  0×65,
/* 0×0120 */  0×64,  0×20,  0×61,  0×74,  0x0a,  0×20,  0×20,  0×20,
/* 0×0128 */  0×20,  0×20,  0×20,  0x2a,  0×20,  0×74,  0×68,  0×65,
/* 0×0130 */  0×20,  0×74,  0x6f,  0×70,  0×20,  0x6f,  0×66,  0×20,
/* 0×0138 */  0×74,  0×68,  0×69,  0×73,  0×20,  0×66,  0×69,  0x6c,
/* 0×0140 */  0×65,  0x2c,  0×20,  0×61,  0x6e,  0×64,  0×20,  0×74,
/* 0×0148 */  0×68,  0×65,  0x6e,  0×20,  0×77,  0×65,  0×20,  0×75,
/* 0×0150 */  0×73,  0×65,  0×20,  0×69,  0×74,  0×20,  0×74,  0x6f,
/* 0×0158 */  0×20,  0×67,  0×65,  0x6e,  0×65,  0×72,  0×61,  0×74,
/* 0×0160 */  0×65,  0×20,  0×74,  0×68,  0×65,  0×20,  0×72,  0×65,
/* 0×0168 */  0×73,  0×74,  0x0a,  0×20,  0×20,  0×20,  0×20,  0×20,
/* 0×0170 */  0×20,  0x2a,  0×20,  0x6f,  0×66,  0×20,  0×74,  0×68,
/* 0×0178 */  0×69,  0×73,  0×20,  0×66,  0×69,  0x6c,  0×65,  0x2e,
/* 0×0180 */  0×20,  0x2a,  0x2f,  0x0a,  0x7b,  0x0a,  0×20,  0×20,
/* 0×0188 */  0×75,  0x6e,  0×73,  0×69,  0×67,  0x6e,  0×65,  0×64,
/* 0×0190 */  0×20,  0×69,  0x6e,  0×74,  0×20,  0×69,  0x3b,  0x0a,
/* 0×0198 */  0x0a,  0×20,  0×20,  0×70,  0×72,  0×69,  0x6e,  0×74,
/* 0x01a0 */  0×66,  0×20,  0×28,  0×22,  0x2f,  0x2a,  0×20,  0×53,
/* 0x01a8 */  0×65,  0×65,  0×20,  0×63,  0x6f,  0x6d,  0x6d,  0×65,
/* 0x01b0 */  0x6e,  0×74,  0×73,  0×20,  0×62,  0×65,  0x6c,  0x6f,
/* 0x01b8 */  0×77,  0×20,  0x2a,  0x2f,  0x5c,  0x6e,  0x5c,  0x6e,
/* 0x01c0 */  0×22,  0×29,  0x3b,  0x0a,  0×20,  0×20,  0×70,  0×72,
/* 0x01c8 */  0×69,  0x6e,  0×74,  0×66,  0×20,  0×28,  0×22,  0×63,
/* 0x01d0 */  0x6f,  0x6e,  0×73,  0×74,  0×20,  0×75,  0x6e,  0×73,
/* 0x01d8 */  0×69,  0×67,  0x6e,  0×65,  0×64,  0×20,  0×63,  0×68,
/* 0x01e0 */  0×61,  0×72,  0×20,  0×64,  0×61,  0×74,  0×61,  0x5b,
/* 0x01e8 */  0x5d,  0×20,  0x3d,  0×20,  0x7b,  0×22,  0×29,  0x3b,
/* 0x01f0 */  0x0a,  0×20,  0×20,  0×66,  0x6f,  0×72,  0×20,  0×28,
/* 0x01f8 */  0×20,  0×69,  0x3d,  0×30,  0×20,  0x3b,  0×20,  0×69,
/* 0×0200 */  0x3c,  0×73,  0×69,  0x7a,  0×65,  0x6f,  0×66,  0×28,
/* 0×0208 */  0×64,  0×61,  0×74,  0×61,  0×29,  0×20,  0x3b,  0×20,
/* 0×0210 */  0×69,  0x2b,  0x2b,  0×20,  0×29,  0x0a,  0×20,  0×20,
/* 0×0218 */  0×20,  0×20,  0x7b,  0x0a,  0×20,  0×20,  0×20,  0×20,
/* 0×0220 */  0×20,  0×20,  0×69,  0×66,  0×20,  0×28,  0×20,  0×69,
/* 0×0228 */  0×25,  0×38,  0×20,  0x3d,  0x3d,  0×20,  0×30,  0×20,
/* 0×0230 */  0×29,  0x0a,  0×09,  0×70,  0×72,  0×69,  0x6e,  0×74,
/* 0×0238 */  0×66,  0×20,  0×28,  0×22,  0x5c,  0x6e,  0x2f,  0x2a,
/* 0×0240 */  0×20,  0×25,  0×30,  0×23,  0×36,  0×78,  0×20,  0x2a,
/* 0×0248 */  0x2f,  0×22,  0x2c,  0×69,  0×29,  0x3b,  0x0a,  0×20,
/* 0×0250 */  0×20,  0×20,  0×20,  0×20,  0×20,  0×70,  0×72,  0×69,
/* 0×0258 */  0x6e,  0×74,  0×66,  0×20,  0×28,  0×22,  0×20,  0×20,
/* 0×0260 */  0×25,  0×30,  0×23,  0×34,  0×78,  0x2c,  0×22,  0x2c,
/* 0×0268 */  0×20,  0×64,  0×61,  0×74,  0×61,  0x5b,  0×69,  0x5d,
/* 0×0270 */  0×29,  0x3b,  0x0a,  0×20,  0×20,  0×20,  0×20,  0x7d,
/* 0×0278 */  0x0a,  0×20,  0×20,  0×70,  0×72,  0×69,  0x6e,  0×74,
/* 0×0280 */  0×66,  0×20,  0×28,  0×22,  0x5c,  0x6e,  0x7d,  0x3b,
/* 0×0288 */  0x5c,  0x6e,  0x5c,  0x6e,  0×22,  0×29,  0x3b,  0x0a,
/* 0×0290 */  0×20,  0×20,  0×66,  0x6f,  0×72,  0×20,  0×28,  0×20,
/* 0×0298 */  0×69,  0x3d,  0×30,  0×20,  0x3b,  0×20,  0×69,  0x3c,
/* 0x02a0 */  0×73,  0×69,  0x7a,  0×65,  0x6f,  0×66,  0×28,  0×64,
/* 0x02a8 */  0×61,  0×74,  0×61,  0×29,  0×20,  0x3b,  0×20,  0×69,
/* 0x02b0 */  0x2b,  0x2b,  0×20,  0×29,  0x0a,  0×20,  0×20,  0×20,
/* 0x02b8 */  0×20,  0×70,  0×75,  0×74,  0×63,  0×68,  0×61,  0×72,
/* 0x02c0 */  0×20,  0×28,  0×64,  0×61,  0×74,  0×61,  0x5b,  0×69,
/* 0x02c8 */  0x5d,  0×29,  0x3b,  0x0a,  0×20,  0×20,  0×72,  0×65,
/* 0x02d0 */  0×74,  0×75,  0×72,  0x6e,  0×20,  0×30,  0x3b,  0x0a,
/* 0x02d8 */  0x7d,  0x0a,
};

/* This is a selfrep (quine) program.  It uses the above data (which
* is no other than the ASCII representation of everything starting
* from this comment) to print its own listing. */

#include <stdio.h>

int
main (void)
/* The main program.  We output the data in the format used at
* the top of this file, and then we use it to generate the rest
* of this file. */
{
unsigned int i;

printf (“/* See comments below */\n\n”);
printf (“const unsigned char data[] = {“);
for ( i=0 ; i<sizeof(data) ; i++ )
{
if ( i%8 == 0 )
printf (“\n/* %0#6x */”,i);
printf (“  %0#4x,”, data[i]);
}
printf (“\n};\n\n”);
for ( i=0 ; i<sizeof(data) ; i++ )
putchar (data[i]);
return 0;
}

untuk melihat hasilnya, maka harus kita compile dan jalanin lewat command prompt memakai gcc, berikut adalah hasil output dari program ini.

Nah inilah hasil dari menjalankan program self generating code ini…^^..ternyata bisa kan kita menghasilkan kode dari program yang dibuat untuk menjalankan program tersebut…^^…hore..