Di Balik Layar Investigasi Nomor 5

Tulisan ini merupakan sambungan dari tulisan sebelumnya. Pada tulisan ini akan saya bahas tentang metode saya menghitung dan membuat daftar subdomain tingkat 4 pada domain itb.ac.id (soal investigasi nomor 5). Adapun perangkat lunak yang saya gunakan untuk menyelesaikan permasalahan ini adalah Microsoft Excel, basis data MySQL (dengan XAMPP), serta Netbeans. Langkah-langkah yang saya tempuh akan saya uraikan dalam beberapa poin sebagai berikut.

Manipulasi hasil host -l itb.ac.id ns1.itb.ac.id

  1. Buka file subdomain.csv yang memuat hasil host -l itb.ac.id ns1.itb.ac.id (baca tulisan sebelumnya).
  2. Hapus lima baris pertama.
  3. Replace  “<spasi>name server<spasi>” dengan “<spasi>”.
  4. Replace “<spasi>has address<spasi>” dengan “<spasi>”.
  5. Replace “<spasi>has IPv6 address<spasi>” dengan “<spasi>”.
  6. Save as subdomain.csv .

Simpan daftar subdomain ke MySQL

  1. Buat database baru di MySQL (Sebenarnya menggunakan database yang sudah ada pun tidak masalah. Namun agar tidak campur aduk, saya membuat database baru yang saya beri nama tugaskil).
  2. Buat tabel baru di database pada poin pertama, beri nama tabel subdomain. Tabel ini memiliki 2 field, yaitu subdomain_name (varchar 255 karakter) dan subdomain_something (varchar 255 karakter). Sekedar informasi, field kedua saya beri nama subdomain_something karena ada yang berisi name server, IPv4 address, juga IPv6 address. Yang jelas, ketiga hal tersebut bukanlah yang kita cari disini.
    Struktur tabel subdomain
  3. Import subdomain.csv ke tabel subdomain. Ubah bagian Fields terminated by dari titik koma (‘;’) ke spasi (‘ ‘).
    Import dari csv
  4. Jika berhasil, tabel akan memiliki tampilan seperti di bawah ini.
    Isi tabel subdomain

Membuat program sederhana

  1. Algoritma program:
    1. Baca field subdomain_name dari tabel subdomain.
    2. Untuk semua record yang terbaca, replace string “.itb.ac.id” dengan string kosong (“”). Contoh: “8eh.itb.ac.id” menjadi “8eh”, “ol.akademik.itb.ac.id” menjadi “ol.akademik”, dst. Ini berarti domain “itb.ac.id” tidak di-replace.
    3. Cek string yang terbaca.
      • Jika string tidak mengandung tanda titik (“.”), dapat dipastikan subdomain tersebut level 4. Contoh: “8eh” tidak mengandung titik, berarti “8eh.itb.ac.id” adalah level 4.
        Simpan string dalam list dan tampilkan “string.itb.ac.id”.
      • Jika string mengandung tanda titik (dan string-nya bukan “itb.ac.id”), ambil string setelah tanda titik terakhir saja. Contoh: “ol.akademik” mengandung tanda titik, ambil “akademik”-nya saja. Cek string tsb dalam list. Jika string telah ada dalam list, skip saja. Jika belum ada, simpan dalam list dan tampilkan “string.itb.ac.id”.
    4. Hitung jumlah total subdomain level 4 dan tampilkan.
  2. Buat project baru di Netbeans.
  3. Karena saya hanya membuat satu method, saya tidak membuat class baru (hanya ada file Main.java). Adapun algoritma pada nomor 1 saya implementasikan sebagai berikut (silakan di tab sendiri, karena tab yang sudah saya buat di program tidak terlihat setelah di-copy ke sini):
    package subdomain;
    import com.mysql.jdbc.Driver;
    import java.sql.*;
    import java.util.LinkedList;
    public class Main
    {
    public static void main(String[] args)
    {
    new Main().readData();
    }
    void readData()
    {
    String temp = "";
    int counter = 0;
    LinkedList ll = new LinkedList();
    try
    {
    /* Koneksi dengan database */
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/tugaskil", "root", "");
    Statement stat = con.createStatement();
    /* Menganalisis subdomain level 4 */
    ResultSet rs = stat.executeQuery("select distinct subdomain_name from subdomain");
    while(rs.next())
    {
    temp = rs.getString(1).replace(".itb.ac.id","");
    if(!temp.contains("."))
    {
    System.out.println(rs.getString(1));
    ll.add(temp);
    counter++;
    }
    else if(!temp.equals("itb.ac.id"))
    {
    String[] pecah = temp.split("\\.");
    String keempat = pecah[pecah.length-1];
    if(!ll.contains(keempat))
    {
    ll.add(keempat);
    counter++;
    System.out.println(keempat+".itb.ac.id");
    }
    }
    }
    System.out.println("Total subdomain level 4 = "+counter);
    stat.close();
    con.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }

Hasil yang saya dapatkan (jumlah subdomain itb.ac.id serta daftarnya) akan saya bahas di tulisan selanjutnya.

Catatan:

Seperti kata pepatah, banyak jalan menuju Roma. Sangat mungkin ada cara lain yang lebih efektif selain cara saya yang relatif panjang ini. :)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s