DNS Forensics

Melanjutkan postingan di kategori Internet Forensics, postingan kali ini akan membahas mengenai DNS Forensics.

Kita pelajari dulu tentang DNS ya.. 🙂

SEKILAS TENTANG DNS

DNS (Domain Name System) adalah bentuk distribusi database yang digunakan untuk menerjemahkan nama komputer ke IP address (mapping) dan dari IP address ke nama komputer (reverse mapping). Secara sederhana mapping berhubungan dengan dua hal, yaitu nama komputer seperti www.uii.ac.id dan ftp.fti-uii.ac.id serta IP address seperti 192.168.10.1 dan 202.150.76.202.

Untuk melakukan komunikasi dan mengakses komputer yang terhubung dalam jaringan, sebetulnya cukup menggunakan IP address dari masing-masing komputer saja. Tapi akan sangat sulit tentunya apabila harus mengingat IP address dari banyak komputer yang terhubung ke jaringan. Komputer saling berkomunikasi menggunakan IP address bukan menggunakan nama komputer. Untuk itulah diperlukan sebuah mekanisme agar nama komputer tersebut dapat diterjemahkan ke dalam IP address, salah satunya adalah dengan memanfaatkan layanan DNS server, yang menerjemahkan nama komputer ke IP address dan sebaliknya.

Sebagai contoh, komputer dengan IP address 202.162.33.10 memiliki nama www.friendster.com *duh, jadul beud yah.. 😛 *, IP address 203.162.32.1 adalah www.google.com dan lain sebagainya. Sehingga, jika kita akan menghubungi sebuah komputer di internet, misalnya www.friendster.com maka kita cukup menggunakan nama komputer tersebut.

STRUKTUR HIERARKI DNS

DNS mengatur proses penamaan komputer secara hierarkis dalam struktur pohon (tree). Struktur tersebut terbentuk dari sebuah node yang memiliki sub node, masing-masing sub node memiliki lagi sub node di bawahnya dan begitu seterusnya. Node-node tersebut diberi label sehingga disebut domain.

Domain ditentukan berdasarkan tingkatan kemampuan yang ada di struktur hierarki yang disebut dengan level. Level paling atas di hierarki disebut dengan Root Domain. Root domain di ekspresikan dengan lambang ‘ . ’ (dot).

Berikut merupakan ilustrasi sederhana mengenai struktur DNS:

Level kedua setelah root domain disebut Top Level Domain (TLD) yaitu semua node yang tepat berada di bawah root.

Contoh dari top level domain adalah com, edu, net, org, net, gov, dan Country Code Top Level Domain yang berupa dua buah huruf untuk melambangkan kode negara. Misalnya:

  • id : Indonesia
  • uk : United Kingdom (Inggris)
  • au : Australia
  • sg : Singapura

Top level domain dapat berisi second level domain dan host. Sedangkan second level domain dapat berisi host dan domain lain, yang disebut dengan subdomain. Sebagai contoh:

1. Domain CNLAB-UII yang bernama cnlab-uii.net terdapat komputer (host) server1.cnlab-uii.net, subdomain www.cnlab-uii.net dan mail.cnlab-uii.net.

2. pop.mail.yahoo.com

  • Top-level domain   : com
  • Domain                    : yahoo.com
  • Subdomain             : mail.yahoo.com
  • Host                          : pop.mail.yahoo.com

 

KOMPONEN KERJA DNS

Untuk memahami cara kerja DNS terlebih dahulu harus dipahami tentang komponen-komponen yang bekerja di dalamnya. Gambar berikut mengilustrasikan komponen-komponen DNS secara sederhana:

Keterangan:

  • Cache    : media penyimpanan sementara
  • Resolver : bagian dari program aplikasi yang berfungsi menjawab pertanyaan tentang domain (local DNS)

Cara kerja resolver:

Resolver menjawab pertanyaan dari client meliputi dua cara.

Resolver memeriksa cache-nya, jika jawaban yang diminta terdapat di dalam cache-nya, maka resolver kemudian akan memberikan jawaban berupa IP address dari alamat yang dimaksud.

2. Jika tidak terdapat jawaban dalam cache, maka resolver akan bertanya kepada DNS server serta menginterprestasikan hasilnya.

  • Pertanyaan kepada DNS server membuat DNS server yang menjadi default-nya memberikan jawaban atas pertanyaan itu. Jika informasi pada Zona File dari DNS server tidak ditemui, maka DNS server akan mengirimkan message failure kepada client.
  • Kemudian client akan menghubungi DNS server yang lain untuk mencari jawaban atas pertanyaan tersebut. Jika berhasil ditemukan, maka DNS server yang dihubungi client tersebut akan memberikan jawaban berupa IP address dari alamat yang dimaksud kepada DNS server lokal untuk kemudian dikirim ke client yang me-request-nya.

Proses tersebut disebut dengan Forward Lookup Query, yaitu permintaan dari client dengan cara memetakan nama komputer (host) ke IP address.

STUDI KASUS DNS

Pompom ingin mengakses www.friendster.com *frenster maning, frenster maning.. 😀 * Proses yang terjadi agar si Pompom dapat menghubungi komputer www.friendster.com adalah :

Browser diarahkan ke http://www.friendster.com

  1. DNS client menghubungi DNS server lokal untuk mendapatkan IP address dari www.friendster.com
  2. DNS server lokal memeriksa cache-nya, jika akses tersebut sudah pernah dilakukan sebelumnya, maka DNS server lokal akan mengambil IP address www.friendster.com dari data cache-nya.
  3. Jika dalam data cache tidak ditemukan informasi yang dicari, maka kemudian DNS server lokal akan mengirimkan message failure kepada client bahwa IP address dari alamat yang diminta tidak ditemukan.
  4. Kemudian client melakukan request kepada DNS server tertinggi yaitu ‘ . ’ (dot) atau root server. Dan hasilnya akan dikembalikan lagi ke client.
  5. Jika tidak ditemukan lagi, maka client akan menghubungi DNS server .com (Top level Domain). Hasilnya juga akan dikembalikan lagi ke client.
  6. Kemudian jika belum dapat ditemukan, client akan menghubungi DNS server friendster.com
  7. DNS server friendster.com memberikan IP address dari subdomain www.friendster.com
  8. IP address tersebut kemudian dikirimkan kembali ke DNS server lokal untuk diberikan kepada browser dan kemudian dicatat dalam data cache DNS server lokal.
  9. Browser mengarah ke IP address yang dimaksud untuk mengakses komputer pada IP address tersebut.

Yeeey..!!! Pompom akhirnya bisa friendster-friendsteran.

NB:

Ini ada juga yg menarik, pembahasan mengenai cara kerja DNS yang digambarkan dalam komik di https://howdns.works/. Pake bahasa Inggris sih, tapi smoga gak menyurutkan niat untuk belajar DNS. Bisa dicekidot langsung ke TKP ya.. 🙂

SERANGAN PADA DNS

DNS juga rentan terhadap ancaman keamanan. Serangan-serangan yang mungkin terjadi pada DNS adalah sebagai berikut:

1. DNS Spoofing

~ Terdiri dari:

  • Intranet DNS Spoofing (Local Network)
  • Internet DNS Spoofing (Remote Network)

~ Cara mencegah DNS spoofing (DNS spoofing best practice):

  • Resolve semua query DNS ke DNS server lokal.
  • Blok request DNS agar tidak ke server eksternal.
  • Konfigurasi DNS resolver agar menggunakan port yang random.
  • Firewall.
  • Implementasi DNSSEC (DNS Security Extensions).
Teknologi yang dikembangkan antara lain untuk melindungi DNS dari serangan dengan tanda tangan digital pada data agar data tersebut diyakini valid. Tanda tangan digital tidak mengenkripsi data, namun hanya untuk membuktikan keabsahan alamat situs yang dikunjungi.
  • Membatasi user yang dapat akses ke layanan DNS.
  • Secure DNS server (hardening server).
  • Implementasi DNS internal.

2. DNS Poisoning

~ Teknik untuk menipu DNS server agar percaya bahwa DNS telah menerima informasi yang autentik.

~ Memungkinkan attacker untuk mengganti IP address DNS entry pada bagian alamat target.

~ Terdiri dari:

  • Proxy Server DNS Poisoning
Contohnya trojan menuliskan settingan proxy server di web browser.
  • DNS Cache Poisoning
Mengubah/menambah record DNS ke DNS resolver cache sehingga query DNS diteruskan ke situs yang berbahaya (malicious site).

 

Lhaaa.. Terus udah sepanjang ini, forensik-nya di mana? Kan katanya judule DNS Forensics.. 😀 Sabar-sabar.. Coba disimak di latihan soal di bawah ini ya.. 🙂

LATIHAN SOAL

Latihan soal dapat dilihat di sini.

OK, segitu dulu ya.. Semoga bermanfaat. Insya Allah dilanjutin lagi di postingan selanjutnya.. 🙂

SUMBER

Computer Network Fundamental: Latihan Soal

LATIHAN SOAL

  1. Jelaskan ruang lingkup dan perbedaan blok IP address ARIN, APNIC, RIPE, dan LACNIC. Berikan masing-masing contoh IP address-nya!
  2. Jelaskan perbedaan antara bridge & router! Lakukan tracert dari komputer ke web tertentu, kemudian tuliskan detail router yang digunakan!
  3. Jelaskan fungsi DNS dalam internet! Kemudian tuliskan 13 root DNS yang ada di seluruh dunia! Berikan contoh web tersebut (web pada no. 2) ikut area mana?

JAWABAN

1. Ruang lingkup dan perbedaan blok IP address ARIN, APNIC, RIPE, dan LACNIC:

a. ARIN

  • Ruang lingkup
ARIN (American Registry for Internet Number) merupakan RIR (Regional Internet Registry) untuk negara-negara di Amerika Utara, yaitu Kanada & Amerika Serikat, negara-negara di kepulauan Karibia dan Atlantik Utara, serta negara-negara di bagian sub-ekuator Afrika. ARIN mengelola distribusi internet number resources, termasuk di dalamnya adalah alamat IPV4, IPv6, dan AS number (Autonomous System number) yang digunakan oleh routing protocol.
  • Blok IP address

Sesuai informasi yang tertera pada https://www.arin.net/knowledge/ip_blocks.html, blok IP address yang dikelola ARIN adalah:

  • Contoh IP address

Sedangkan contoh IP address yang dikelola ARIN adalah:

~ 64.233.169.101 : google.com

~ 72.246.45.32     : voanews.com

~ 206.190.36.45   : yahoo.com

b. APNIC

  • Ruang lingkup
APNIC (Asia Pacific Network Information Centre) merupakan RIR (Regional Internet Registry) untuk negara-negara di kawasan Asia Pasifik, termasuk di dalamnya adalah Cina, Korea, India, Jepang, dan Australia. APNIC menyediakan number resource allocation dan layanan registrasi yang mendukung operasi global internet.
  • Blok IP address

Sesuai informasi yang tertera pada https://www.apnic.net/publications/research-and-insights/ip-address-trends/apnic-resource-range, blok IP address yang dikelola APNIC adalah:

  • Contoh IP address

Sedangkan contoh IP address yang dikelola APNIC adalah:

~ 202.3.208.158     : telkomsel.com

~ 203.126.100.199 : singtel.com

~ 203.190.242.69   : detik.com

c. RIPE NCC

  • Ruang lingkup
RIPE NCC (Réseaux IP Européens Network Coordination Center) merupakan RIR (Regional Internet Registry) untuk negara-negara di kawasan Eropa, Timur Tengah, Afrika bagian utara, dan Asia Tengah. RIPE NCC mendukung koordinasi teknikal dan administratif dari infrastruktur internet.
  • Blok IP address

Blok IP address yang dikelola RIPE NCC adalah:

~ 062.x.x.x

~ 081.x.x.x – 088.x.x.x

~ 193.x.x.x – 195.x.x.x

~ 212.x.x.x – 213.x.x.x

~ 217.x.x.x

Untuk lebih lengkapnya, dapat dilihat di http://www.compusophia.com/en/ipaddrstat/ipv4_ripencc_pool.html

  • Contoh IP address

Sedangkan contoh IP address yang dikelola RIPE NCC adalah:

~ 46.22.180.91     : nuffic.nl

~ 131.111.150.25  : cam.ac.uk

~ 141.30.2.2         : tu-dresde.de

d. LACNIC

  • Ruang lingkup
LACNIC (Latin America and Caribbean Network Information Centre) merupakan RIR (Regional Internet Registry) untuk negara-negara di kawasan Amerika Latin dan Karibia. LACNIC menyediakan number resource allocation dan layanan registrasi yang mendukung operasi global internet.
  • Blok IP address

Blok IP address yang dikelola LACNIC adalah 200.x.x.x – 201.x.x.x

Untuk lebih lengkapnya, dapat dilihat di http://www.compusophia.com/en/ipaddrstat/ipv4_lacnic_pool.html

  • Contoh IP address
Sedangkan contoh IP address yang dikelola RIPE NCC adalah 161.148.175.40 ~> brasil.gov.br

e. AFRINIC

Update

Pada tanggal 22 Februari 2005, dibentuklah RIR (Regional Internet Registry) untuk kawasan Afrika, yaitu AFRINIC (African Network Information Center). Sebelum AFRINIC ini dibentuk, alokasi IP address untuk kawasan Afrika didistribusikan oleh ARIN, APNIC, dan RIPE NCC.

AFRINIC mengelola blok IP address:

2. Perbedaan antara bridge dan router:

a. Bridge

Bridge digunakan untuk menghubungkan dua atau lebih jaringan komputer yang secara logik sama. Pada pengoperasiannya, bridge tidak melibatkan Layer 3 OSI (Layer Network), tetapi hanya melibatkan Layer 1 dan 2 OSI (Layer Physical dan Layer Data-link). Pada mode bridging, prosesnya tidak perlu memahami protokol komunikasi jaringan seperti IP address, namun hanya perlu memahami sarana fisik, seperti MAC (Media Access Control) address.

b. Router

Router digunakan untuk menghubungkan host di dalam dua atau lebih jaringan komputer yang secara logik berbeda, agar dapat berkomunikasi. Router dapat dikatakan sebagai pintu gerbang host di jaringan komputer yang satu untuk berkomunikasi dengan host di jaringan komputer yang lain.Berbeda dengan bridge, pengoperasian router melibatkan Layer 3 OSI (Layer Network), sehingga dalam prosesnya perlu memahami protocol komunikasi jaringan seperti IP address.

Kesimpulan Bridge vs Router:

  • Bridge menghubungkan dua atau lebih jaringan komputer yang secara logik sama. Sedangkan router menghubungkan host di dalam dua atau lebih jaringan komputer yang secara logik berbeda, agar dapat berkomunikasi.
  • Bridge beroperasi pada Layer 2 OSI (Layer Data-link), sedangkan router beroperasi pada Layer 3 OSI (Layer Network).
  • Bridge tidak perlu memahami keterlibatan IP address, namun cukup MAC address-nya saja karena bekerja di Layer Data-link. Sedangkan router perlu memahami IP address karena bekerja di Layer Network.

Tracert dari komputer ke web tertentu:

Percobaan dilakukan terhadap dua website, yaitu cnn.com dan detik.com. Berikut adalah hasilnya:

~ cnn.com

~ detik.com

Terlihat bahwa hop yang sama muncul sampai 6 kali, yaitu dari hop ke-1 sampai dengan hop ke-6:

Detail dari router milik provider dengan IP public 112.215.36.195 dicek menggunakan domainwhitepages.com adalah sebagai berikut:

Dari informasi di atas diketahui bahwa IP public 112.215.36.195 diregisterkan atas nama PT Exelcomindo Pratama atau yang sekarang dikenal sebagai XL-AXIATA.

3. Fungsi DNS dalam internet:

Fungsi DNS dalam internet adalah menerjemahkan nama domain ke IP address yang dapat dimengerti oleh komputer. Di dalam jaringan komputer, hosthost berkomunikasi menggunakan IP address. Oleh karena sangat banyaknya IP address yang ada di seluruh dunia, adalah tidak mungkin bagi manusia untuk mengingat IP address yang sangat banyak tersebut. Oleh karenanya, dibutuhkan sebuah penamaan IP address ke domain yang berupa string (kata-kata) sehingga manusia bisa lebih mudah mengingatnya. Analoginya sama seperti penyimpanan nomor kontak di ponsel.

13 root DNS di seluruh dunia:

Menurut informasi dari https://www.iana.org/domains/root/servers, terdapat 13 root DNS yang ada di seluruh dunia, yaitu:

Root DNS merupakan server dengan level tertinggi (root) dalam hierarki DNS. Ilustrasinya sebagai berikut:

Jadi, ke-13 root DNS berada pada level root yang ada di hierarki paling atas dari DNS.

Area DNS yang diikuti oleh web pada no. 2 (cnn.com dan detik.com) adalah:

Berdasarkan data yang diperoleh dari domainwhitepages.com, website berikut berada pada area:

~ cnn.com berada di Atlanta, Georgia, Amerika Serikat.

Registrant Name: Domain Name Manager

Registrant Organization: Turner Broadcasting System, Inc.

Registrant Street: One CNN Center

Registrant City: Atlanta

Registrant State/Province: GA

Registrant Postal Code: 30303

Registrant Country: US

 

Menurut informasi yang diperoleh dari http://www.root-servers.org/, terdapat 5 root DNS di sekitar Atlanta, yaitu:

  • root-servers.net   : University of Maryland
  • root-servers.net   : NASA (Ames Research Center)
  • root-servers.net   : Internet Systems Consortium, Inc.
  • root-servers.net   : VeriSign, Inc.
  • l.root-servers.net : ICANN

~ detik.com berada di Jakarta, Indonesia.

Registrant Name: Siberkom, PT. Agranet Multicitra

Registrant Organization:

Registrant Street: Aldevco Octagon Building lt 2

Registrant City: Jakarta

Registrant State/Province: DKI Jakarta

Registrant Postal Code: 12740

Registrant Country: IN

 

Menurut informasi yang diperoleh dari http://www.root-servers.org/, terdapat 4 root DNS di sekitar Jakarta, yaitu:

  • root-servers.net  : University of Maryland
  • root-servers.net  : Internet Systems Consortium, Inc.
  • root-servers.net  : Netnod
  • l.root-servers.net : ICANN

 

Computer Network Fundamental

Sebelum terjun lebih tinggi *apa sih* lebih dalam maksudnya, ke dunia Internet Forensics (Forensika Internet), ada baiknya kita pelajari dulu mengenai hal2 dalam jaringan komputer (computer network) yg mungkin berguna dalam melakukan forensika internet.

Langsung kita bahas aja yaa.. 🙂

KOMPONEN YANG DAPAT DIFORENSIK

Komponen yang dapat diforensik pada forensika internet, antara lain:

1. NIC (Network Interface Card)

  • LAN card
  • Wireless card

2. Modem

3. Web browser & plug-in

IP ADDRESS

Mengingat tujuan dari forensika internet adalah untuk mendapatkan log dan IP address, maka ada baiknya kita flashback ke mata kuliah Jaringan Komputer jaman kuliah S1 dulu 😀

IP address yang masih banyak digunakan adalah IPv4, yaitu penomoran 32 bit untuk identifikasi alamat host & subnet. Ke depannya mungkin akan digunakan IPv6 (128 bit) untuk antisipasi habisnya alokasi IPv4. IPv4 sendiri dibagi ke dalam 5 kelas, yaitu:

  • Kelas A :     0.0.0.0 – 127.255.255.255
  • Kelas B : 128.0.0.0 – 191.255.255.255
  • Kelas C : 192.0.0.0 – 223.255.255.255
  • Kelas D : 224.0.0.0 – 239.255.255.255 (reserved untuk eksperimen)
  • Kelas E  : 240.0.0.0 – 255.255.255.255 (reserved untuk eksperimen)

Sedangkan IP address menurut penggunaannya dibagi ke dalam 2 jenis:

1. IP address public   ~> dikenali di internet dan bersifat unique

2. IP address private ~> IP lokal tidak dikenali di internet

  • IP private kelas A : 10.0.0.0 – 10.255.255.255
  • IP private kelas B : 172.16.0.0 – 172.31.255.255
  • IP private kelas C : 192.168.0.0 – 192.168.255.255

PENGELOLA IP ADDRESS

IP address berdasarkan region-nya (RIR – Regional Internet Registry), dikelola oleh:

  1. ARIN (American Registry for Internet Number)
  2. APNIC (Asia Pacific Network Information Center)
  3. RIPE NCC (Reseaux IP Europeens Network Coordinator Center)
  4. LACNIC (Latin American and Caribbean Network Information Center)
  5. AFRINIC (African Network Information Center)

Indonesia karena berada di kawasan Asia Pasifik, maka ada di bawah APNIC. Di Indonesia sendiri terdapat badan yang mengelola ISP (Internet Service Provider), bernama APJII (Asosiasi Penyedia Jasa Internet Indonesia).

APJII ini telah diakui sebagai National Internet Registry oleh APNIC untuk menyediakan layanan alokasi dan pendaftaran Internet resources (IP address dan AS number) dengan tujuan memungkinkan komunikasi melalui open system network protocols dan untuk membantu perkembangan serta pertumbuhan Internet di Indonesia.

~ Sumber: https://apjii.or.id/gudang/standar ~

CAKUPAN AREA NETWORK

Network berdasarkan cakupan areanya:

  1. LAN     : Local Area Network
  2. MAN   : Metropolitan Area Network
  3. WAN   : Wide Area Network
  4. SAN    : Storage Area Network ~> Cisco proprietary
  5. WLAN : Wireless Local Area Network

KATEGORI KOMPONEN NETWORK

3 kategori komponen network:

1. Device ~> perangkat/host/komputer

2. Media

  • Kabel : UTP (Unshielded Twisted Pair), STP (Shielded Twisted Pair), FO (Fiber Optic)
  • Nirkabel

3. Services ~> layanan

REPRESENTASI & TOPOLOGI NETWORK

Representasi network terdiri dari:

  1. End devices               : laptop, printer, smartphone
  2. Intermediary devices : router, wireless router, switch, firewall
  3. Network media         : LAN media, WAN media, wireless media

Topologi network merupakan pola hubungan di dalam jaringan komputer. Dibagi menjadi 2:

  1. Topologi fisik  ~> gambar topologi secara konseptual atau garis besar
  2. Topologi logik ~> gambar topologi secara detail dilengkapi dengan IP address/subnet

Kira2 begitulah teori fundamental-nya. Gak begitu banyak kan, namanya juga flashback 😀 Oiya, pada postingan sebelumnya saya sudah berniat untuk menuliskan teori beserta latihan soal. Untuk latihan soalnya sendiri di halaman terpisah, maksudnya biar gak kepanjangan sih.. Bisa dicekidot berikut ini ya.. 🙂

LATIHAN SOAL

Latihan soal dapat dilihat di sini.

OK, segitu dulu ya.. Semoga bermanfaat. Insya Allah dilanjutin lagi.. 🙂

SUMBER

 

Internet Forensics

Hey hey hey.. Kembali lagi di blog ini. Masih ingat postingan kemarin tentang Network Forensics? Nah di situ kan udah dijabarkan cabang2 dari Network Forensics yg salah satunya adalah Internet Forensics.

Postingan kali ini akan membahas mengenai Internet Forensics. Yah, sikit2 lah ya.. Internet Forensics ini merupakan mata kuliah pilihan SMT 3 sewaktu saya masih menjabat *ceileeeh* menjadi mahasiswa S2 di Magister Informatika dgn konsentrasi Forensika Digital. Kayaknya sekarang juga masih ada sih matkul ini.. 😀

OK, langsung aja ke pembahasannya ya.. 🙂

SEKILAS TENTANG INTERNET FORENSICS

Internet Forensics atau forensika internet merupakan kombinasi teknik komputasi dan kemampuan manusia dalam melakukan pendeteksian kejahatan internet. Kejahatan internet ini contohnya adalah penipuan berbasis online maupun pencurian identitas.

~ Sumber: http://internetforensics.co.za/ ~

Mereka2 yang memiliki website, menyimpan informasi penting secara online, dan melakukan transaksi di internet akan selalu berada dalam ancaman serangan internet. Oleh karena itu tujuan dilakukannya forensika internet adalah untuk mendapatkan barang bukti digital di internet yang berupa log (rekaman history). Dari log tersebut diharapkan dapat diketahui IP address dari penyerang.

CONTOH INTERNET FORENSICS

Internet Forensics dapat digunakan untuk forensik pada:

1. Email (Email Forensics)

  • Mempelajari sumber dan konten dari email sebagai barang bukti digital.
  • Mengidentifikasi pengirim email yang sebenarnya beserta lokasi fisiknya walaupun email dikirim melalui routing.
  • Mengidentifikasi penerima email.
  • Mengidentifikasi waktu pengiriman dan penerimaan email.
  • Investigasi terhadap banyak email, seperti blacklisting dan spam filter.

2. Web (Web Forensics)

  • Menganalisis hal-hal seperti browsing history dan aktivitas web secara umum pada perangkat untuk mengetahui penggunaan yang mencurigakan atau konten yang telah diakses.
  • Merujuk pada pengamatan trafik (traffic monitoring) dari sebuah halaman web, misalnya berapa jumlah pengunjung (visitor) dan berapa lama mereka berkunjung.

3. DNS (DNS Forensics)

  • Investigasi serangan pada DNS, misalnya DNS poisoning.

Nah, kira2 ada gambaran kan ya mengenai Internet Forensics ini? Yah, walopun cuman sekilas 😀 Next-nya Insya Allah kepengen membahas mengenai teori2 dari email, web, DNS forensics, dan teori2 Internet Forensics yg lain beserta latihan soal sewaktu saya kuliah dulu.

OK, sekian dulu ya.. Semoga bermanfaat.. 🙂

SUMBER

 

Network Forensics

Duuuh, lama bgt yak gak apdet blog yg ini.. Apdet-nya di sister blog mulu 😀

Alhamdulillah ketemu lagi di postingan teranyar di 2018 ini.. Kenapa kog lama apdet di sini? Karena mulai bingung mau nulis topik apa. Lagi pengen ngoprek tapi jg bingung mau ngoprek apa.. Huhuhuhu.. Ada ide?

OK deh, di sini saya pengen balik dulu jadi anak forensik.. *huuu, gaya..* Hehehe,,, ya biarin aja lah ya. Udah lama gak posting mengenai forensik. Nah, yg pengen saya angkat di sini adalah topik “Network Forensics“. Gak ada alesan khusus sih, cuman ini yg paling agak mudeng dibanding bidang forensik yg lain kayak multimedia forensics 😛 Oiya, postingan ini juga dilengkapi dengan latihan soal sewaktu saya kuliah dulu.

Nah, di postingan jaman saya kuliah dulu kan dibahas tuh tentang definisinya digital forensics.. Kurang lebihnya kayak gini nih..

“Ilmu yang digunakan dalam pelaksanaan metode investigasi, meliputi pencarian, pengumpulan, pengamanan, identifikasi, analisis, dokumentasi, dan pembuatan laporan terhadap barang bukti digital dalam sebuah kasus kejahatan untuk dapat dipresentasikan di pengadilan dan berfungsi sebagai penegakan hukum.”

Dari definisi tersebut dapat diketahui bahwa digital forensics berguna dalam proses investigasi suatu tindak kejahatan kriminal yang melibatkan adanya barang bukti elektronik atau digital. Nah, objek investigasi yg berupa barang bukti elektronik atau digital itu kan macem2 jenisnya ya.. Misalnya komputer, software, database, perangkat multimedia, dan gak ketinggalan network (jaringan komputer).

Pada 2014, terdapat penelitian dari Karie dan Venter yg membagi digital forensics ke dalam enam cabang utama, yaitu:

  • Computer forensics
  • Software forensics
  • Database forensics
  • Multimedia forensics
  • Device forensics
  • Network forensics

Nah, yg disebut belakangan (network forensics) itulah yg akan dibahas dalam postingan kali ini.. Bentar ya, bernapas dulu, panjang juga pengantarnya 

OK, lanjut pembahasannya ya.. 🙂

DEFINISI NETWORK FORENSICS

Menurut penelitian Palmer (2001), network forensics atau disebut sebagai forensik jaringan dapat didefinisikan sebagai:

Cabang digital forensics yang menggunakan teknik yang terbukti secara ilmiah untuk mengumpulkan, menggunakan, mengidentifikasi, menguji, menghubungkan, menganalisis, dan mendokumentasikan barang bukti digital dari beberapa sumber digital yang aktif memproses dan mengirimkannya.

Hal tersebut bertujuan untuk menyingkap fakta, mengukur keberhasilan suatu aktivitas yang tidak terotorisasi, seperti mengganggu, merusak, atau menyusup ke dalam komponen sistem, dan juga untuk menyediakan informasi yang berguna dalam pemulihan sistem terkait dari aktivitas merugikan tersebut.

SIFAT INFORMASI DALAM NETWORK FORENSICS

Kalo menurut Karie dan Venter (2014), informasi yg ada di dalam network forensics bersifat dinamis dan rentan. Maksudnya adalah informasi yang diperlukan dalam network forensics mudah hilang setelah ditransmisikan melalui jaringan. Selain itu, barang bukti dalam network forensics seperti file-file log di dalam host yang telah disusupi, juga dapat dihapus oleh penyerang.

Seperti yg kita ketahui dari paragraf di atas kalo informasi di dalam network forensics bersifat dinamis dan rentan. Maksudnya rentan ilang gitu.. Makanya di dalam network forensics, sering digunakan metode live forensics. Apa itu live forensics?

Penelitian Rafique dan Khan pada tahun 2013, menjelaskan bahwa terdapat 2 metode dalam digital forensics, yaitu:

1. Static forensics

Static forensics menggunakan pendekatan tradisional di mana barang bukti elektronik dibuatkan bit-by-bit image untuk dilakukan proses forensik. Proses forensiknya sendiri berjalan pada sistem yang tidak running (off).

2. Live forensics

Pada live forensics, proses forensik dilakukan dengan cara mengumpulkan dan menganalisis informasi barang bukti digital pada saat sistem sedang running (on). Live forensics bertujuan untuk melakukan analisis barang bukti tanpa mempengaruhi fungsionalitas sistem, sehingga keseluruhan fungsi yang dijalankan sistem tidak akan terganggu selama proses analisis digital dilakukan.

Dari kedua metode yg telah disebutkan tsb, biasanya yg digunakan dalam network forensics adalah metode live forensics. Karena apa? Karena selain informasi yg ditemukan dalam network forensics bersifat dinamis (cepat tergantikan dgn data/log baru) dan rentan hilang (ya daripada sibuk mati2in perangkat jaringan, keburu data/log-nya ilang kan ya..), live forensics juga digunakan untuk menghindari terjadinya downtime pada perangkat jaringan.

Sampai sini jelas ya? 🙂

APA YANG DIINVESTIGASI DALAM NETWORK FORENSICS

Telah dibahas bahwa informasi yang diperlukan dalam network forensics mudah hilang. Informasi ini ditransmisikan melalui jaringan, sehingga membentuk lalu lintas atau trafik jaringan (network traffic).

Nah, trafik jaringan inilah yang akan diinvestigasi. Apa saja alasannya kog trafik jaringan perlu diinvestigasi?

Berikut adalah jawabannya:

  1. Menemukan trafik jaringan yang mencurigakan.
  2. Mengetahui jaringan mana yang menghasilkan trafik yang mengganggu dan dari mana trafik datang atau diterima.
  3. Mengidentifikasi problem di jaringan.

OK, kita lanjut lagi pembahasannya..

CABANG-CABANG NETWORK FORENSICS

Nah, yg orang IT khususnya jaringan, pasti ngerti kalo jaringan itu luas cakupannya. Ada LAN, Wireless LAN, internet, belum lagi service/aplikasi2 yg berjalan di dalamnya, kayak web, VoIP (Voice over Internet Protocol), email, DNS, dll. Oleh karena itu, Karie dan Venter dalam penelitiannya di tahun 2014, membagi network forensics ke dalam beberapa cabang, sbb:

  • Cloud forensics

Menurut penelitian Keyun, R., Carthy, J., dan Kechadi di tahun 2011, cloud forensics merupakan bidang yang erat kaitannya dengan aplikasi teknik digital forensics dalam lingkungan cloud computing.

  • Telecom network forensics

Menurut penelitian Moore, Meehan, Manes, dan Shenoi di tahun 2005, sistem persinyalan (signaling core) dari telepon pada jaringan publik dapat menghasilkan data yang berharga mengenai pola panggilan telepon yang mungkin digunakan dalam investigasi kejahatan kriminal, terlebih lagi dengan berkembangnya sistem Voice over IP (VoIP). Namun sayangnya, banyak data yang dihasilkan dari sistem persinyalan telepon yang tidak dipelihara oleh service provider, sehingga data yang diperlukan tersebut tidak tersedia bagi badan penegak hukum.

  • Internet forensics

Menurut penelitian Karie dan Venter di tahun 2014, internet forensics merupakan bidang ilmu yang erat kaitannya dengan analisis aktivitas yang terjadi di internet. Tujuannya adalah untuk mendapatkan petunjuk mengenai orang atau komputer yang terlibat dalam kejahatan internet, seperti penipuan kartu kredit dan pencurian identitas. Hal-hal lain yang dapat dilakukan dalam internet forensics adalah mengekstrak informasi di dalam email, halaman web, atau web server. Informasi tersebut berpotensi mengandung barang bukti digital yang dapat dianalisis untuk kepentingan forensik.

  • Wireless forensics

Menurut artikel yang ditulis oleh Siles di tahun 2007, adopsi teknologi wireless oleh banyak organisasi berpotensi menimbulkan permasalahan dari segi kontrol dan keamanan. Wireless forensics yang muncul sebagai hasil dari adanya teknologi wireless difokuskan untuk menangkap (capture) atau mengumpulkan data barang bukti digital di jaringan nirkabel (wireless network), sehingga pada akhirnya barang bukti digital tersebut dapat dipresentasikan sebagai barang bukti yang valid di pengadilan.

Nah, daripada bingung2.. Sebagai summary dari penjelasan cabang2 network forensics, bolehlah dilihat gambar di bawah ini ya..

Network Forensics
Cabang-cabang network forensics
(Sumber: Karie & Venter, 2014)

Sekian pembahasan, sekarang saatnya.. *drum roll, tarak dung ces*

LATIHAN SOAL

Latihan soal dapat dilihat di sini.

OK, sekian dulu ya dari saya.. Smoga bermanfaat buat para pembaca sekalian.. Insya Allah ketemu lagi di postingan selanjutnya..

Terima kasih.

SUMBER

 

Bash Programming for Beginner

Alhamdulillah, kelar juga seri “Bash Programming for Beginner” alias pemrograman Bash untuk pemula, yang terdiri dari beberapa pembahasan sbb:

  1. Dasar-dasar Bash Programming (1)
  1. Dasar-dasar Bash Programming (2)
  1. Dasar-dasar Bash Programming (3)
  1. If Statements
  1. Menu Interaktif dengan:
  1. Perulangan dengan:
  1. Function

Jangan lupa di-cekidot yaa.. Semoga bisa membantu bagi yang mau atau sedang belajar mengenai shell script utamanya Bash programming.. Aamiin.. 🙂

Terima kasih.

Bash Programming: Function

Sampai jugalah di artikel terakhir seri “Bash Programming for Beginner“. Hiks.. Hiks.. Kog jd melo gini sih? 😛

Postingan kali ini akan membahas mengenai “Function” sebagai lanjutan dari seri postingan sebelumnya yg membahas tentang perulangan (repetition) dgn menggunakan until. OK deh.. Langsung aja ya..

Function ato bahasa Indonesia-nya adalah fungsi, dapat dikatakan sbg script kecil di dalam sebuah script. Function adalah kode script yg dapat dipanggil lebih dari satu kali di dalam keseluruhan script. Tentunya berguna kalo kita punya task di dalam script yg mau dijalankan lebih dari sekali. Biar gak repot2 nulis ulang kodenya.. Iya kan?

Cara pakainya gimana? Gampaaang.. Tinggal tulis aja nama beserta kode function-nya, terus panggil deh nama function-nya tsb ketika akan digunakan. Sebelum liat2 contohnya, yuk kita simak dulu poin2 yg akan dibahas dalam postingan mengenai function ini:

  1. Sintaks
  2. Function Tanpa Parameter
  3. Function dengan Parameter
  4. Variabel dalam Function

 

1. SINTAKS

Mari kita simak sintaks-nya si function ini..

function function_name {
   instruction_1
   instruction_2
   ...
   instruction_n
}

Atauuuu.. Bisa ditulis sbb:

function_name () {
   instruction_1
   instruction_2
   ...
   instruction_n
}

Terserah mau pake style yg mana.. Sesuai preferensi masing2 aja. Kalo saya sih lebih suka yg pertama, soalnya ada tulisan function-nya. Jadi lebih gampang dicari di dalam script 🙂 Sedangkan instruksi di dalam function sama2 diapit oleh tanda kurung kurawal { … }.

Nah, gampang dimengerti to? Yuk, lanjuuut.. Kita masuk ke pembahasan..

 

2. FUNCTION TANPA PARAMETER

Contoh function yg paling sederhana. Tanpa penggunaan parameter. Waduh, ngomong2 masih inget gak nih sama parameter? Jangan2 lupa ya.. 

Kalo lupa, silakan flashback dulu ke postingan mengenai parameter. Habis itu, balik ke sini lagi ya.. 🙂

Yuk kita simak contoh function yg simpel aja dulu. Gak pake parameter dan variabel. Biar lebih mudah dipahami. Seperti biasa, silakan buka text editor favorit, kemudian ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan function tanpa parameter

function lihat_direktori {
   echo "Lihat isi direktori `pwd` :"
   ls
}

function bye_bye {
   exit
}

echo "1. Function lihat_direktori"
echo "==========================="
lihat_direktori
echo
echo "2. Function bye_bye --> keluar program"
echo "======================================"
bye_bye
echo "Kasihan saya terbuang, dituliskan setelah function bye_bye dipanggil."
  • Dalam script tersebut terdapat dua buah function, yaitu:

~ lihat_direktori yang menjalankan instruksi echo “Lihat isi direktori `pwd` :” dan ls

~ bye_bye yang menjalankan instruksi exit

  • Function lihat_direktori dipanggil pertama kali lalu kemudian dilanjutkan function bye_bye.
  • Karena function bye_bye menjalankan instruksi exit, maka program langsung keluar.
  • Jikapun ada instruksi yang dituliskan setelah function bye_bye dipanggil, contohnya echo “Kasihan saya terbuang, dituliskan setelah function bye_bye dipanggil.”, maka instruksi tersebut tidak dijalankan.

Simpan file tsb dgn nama “function_wop.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x function_wop.sh
root@ubuntu:/home/ninkyhade# ls -l function_wop.sh
-rwxr-xr-x 1 root root 429 Dec 17 22:25 function_wop.sh
root@ubuntu:/home/ninkyhade# bash function_wop.sh
1. Function lihat_direktori
===========================
Lihat isi direktori /home/ninkyhade :
function_wop.sh

2. Function bye_bye --> keluar program
======================================

Gimana? Gak sesusah yg dibayangin kan? OK kalo gitu.. Kita lanjut ke pembahasan berikutnya ya, mengenai..

 

3. FUNCTION DENGAN PARAMETER

Setelah kembali ke masa lalu, *ecieeeeh nostalgia nih yee…* buat ngintip apa itu parameter, mari kita simak contoh script function dengan menggunakan parameter.

Sedikit modifikasi dari script sebelumnya, silakan buka text editor favorit, kemudian ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan function dengan parameter

function lihat_direktori {
   echo "Lihat isi direktori `pwd` :"
   ls $1
   echo "Parameter fungsi di atas adalah : $1"
}

function bye_bye {
   exit
}

echo "1. Function lihat_direktori"
echo "==========================="
lihat_direktori `pwd`
echo
echo "2. Function bye_bye --> keluar program"
echo "======================================"
bye_bye
echo "Kasihan saya terbuang, dituliskan setelah function bye_bye dipanggil."
  • Perbedaan script function_wop.sh dan function_wp.sh adalah pada pemanggilan function lihat_direktori.
  • Pada function lihat_direktori di dalam script function_wp.sh diikuti oleh parameter $1 yang diisi oleh perintah `pwd` untuk menampilkan direktori aktif di mana user berada. Berhubung direktori aktif yg digunakan adalah /home/ninkyhade, maka perintah ls $1 akan menjadi ls /home/ninkyhade.

Simpan file tsb dgn nama “function_wp.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x function_wp.sh
root@ubuntu:/home/ninkyhade# ls -l function_wp.sh
-rwxr-xr-x 1 root root 484 Dec 17 22:39 function_wp.sh
root@ubuntu:/home/ninkyhade# bash function_wp.sh
1. Function lihat_direktori
===========================
Lihat isi direktori /home/ninkyhade :
function_wop.sh function_wp.sh
Parameter fungsi di atas adalah : /home/ninkyhade

2. Function bye_bye --> keluar program
======================================

Makin asik kaaan? Setelah melihat contoh script function dengan parameter, sekarang kita coba kombinasikan function dengan variabel. Tapi kita bahas dulu variabel dalam function berikut ini ya..

 

4. VARIABEL DALAM FUNCTION

Dalam function, dikenal 2 jenis variabel:

  • Variabel Lokal

~ Variabel yg didefinisikan di dalam kode function dengan sintaks:

    local var_name=<var_value>

~ Nilai dari variabel lokal hanya dapat dibaca oleh function itu sendiri.

  • Variabel Global

~ Variabel yg bisa didefinisikan di dalam maupun di luar kode function. Sintaksnya:

    var_name=<var_value>

~ Variabel global dapat digunakan di keseluruhan script.

Untuk lebih jelasnya, langsung aja kita simak contohnya seperti berikut ini. Jangan lupa buka text editor favorit, lalu ketikkan baris2 berikut.

#!/bin/bash
# Script sederhana penggunaan variabel dalam function
# Variabel Global #
tokoh="Agnez Mo"
acara="The Voice Kids Indonesia"
partner="Coach Tulus & Papa Bebi"

function sewaktu_kecil {
   # Variabel Lokal #
   local acara="Tralala Trilili"
   local partner="Kak Ferry ME dilanjutkan Kak Indra Bekti"
   # Variabel Global #
   tokoh="Agnes Monica"
   echo "Sewaktu kecil, masih menggunakan nama $tokoh dan menjadi MC di acara TV $acara bersama $partner."
   echo "Generasi '90-an pasti tau niiih.. :D"
}

echo "1. Sebelum pemanggilan function"
echo "==============================="
echo "Menyimak perjalanan karir $tokoh yang saat ini menjadi coach di acara TV $acara bersama dengan $partner."
echo
echo "2. Saat pemanggilan function"
echo "============================"
sewaktu_kecil
echo
echo "3. Setelah pemanggilan function"
echo "==============================="
echo "Baru-baru ini $tokoh juga me-release video klip musik baru dan berhasil mengantarkan salah seorang anggota team-nya menjadi juara $acara mengalahkan team-nya $partner."

Simpan file dgn nama “function_var.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x function_var.sh
root@ubuntu:/home/ninkyhade# ls -l function_var.sh
-rwxr-xr-x 1 root root 774 Dec 17 23:56 function_var.sh
root@ubuntu:/home/ninkyhade# bash function_var.sh
1. Sebelum pemanggilan function
===============================
Menyimak perjalanan karir Agnez Mo yang saat ini menjadi coach di acara TV The Voice Kids Indonesia bersama dengan Coach Tulus & Papa Bebi.

2. Saat pemanggilan function
============================
Sewaktu kecil, masih menggunakan nama Agnes Monica dan menjadi MC di acara TV Tralala Trilili bersama Kak Ferry ME dilanjutkan Kak Indra Bekti.
Generasi '90-an pasti tau niiih.. :D

3. Setelah pemanggilan function
===============================
Baru-baru ini Agnes Monica juga me-release video klip musik baru dan berhasil mengantarkan salah seorang anggota team-nya menjadi juara The Voice Kids Indonesia  mengalahkan team-nya Coach Tulus & Papa Bebi.
  • Sewaktu function belum dipanggil, yang dibaca adalah nilai variabel global, yaitu:

~ $tokoh berisi Agnez Mo

~ $acara berisi The Voice Kids Indonesia

~ $partner berisi Coach Tulus & Papa Bebi

  • Saat function sewaktu_kecil dipanggil, maka yang dibaca adalah nilai variabel di dalam function tersebut, yaitu:

~ $tokoh menjadi Agnes Monica

~ $acara menjadi Tralala Trilili

~ $partner menjadi Kak Ferry ME dilanjutkan Kak Indra Bekti

  • Selesai pemanggilan function, nilai variabel akan terbaca sebagai:

~ $tokoh berisi Agnes Monica

~ $acara berisi The Voice Kids Indonesia

~ $partner berisi Coach Tulus & Papa Bebi

Kemudian muncul pertanyaan. Mengapa kog pada akhirnya setelah pemanggilan function, $tokoh berisi Agnes Monica dan bukan Agnez Mo seperti di awal?

Jawabannya adalah karena di dalam function didefinisikan variabel global $tokoh yang berisi Agnes Monica. Sehingga setelah pemanggilan function, variabel global $tokoh berubah dari Agnez Mo menjadi Agnes Monica.

Oleh karena itu..

NOTE:

Nama variabel lokal lebih baik dibedakan dari nama variabel global, sehingga tidak menimbulkan kebingungan.

Paham to? Paham to? Yah, silakan diutak-atik dan dicoba-coba sendiri ya.. Smoga apa yg disampaikan di sini gak bikin bingung 😀

PENUTUP

Alhamdulillah.. Sampai di sini jumpa kita di serial “Bash Programming for Beginner“.

Harapan saya semoga semakin banyak yg mempelajari Bash programming. Dan semoga postingan ini bisa menghibur *tsaaah* dan bermanfaat buat para pembaca tercinta.. 🙂

OK, sekian dulu.. Insya Allah ketemu lagi di postingan selanjutnya..

SUMBER

 

Bash Programming: Perulangan dengan Until

Yak, masih lanjutan dari seri Bash programming edisi perulangan (repetition) yg kemaren nih.. Kalo di postingan kemaren perulangannya menggunakan while, di postingan kali ini perulangannya menggunakan “Until“.

Perulangan until hampir sama dengan perulangan while. Jika pada perulangan while, instruksi dalam perulangan dilakukan sewaktu kondisi benar (true), maka pada perulangan until, instruksi dalam perulangan dilakukan sewaktu kondisi salah (false).

Jadi, perulangan until menjalankan instruksi jika kondisi salah, dan akan diulang terus sampai kondisi menjadi benar. Sintaksnya:

until [ condition_true ] 
do 
   instruction_1
   instruction_2
   ...
   instruction_n
done
  • Jika condition_true belum terpenuhi, yang berarti kondisi masih salah, maka instruction_1 sampai instruction_n akan terus dilakukan.
  • Jika condition_true telah terpenuhi, maka perulangan dihentikan.
  • Perulangan diawali dengan do dan diakhiri dengan done.

Untuk contoh, silakan disimak terlebih dahulu di postingan perulangan dengan while. Contoh tsb akan kita ubah ke dalam script perulangan dgn menggunakan until.

Contoh pertama menggunakan while (script while_1.sh) untuk menampilkan hitungan angka 1-9 dengan interval 1 detik.

#!/bin/bash
# Script sederhana penggunaan while untuk perulangan

angka=1

while [ $angka -le 9 ]
do
   echo "$angka"
   sleep 1
   (( angka++ ))
done

Maka, kita coba ubah script tsb menggunakan perulangan dengan until. Seperti biasa, buka text editor favorit dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan until untuk perulangan

angka=1

until [ $angka -gt 9 ]
do
   echo "$angka"
   sleep 1
   (( angka++ ))
done
  • Variabel angka diisi dengan 1.
  • Oleh karena yang ditampilkan adalah hitungan dari 1-9, maka until diset untuk kondisi variabel angka lebih besar dari (-gt) 9, agar saat angka telah mencapai > 9, perulangan dihentikan.
  • Selama variabel angka kurang dari atau sama dengan 9, maka perintah echo “$angka” dan sleep 1 akan terus dilakukan.
  • sleep 1 adalah perintah untuk menghentikan instruksi selama 1 detik sebelum memulainya lagi.
  • (( angka++ )) digunakan untuk kenaikan (increment) +1.

Simpan file tsb dgn nama “until_1.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x until_1.sh
root@ubuntu:/home/ninkyhade# ls -l until_1.sh
-rwxr-xr-x 1 root root 145 Dec 13 17:29 until_1.sh
root@ubuntu:/home/ninkyhade# bash while_1.sh
1
2
3
4
5
6
7
8
9

Gimana? Udah ada bayangan kan, bedanya until dgn while? Agar lebih cucok lagi pemahamannya, kita simak dulu yuk, contoh berikutnya ini..

Contoh kedua menggunakan while (script while_2.sh) untuk menampilkan pertanyaan “Siapa nama Anda? ” pada layar. Pertanyaan tsb akan berhenti diulang ketika jawabannya telah sesuai dgn variabel nama yg sebelumnya telah didefinisikan. Langsung aja ya..

#!/bin/bash
# Script sederhana penggunaan while untuk perulangan

nama="pompom"

while [ "$siapa" != "$nama" ]
do
   read -p "Siapa nama Anda? " siapa
done

echo "Selamat datang, $siapa!"

Maka, kita coba ubah script tsb menggunakan perulangan dengan until. Seperti biasa, buka text editor favorit dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan until untuk perulangan

nama="pompom"

until [ "$siapa" = "$nama" ]
do
   read -p "Siapa nama Anda? " siapa
done

echo "Selamat datang, $siapa!"
  • Variabel nama diisi dengan pompom.
  • Variabel siapa digunakan untuk menyimpan input dari user melalui perintah read -p “Siapa nama Anda? ” siapa.
  • Sampai variabel siapa berisi (=) variabel nama (pompom), maka perintah read -p “Siapa nama Anda? ” siapa akan terus dijalankan.
  • Instruksi perulangan akan selesai ketika user menginputkan string pompom.
  • Setelah instruksi perulangan selesai, maka perintah echo “Selamat datang, $siapa!” akan dijalankan.

Simpan file tsb dgn nama “until_2.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x until_2.sh
root@ubuntu:/home/ninkyhade# ls -l until_2.sh
-rwxr-xr-x 1 root root 185 Dec 13 17:49 until_2.sh
root@ubuntu:/home/ninkyhade# bash until_2.sh
Siapa nama Anda? pampam
Siapa nama Anda? pimpim
Siapa nama Anda? pumpum
Siapa nama Anda? pompom
Selamat datang, pompom!

Nah, insya Allah gampang kan? Smoga makin mudah dipahami dan memberikan pencerahan ya.. *tsaaah...*

OK, sekian dulu.. Smoga bermanfaat ya.. Insya Allah ketemu lagi di postingan selanjutnya tentang “Function” yg insya Allah jadi seri terakhir dari postingan Bash programming untuk pemula ini..

SUMBER

Bash Programming: Perulangan dengan While

Masi lanjutan dari postingan kemaren tentang perulangan dalam Bash programming. Kalo postingan kemaren membahas perulangan dengan for, maka di postingan kali ini akan membahas perulangan dengan menggunakan “While“.

While digunakan untuk perulangan instruksi, yg umumnya dibatasi dengan suatu kondisi. Selama kondisi tsb benar (true), maka perulangan akan terus dilakukan. Perulangan akan berhenti bila kondisi salah (false) atau program keluar dari blok while melalui perintah break atau exit. Variabel yg ingin diulang harus terlebih dahulu diberikan nilai awal (inisialisasi).

Langsung aja yuk, cekidot sintaksnya:

while [ condition ] 
do 
   instruction_1
   instruction_2
   ...
   instruction_n
done
  • Jika condition selalu benar, maka instruction_1 sampai instruction_n akan terus dilakukan.
  • Jika condition berubah jadi salah, maka perulangan dihentikan.
  • Jika terdapat instruksi break atau exit, maka perulangan juga dihentikan.
  • Perulangan diawali dengan do dan diakhiri dengan done.

Marilah kita buat contoh script while bersama2.. Seperti biasa, buka text editor favorit Anda dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan while untuk perulangan

angka=1

while [ $angka -le 9 ]
do
   echo "$angka"
   sleep 1
   (( angka++ ))
done
  • Variabel angka diisi dengan 1.
  • Selama variabel angka kurang dari atau sama dengan (-le) 9, maka perintah echo “$angka” dan sleep 1 akan terus dilakukan.
  • sleep 1 adalah perintah untuk menghentikan instruksi selama 1 detik sebelum memulainya lagi.
  • (( angka++ )) digunakan untuk kenaikan (increment) +1.

Simpan file tsb dgn nama “while_1.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x while_1.sh
root@ubuntu:/home/ninkyhade# ls -l while_1.sh
-rwxr-xr-x 1 root root 130 Dec 12 18:55 while_1.sh
root@ubuntu:/home/ninkyhade# bash while_1.sh
1
2
3
4
5
6
7
8
9

Hasilnya akan muncul dalam hitungan 1 sampai dengan 9 dengan jeda interval 1 detik. Sampai sini paham ya? Masih mau saya tambahin contoh lagi niiiih.. 🙂

Buka text editor favorit Anda dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan while untuk perulangan

nama="pompom"

while [ "$siapa" != "$nama" ]
do
   read -p "Siapa nama Anda? " siapa
done

echo "Selamat datang, $siapa!"
  • Variabel nama diisi dengan pompom.
  • Variabel siapa digunakan untuk menyimpan input dari user melalui perintah read -p “Siapa nama Anda? ” siapa.
  • Selama variabel siapa tidak sama dengan (!=) variabel nama (pompom), maka perintah read -p “Siapa nama Anda? ” siapa akan terus dijalankan.
  • Instruksi perulangan akan selesai ketika user menginputkan string pompom.
  • Setelah instruksi perulangan selesai, maka perintah echo “Selamat datang, $siapa!” akan dijalankan.

Simpan file tsb dgn nama “while_2.sh“. Mari kita coba jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x while_2.sh
root@ubuntu:/home/ninkyhade# ls -l while_2.sh
-rwxr-xr-x 1 root root 194 Dec 12 19:20 while_2.sh
root@ubuntu:/home/ninkyhade# bash while_2.sh
Siapa nama Anda? pampam
Siapa nama Anda? pimpim
Siapa nama Anda? pumpum
Siapa nama Anda? pompom
Selamat datang, pompom!

Perhatikan bahwa setelah user menginputkan string pompom, instruksi perulangan yg menampilkan Siapa nama Anda? selesai dijalankan, dan dilanjutkan dengan munculnya tulisan Selamat datang, pompom!

Gimana? Mudah dipahami kan?

OK, sekian dulu.. Smoga bermanfaat ya.. Insya Allah ketemu lagi di postingan selanjutnya..

SUMBER

Bash Programming: Perulangan dengan For

Hey hey hey.. Lama tak berjumpa.. Soalnya saya habis mudik pas long weekend Maulud Nabi Muhammad SAW kemaren 😀 Smoga kabar semuanya baik2 aja ya.. 🙂

Langsung aja yuk.. Melanjutkan postingan sebelumnya tentang “Bash Programming” membuat menu interaktif menggunakan select, di postingan kali ini kita akan membahas bagaimana cara menggunakan perulangan atau bahasa kerennya disebut repetition, dalam Bash script dengan menggunakan “For“.

Perulangan digunakan untuk mengeksekusi perintah2 yg ada di dalamnya secara berulang, selama kondisi berjalan sesuai yg ditentukan. Sedangkan for menggunakan variabel yg akan diganti dengan nilai yg berada pada daftar. Perhatikan sintaks berikut:

for var in string_1 string_2 ... string_n
do
   instruction_1
   instruction_2
   ...
   instruction_n
done
  • string_1, string_2, dst. sampai dengan string_n disebut sebagai daftar yang akan di-assign ke variabel.
  • instruction_1, instruction_2, dst. sampai dengan instruction_n adalah instruksi yang akan diulang berdasarkan daftar.
  • Perulangan diawali dengan do dan diakhiri dengan done.

Nah, daripade bingung2 nih.. Mendingan langsung aje ye, kite masup ke contohnye.. *lha kog jadi logat Betawi* ehehehe.. Seperti biasa, buka text editor favorit Anda dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan for untuk perulangan

for bil in 1 2 3
do
   echo "Saya angka $bil"
done
  • Angka 1, 2, dan 3 diperlakukan sebagai string, bukan integer.
  • Angka 1 mewakili string_1, angka 2 mewakili string_2, dan angka 3 mewakili string_3.
  • Angka 1, 2, dan 3 di-assign ke variabel bil.
  • instruction yang akan dieksekusi secara berulang adalah echo “Saya angka $bil”.

Simpan file tsb dgn nama “for_1.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x for_1.sh
root@ubuntu:/home/ninkyhade# ls -l for_1.sh
-rwxr-xr-x 1 root root 113 Dec 11 21:57 for_1.sh
root@ubuntu:/home/ninkyhade# bash for_1.sh
Saya angka 1
Saya angka 2
Saya angka 3

Paham kan sampai sini?

Masih ada beberapa contoh lagi untuk penggunaan for dalam perulangan. Tidak melulu menggunakan string_1, string2, s/d string_n untuk mendefinisikan daftar. Bisa juga menggunakan perintah Linux. Yang jelas, perintah tsb dapat membentuk daftar untuk assign variabel. Contohnya adalah perintah ls.

Perintah ls digunakan untuk melihat isi direktori. Dalam script berikut, ceritanya ingin melihat isi di dalam direktori /home. Langsung saja ya.. Buka text editor favorit Anda dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan for dengan perintah ls

for isi in $(ls /home)
do
   echo "Isi direktori : $isi"    
done

Simpan file tsb dgn nama “for_2.sh“. Sekarang coba kita jalankan file script tsb.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi.

root@ubuntu:/home/ninkyhade# chmod +x for_2.sh
root@ubuntu:/home/ninkyhade# ls -l for_2.sh
-rwxr-xr-x 1 root root 120 Dec 11 22:18 for_2.sh
root@ubuntu:/home/ninkyhade# bash for_2.sh
Isi direktori : dekisugi
Isi direktori : doraemon
Isi direktori : giant
Isi direktori : mappesona
Isi direktori : ninkyhade
Isi direktori : nobita
Isi direktori : shizuka
Isi direktori : suneo

Nah, apa yg terjadi seandainya script tsb dijalankan untuk melihat direktori yg tidak ada isinya babar blas? Jeng jeng jeng.. Yah gak keluar apa2, karena kondisinya kan hanya menampilkan hasil perintah echo “Isi direktori : $file” apabila $file ada isinya. Kalo nggak ada nilai yg bisa di-assign ke $file, maka instruksi perulangan tidak dijalankan.

Saya kasih contoh 1 lagi ya.. Sekarang inti script-nya ini pengen menampilkan angka hitung mundur dari 10 s/d 0 dgn interval 2, menggunakan perulangan for. Yuk, ncus.. Langsung aja..

Buka text editor favorit Anda dan ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan for untuk hitung mundur

for countdown in {10..0..2}
do
   echo "$countdown"    
done

Simpan file tsb dgn nama “for_3.sh“. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi.

root@ubuntu:/home/ninkyhade# chmod +x for_3.sh
root@ubuntu:/home/ninkyhade# ls -l for_3.sh
-rwxr-xr-x 1 root root 122 Dec 11 22:37 for_3.sh
root@ubuntu:/home/ninkyhade# bash for_3.sh
10
8
6
4
2
0

Gimana? Mudah bukan? *Ibu Sisca Soewitomo’s style ~ yg hobi mantengin acara masak2 di Indosiar jaman ’90-an pasti tau*

Nah, sampai di sini jumpa kita. Smoga mudah dipahami dan gak bikin tambah puyeng ya.. 🙂 Intinya sih, selama ada daftar yg nilainya bisa di-assign ke variabel, insya Allah dapat digunakan dalam perulangan dengan for.

OK, sekian dulu.. Smoga bermanfaat ya.. Insya Allah ketemu lagi di postingan selanjutnya..

SUMBER