if99.net

IF99 ITB

Archive for July, 2011

Pre-conference Challenge #3 OWASP AppsecUSA 2011 – Walkthrough

without comments

Dalam tulisan ini saya akan sharing bagaimana menyelesaikan challenge CTF OWASP dalam Appsec USA 2011.

Dalam challenge ini kita diminta mendownload sebuah file ZIP yang berisi sebuah Applet (dalam JAR) dan html untuk me-load Applet tersebut. Ketika Applet tersebut dibuka di browser akan terlihat seperti ini:

Kita dihadapkan pada form yang meminta kita memasukkan username dan PIN. Jadi challenge  kita adalah menemukan username dan PIN yang tepat untuk mendapatkan flag yang terenkripsi. Dari form tersebut kita mendapat clue bahwa PIN ini formatnya adalah 6 digit.

Sebelumnya kita harus tahu dulu darimana data username/PIN tersebut disimpan. Ada dua kemungkinan:

  • Server-side authentication: bila keputusan credentials benar/salah diputuskan di server
  • Client-side authentication: bila keputusan credentials benar/salah diputuskan di client (browser)

Pertama saya menguji dengan memasukkan user dan PIN sembarang, dari pantauan sniffer tidak terlihat ada traffic data sedikitpun. Dari sini bisa kita simpulkan bahwa ini adalah client-side authentication, artinya keputusan username dan PIN yang dimasukkan benar atau salah sepenuhnya diputuskan di client-side (dalam browser/Applet).

Dalam client-side authentication, pasti ada repository untuk menyimpan data user dan passwordnya. Dalam kasus ini, data tersebut disimpan dalam JAR. Dalam file JAR tersebut kalau kita buka, kita akan temukan file:

org\owasp\appsecusa\capturetheflag\loginchallenge\data.xml. Berikut adalah isi dari data.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <users>
        <identity>
            <uid>1</uid>
            <username>Larry</username>
            <password>520540d155fdde616031d546cd5c747a</password>
        </identity>
        <identity>
            <uid>2</uid>
            <username>Curly</username>
            <password>edbf0f9d73cd984fae64c44c618f3c33</password>
        </identity>
        <identity>
            <uid>3</uid>
            <username>Moe</username>
            <password>b2512d38c5702ce5108585d3c730f657</password>
        </identity>
    </users>
    <storage>
        <record>
            <sid>3</sid>
            <data>LCNIk2NvX1JdVcwIoWBxyewfKIFexhCeGnepwYK63RmSrEmAbEg/CHLRA7sK0mjAB/ZJzbM113Mv
3YXg2d46age+gNFoERSce9u2/up8xcpjfLdKd9RilU1hqpkZ0vcXkgZSn8XTnecHVYSRG45gXuWA
PzWGvNdy396WivrEKZo5B3kGUOJh8XIBW90aA9RWN0thyHoJvjaiu7alKuv/wtKwMk0ZTuZol5Le
rY7iJJdaEPthqeso3bHg0xd3xKmD2X09PdEa1U8ZuOYH2Z3ZjN4fj6gm5EBjDNferc7rSWYcbNkF
064jnQHO73XQAURMXl+vaXWMX3i7uqWinm/eSc1BUspXaB3BBZChcoMqK0+gdsmzd1GGalVqL86f
xBL7T5yVS7RJe0r45HtCYXroecR1aaO6xzHUwcAqGAD2Km2n0DrmRz9MoVO0yR2/KipiAfjFzPd+
7wjbzF5M8BcfLNRtBR9fTK86fkeIO+19+IFwnlewYFzVIWtTebm3zOHJCbQtBttMfwp8YaM+UWxZ
sA==</data>
        </record>
        </storage>
    </root>

File XML ini menyimpan data user, password dan data yang terenkripsi (kemungkinan ini adalah flag yang akan kita capture). Dari isinya bisa kita lihat ada 3 user: Larry, Curly dan Moe. Password terlihat dalam bentuk hash sepanjang 32 karakter (dari panjangnya kemungkinan ini adalah MD5).

Karena kemungkinan password disimpan dalam MD5 dan formatnya adalah 6 digit, maka saya mencoba cara paling mudah dulu, yaitu melakukan brute force dengan john the ripper. Dengan diketahui formatnya adalah 6 digit, john bisa melakukan brute force dalam hitungan detik saja.

Sebelum menjalankan john, kita perlu edit john.conf dulu agar lebih efisien. Pada bagian Incremental:Digits Kita masukkan minLength=6 dan maxLength=6 karena kita tahu bahwa yang kita cari panjangnya tepat 6 digit.

Oke sekarang kita coba jalankan john dan berdoa semoga passwordnya ditemukan.

John dengan opsi “incremental:Digits” dan panjang diset 6 ternyata tidak berhasil mendapatkan kecocokan, artinya format tersebut pasti bukan plain MD5, kemungkinan sudah ditambah salt. Oke kalau cara ini gagal, sekarang waktunya “go deeper”.

Decompiling

Kita akan “go deeper” dengan melakukan decompiling file class yang tersimpan dalam JAR.

Class yang bertanggung jawab melakukan otentikasi adalah org.owasp.appsecusa.capturetheflag.loginchallenge.Authenticator khususnya pada method authenticate().

1
2
3
4
5
6
7
  public boolean authenticate(String username, String pin)
    throws EncryptionException
  {
    if ((username == null) || (!this.usersIds.containsKey(username)))
      return false;
    return this.calculator.compare(pin, (String)this.usersIds.get(username));
  }

Dalam method authenticate() memakai method compare() dari class MD5HashCalculator.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  public String getHash(String text)
    throws EncryptionException
  {
    try
    {
      MessageDigest m = MessageDigest.getInstance("MD5");
      m.update("BuildYourOwnRainbow-AppSecUSA:".getBytes(), 0, "BuildYourOwnRainbow-AppSecUSA:".length());
      m.update(text.getBytes(), 0, text.length());
      byte[] digest = m.digest();
      BigInteger bigInt = new BigInteger(1, digest);
      String hashtext = bigInt.toString(16);
 
      while (hashtext.length() < 32) {
        hashtext = "0" + hashtext;
      }
      return hashtext; } catch (NoSuchAlgorithmException ex) {
    }
    throw new EncryptionException("Failed to digest:" + ex.getMessage(), ex);
  }
 
  public boolean compare(String text, String hash) throws EncryptionException
  {
    return getHash(text).equals(hash);
  }

Dari potongan kode di atas terjawab bagaimana password disimpan. Password disimpan memang dalam MD5, tapi sudah diberi salt string:”BuildYourOwnRainbow-AppSecUSA:”, ini sebabnya john the ripper tidak berhasil meng-crack.

Brute forcing PIN

Karena kita sudah mengetahui bagaimana otentikasi dilakukan (MD5+salt) maka kita bisa meminjam code di atas dan memodifikasinya untuk melakukan brute force. Karena PIN adalah 6 digit, maka kita bisa melakukan brute force dari 100000 sampai 999999.

Kita hanya menambahkan method main yang melakukan looping dari 100.000 sampai < 1.000.000 dan memanfaatkan method compare getHash() dan compare() yang sama tanpa modifikasi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.io.*;
 
public class md5
{
 
  public static void main(String[] args) {	
	for (int i = 100000; i < 1000000; i++) {
		String text = ""+i;
		boolean match = compare(text,"b2512d38c5702ce5108585d3c730f657");
		if (match) {
			System.out.println("MATCH nih, Moe:"+text);
			return;
		}
	}
  }
 
  public static String getHash(String text)
  {
    try
    {
      MessageDigest m = MessageDigest.getInstance("MD5");
      m.update("BuildYourOwnRainbow-AppSecUSA:".getBytes(), 0, "BuildYourOwnRainbow-AppSecUSA:".length());
      m.update(text.getBytes(), 0, text.length());
      byte[] digest = m.digest();
      BigInteger bigInt = new BigInteger(1, digest);
      String hashtext = bigInt.toString(16);
 
      while (hashtext.length() < 32) {
        hashtext = "0" + hashtext;
      }
      return hashtext; 
	} catch (Exception ex) { 
		System.out.println("Failed to digest:" + ex.getMessage());
		return null;
	}
 
  }
 
  public static boolean compare(String text, String hash) 
  {
    return getHash(text).equals(hash);
  }
}

Setelah dicompile dan dijalankan kita berhasil mendapatkan PIN 3 user tersebut dalam waktu yang sangat singkat hanya 1-3 menit untuk mendapatkan pin tiap user. PIN Larry adalah 894331. PIN Curly adalah 275446. PIN Moe adalah 495823.

Moe’s Flag

Dengan mengetahui PIN dari 3 user tersebut, saya mencoba login. Dari ketiga user tersebut hanya Moe yang mengandung Flag. Berikut tampilan ketika Moe login.

Ups, ternyata kita mendapatkan pesan:

“There is an encrypted flag stored for this user! I am able to decrypt it using your information but, unfortunatly, I cannot share it with you as the displayFlay variable is set to false. That’s about all I can tell you. Good Luck”

Ternyata kita tidak bisa langsung mendapatkan flag, masih ada satu barrier lagi yang harus kita lewati. Mari kita korek lagi source codenya untuk mencari variable displayFlay.

Displaying Flag

Dalam class org.owasp.appsecusa.capturetheflag.loginchallenge.Login ada method displayFlag() yang fungsinya menampilkan flag.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void displayFlag(Boolean displayFlag) throws IOException, EncryptionException {
    BASE64Decoder de = new BASE64Decoder();
    AES128Encryptor instance = new AES128Encryptor();
    InputStream in = new ByteArrayInputStream(de.decodeBuffer(this.encodedData));
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    instance.decrypt(this.myWindow.pin.getText(), in, out);
    ByteArrayInputStream flagData = new ByteArrayInputStream(out.toByteArray());
    BufferedImage image = ImageIO.read(flagData);
    ImageIcon icon = new ImageIcon(image, "Our precious flag.");
    if (displayFlag.booleanValue() == true)
      this.myWindow.loginResponseLabel.setIcon(icon);
    else
      this.myWindow.response_label.setText("There is an encrypted flag stored for this user!\nI am able to decrypt it using your information\nbut, unfortunatly, I cannot share it with you as the\ndisplayFlay variable is set to false.\nThat's about all I can tell you. Good Luck!");
  }

Dalam method di atas terlihat bahwa flag berupa image dienkrip dengan AES 128 bit dengan PIN sebagai kuncinya. Masalahnya ada pada baris ke-10, bila method displayFlag dipanggil dengan parameter boolean false, maka akan flag tidak akan ditampilkan.

displayFlag() ini dipanggil dalam actionPerformed() masih di class yang sama. Berikut adalah potongan kode dalam actionPerformed() yang memanggil displayFlag().

1
2
3
4
5
          if (this.dataTest.booleanValue() == true)
            displayFlag(Boolean.valueOf(false));
          else
            this.myWindow.response_label.setText("There are no encrypted flags stored for this user.");
        }

Potongan kode di atas menunjukkan bahwa displayFlag() dipanggil dengan parameter false, akibatnya flag tidak akan muncul. Parameter false ini sudah dibuat static hardcoded dalam source codenya, jadi dalam kondisi apapun akan tetap false. Karena dibuat static dan hardcoded, tidak ada cara lain untuk membuatnya menjadi true tanpa mengubah program.

Capturing the Flag

Kita bisa saja mengubah source code class tersebut dan mengubah “displayFlag(Boolean.valueOf(false))” menjadi “displayFlag(Boolean.valueOf(true))” lalu meng-compile dan menjalankan program tersebut. Tapi saya memilih untuk mengubahnya menjadi program kecil di console (bukan Applet), hanya untuk menyimpan flag ke dalam file PNG.

Berikut adalah potongan kode untuk men-dekrip dan menyimpan flag ke dalam file flag.png. Kode tersebut diambil dari kode aslinya dengan sedikit modifikasi unutuk menyimpan flag ke dalam file.

Bila anda ingin mencoba sendiri, source code lengkap untuk mendapatkan flag bisa didownload di: Capture.zip, anda hanya perlu melakukan ‘javac ParseXML.java’ kemudian ‘java ParseXML’ untuk mendapatkan flag.png.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class ParseXML
{
 
	public static LoginUsers parseXML() throws Exception
	{
		String resourceName = "Data.xml";
		Reader reader = new BufferedReader(new InputStreamReader(ParseXML.class.getClassLoader().getResourceAsStream(resourceName)));
		JAXBContext jc = JAXBContext.newInstance(new Class[] { LoginUsers.class });
		Unmarshaller um = jc.createUnmarshaller();
		return (LoginUsers)um.unmarshal(reader);
	}
 
	private static void displayFlag(String encodedData) throws Exception {
		AES128Encryptor instance = new AES128Encryptor();
		InputStream in = new ByteArrayInputStream(decode(encodedData));
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		instance.decrypt("495823", in, out);
		ByteArrayInputStream flagData = new ByteArrayInputStream(out.toByteArray());
		BufferedImage image = ImageIO.read(flagData);		
 
		String fname = "flag.png";
		File file = new File(fname);
		ImageIO.write(image,"png",file);				
		System.out.println("Decrypted and Saved to "+fname);
	}

Ketika file tersebut dijalankan akan membuat sebuah file bernama flag.png. Berikut adalah tampilan ketika class ini dijalankan dari command prompt.

Flag.png adalah QR barcode yang mengandung teks. Untuk membaca isi teks dari barcode tersebut saya memakai layanan barcode reader online.

Bendera berhasil kita rebut, yaitu teks: http://www.appsecusa.org/ctf.html. Sekarang tinggal submit jawabannya.

Written by Rizki Wicaksono

July 31st, 2011 at 1:54 pm

Posted in Web Security

Penerbangan “Ramadhan Air”

without comments

Tanggal 1 Agustus 2011 ini awal dimulainya ibadah puasa Ramadhan 1432 Hijriyah. Puasa tahun ini tidak genap 30 hari, tetapi hanya 29 hari (begitulah bulan Arab, kadang-kadang 30 hari kadang-kadang 29 hari).

Bulan puasa tahun ini di Bandung adalah saat musim kemarau, jadi bisa dibayangkan agak berat dibandingkan beberapa tahun lalu, tapi seberat-beratnya keadaan cuaca tidaklah halangan untuk menjalankan ibadah puasa. Inilah perintah Tuhan untuk menguji iman manusia, seberapa kuat dia mampu menahan godaan hawa nafsu.

Bulan puasa artinya bulan sehat karena puasa itu menyehatkan badan. Benar, selama puasa saya tidak pernah sakit, meskipun di luar bulan puasa saya juga jarang sakit. Alhamdulillah. Selama siang hari berpuasa organ pencernaan kita istirahat mencerna, padahal selama 11 bulan sebelumnya perut ini tidak henti mencerna makanan apa saja sepanjang hari. Banyak penyakit bersumber dari makanan dan dari organ pencernaan. Insya Allah selama bulan Ramadhan ini kita terhindar dari sakit.

Dikutip dari sebuah milis, inilah penerbangan Ramadhan 1432 Hijriyah:

Selamat datang dalam penerbangan RAMADHAN AIR, Dengan tujuan Bandara
International IDUL FITRI, dengan nomor penerbangan 1432 H.
Tidak lama lagi kita akan menempuh penerbangan yang memakan waktu 29 HARI
dan anda akan memasuki wilayah PUASA.

Mohon Tegakkan kursi IMAN serta sandaran TAQWA, Bila terjadi guncangan
dalam perjalanan segera pasang sabuk DZIKIR, TAHAJUD & SEDEKAH JARIAH.

Pilot anda : AL-ISLAM, bersama
co-pilot 1 : AL-QURANUL KARIM
co-pilot 2 : AL-HADIST,
ditemani pramugari : RAHMAH & MAGFIRAH TO JANNAH

Kami berharap dapat menerbangkan anda kembali menuju Negara JANNATUN NAIM.

TAQABALLAHU MINNA WA MINKUM, MOHON MA’AF LAHIR dan BATIN…


Written by rinaldimunir

July 31st, 2011 at 10:38 am

Posted in Uncategorized

Seharusnya Profesor yang Mengajar Mata Kuliah Dasar

without comments

Saya masih ingat dialog antara seorang alumni ITB ketika dia bertemu (alm) Prof. Sudjoko, Guru Besar FSRD ITB, pada suatu acara. Profesor menanyakan di mana alumni tersebut bekerja. Ketika dijawab bahwa dia menjadi dosen di sebuah Perguruan Tinggi, profesor kemudian bertanya mata kuliah apa yang diampunya di sana. Alumni tersebut menjawab dengan agak tersipu bahwa dia mengajar mata kuliah dasar, yaitu mata kuliah tingkat 1 atau 2 yang tidak banyak dosen mau mengajarnya. Oh, bagus itu, timpal Profesor, justru anda seharusnya bangga mengajar mata kuliah dasar, karena pada kuliah itulah fundasi dasar ilmu dibangun. Saya sendiri masih mengajar mata kuliah dasar di FSRD, lanjut Profesor.

Jawaban (alm) Prof. Sudjoko itu terus saya ingat-ingat. Tidak banyak Profesor di Perguruan Tinggi — termasuk d ITB — yang mau mengajar mata kuliah dasar (mata kuliah tingkat 1 dan 2). Kebanyakan mata kuliah dasar diisi oleh dosen-dosen muda atau dosen baru yang belum banyak pengalaman, sementara Profesor atau dosen senior dalam keilmuan mengajar mata kuliah pilihan (tingkat 4 atau 3). Menurut saya seharusnya tidak begitu, mata kuliah dasar sebaiknya diajar oleh Profesor atau dosen yang sudah punya jabatan akademik yang lebih tinggi (minimal Lektor Kepala). Mengapa demikian? Karena — mengutip jawaban Prof. Sudjoko tadi — pada mata kuliah dasarlah fundasi ilmu dibangun. Dan untuk membangun fundasi dasar itu seharusnya para guru besarlah yang “turun gunung” karena mereka telah memiliki kearifan dan filosofi ilmu. Jika dasar-dasar ilmu tidak diberikan oleh orang yang mumpuni, maka jangan heran jika mahasiswa tidak memiliki landasan yang kuat dalam ilmu pengetahun bidang studinya.

Secara keahlian (hard skill) mahasiswa zaman sekarang memang bagus, hebat-hebat malah, tetapi secara filosofis mereka lemah dalam dasar keilmuan. Mereka terlalu mementingkan hard skill dan agak mengabaikan penguasaan terhadap fundamental ilmu. Mahasiswa saya di Informatika ITB juga banyak yang begitu. Dari skill pemrograman mereka jago, hebat-hebat, program mereka bagus sekali, kreatifitas mereka luar biasa, mendewalah pokoknya. Namun bila diberikan pertanyaan yang menyangkut fundamental, jawaban mereka kurang memuaskan dan terkesan ngasal. Dalam sidang-sidang Tugas Akhir fenomena demikian juga muncul, kebanyakan mahasiswa kurang mampu menjawab konsep-konsep dasar yang terkait tugas akhir yang dibuatnya.

Mata kuliah dasar tidak banyak dosen senior yang mau mengajarnya. Saya memang tidak punya datanya, tetapi dari pengamatan setelah melihat nama-nama dosen yang mengajar mata kuliah tingkat 1 dan 2 di ITB, saya menduga demikian adanya. Mungkin karena mata kuliah dasar itu tidak terlalu menarik bagi para profesor atau dosen yang sudah mumpuni ilmunya, sehingga mata kuliah dasar diserahkan kepada dosen muda atau dosen baru. Mengajar mata kuliah tingat 4 atau kuliah pilihan mungkin dianggap lebih menantang bagi dosen senior (termasuk Profesor) karena mata kuliah tersebut sudah menyentuh aplikasi dunia nyata, teknologi terkini, keprofesian, dan juga terkait dengan riset dan proyek sang dosen.

Saya sendiri di Informatika ITB masih dan senang mengajar mata kuliah dasar pada tahun pertama di Informatika (tingkat II di ITB). Ibarat sebuah pohon, memberikan fundamental ilmu itu sama pentingnya dengan membangun ilmu itu sampai ke ujung rantung-rantingnya. Sebuah pohon kuat hanya jika akar-akarnya kuat. Mahasiswa kita akan memiliki keilmuan yang kuat jika diberikan dasar-dasar imu yang kuat pula.


Written by rinaldimunir

July 25th, 2011 at 2:50 pm

Posted in Pendidikan

“Korupsi Sedikit Tidak Apa-Apa, Asal Tidak Ketahuan”, Kata Jaksa Ini……

without comments

Pantesan saja negeri ini tambah bobrok jika orang yang menegakkan hukum ngomong seperti judul di atas. Gilaaaa… nih jaksa, katanya korupsi sedikit tak apa-apa asal jangan sampai ketahuan. Mudah-mudahan wartawannya yang salah kutip atau salah dengar. Tapi, kalau benar jaksa ngomong begitu, komentar saya: dia sakit jiwa.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Kajati: Korupsi Sedikit tak Apa-apa

TANJUNG REDEB, tribunkaltim.co.id – Kepala Kejaksaan Tinggi (Kajati) Kalimantan Timur Faried Harianto, SH mengatakan, perbuatan korupi yang terbilang tidak besar nilainya tidak perlu dipermasalahkan.

Namun, dia mengimbau agar pejabat pintar-pintar bermain dan jangan sampai ketahuan. Demikian diungkapkan Kajati saat melakukan pengarahan tentang “Upaya Pencegahan Korupsi” di hadapan pejabat di lingkungan Pemkab Berau, Selasa (19/7/2011).

“Pejabat harus pintar-pintar, jangan sampai ketahuan. Karena kalau ketahuan siapapun dihukum. Bukan membolehkan, tapi pintar-pintar. Penegak hukum harus bijak, korupsi dikit-dikit tidak apa-apa. Mark up-mark up dikit tidak masalah,” papar Faried bersama Bupati Berau Makmur HAPK di hadapan para pejabat Pemkab Kukar.

Faried juga mengatakan akan melakukan penanganan kasus yang niai korupsinya besar. Acara tersebut juga disaksikan Kepala Kejaksaan Negeri (Kajari) Kabupaten Berau dan jajarannya. Faried juga tida merinci berapa target kasus korupsi dalam tahun ini di Kaltimantan Timur.

“Di tipikor, jaksanya saja ongkosnya ratusan juta, sidangnya di Samarinda. Misalnya Jaksa bolak-balik ke Berau, memeriksa saksi-saksi dan lain-lain, padahal korupsinya Rp 20 juta, jadi negara rugi bukan untung. Makanya cari yang besar jangan yang kecil. Kalau yang kecil banyak mudharatnya daripada manfaatnya, itulah azas manfaat,” katanya.

Penulis : Feri Mei Efendi
Editor : Adhinata Kusuma
Sumber : Tribun Kaltim


Written by rinaldimunir

July 21st, 2011 at 3:16 pm

Posted in Indonesiaku

Asyiknya Bersepeda di dalam Kampus (“Bike@campus”)

without comments

Beberapa hari ini saya menikmati bersepeda di dalam kampus. Sepeda-sepeda tersebut tersedia secara gratis di dekat Aula Barat ITB. Siapapun yang ingin memakainya silakan saja — kalau lagi kosong — asalkan dipakai hanya di dalam kampus saja.

Sepeda-sepeda tersebut adalah sumbangan dari alumni ITB angkatan 1988 dalam rangka mendukung program Bike@Campus. Thank to ITB88.

ITB adalah kampus yang rindang dan nyaman. Banyak pepohonan yang membuat kampus ini asri dan hijau. Sayang ya kalau kampus dikotori dengan polusi udara kendaraan bermotor. Karena itu, gerakan bersepeda di dalam kampus (bike@campus) digalakkan beberapa tahun yang lalu. Sudah banyak mahasiswa yang memakai sepeda ke kampus. Bahkan ITB pun menyediakan infrastruktur seperti tempat parkir sepeda.

Para alumni pun menyumbangkan puluhan sepeda untuk warga civitas academica (baca tulisan saya yang terdaulu). Salah satunya adalah sumbangan dari alumni ITB 88 itu.

Sepeda sumbangan ITB 88 ini bagus-bagus dan enak mengayuhnya. Dulu juga pernah ada sumbangan dari alumni angkatan xx, tetapi mungkin karena kualitasnya kurang baik sehingga sekarang sepeda-sepeda tersebut sudah digudangkan karena banyak yang rusak.

Selama konferensi ICEEI 2011 kemarin, saya beberapa kali menggunakan sepeda gratis ini untuk bolak-balik dari LabTek V ke Aula Barat dan Aula Timur. Asyik euy bersepeda sambil keliling kampus menikmati udara segar dan pohon-pohon yang rindang.

Semoga saja sepeda-sepeda tersebut tetap awet dan tidak dicuri. Agak riskan juga menjaga keamanan sepeda ini, kalau saja ada pencuri yang melemparkan sepeda itu ke arah jalan Tamansari, hilang deh itu sepeda. Kawasan kampus ITB dekat Jalan Tamansari seperti foto saya di atas memang terkesan sepi. Mari kita jaga sepeda-sepeda itu ya.


Written by rinaldimunir

July 20th, 2011 at 8:22 am

Posted in Seputar ITB

Welcoming Aa Bagdja =)

without comments

Assalamuálaykum Aa,

Akhirnya jumpa darat dengan ibu, abah, dan mba nana =)

Alhamdulillah, berkat rahmat Allah sajalah kita bisa berjumpa di alam dunia ini dalam keadaan selamat sentosa.  Alhamdulillah ibu masih diberikan umur oleh-Nya, kesempatan untuk mengasuh anak-anak ibu, suatu karunia besar yang semoga ibu bisa pertanggungjawabkan.

Kita sudah menjadi team yang tangguh untuk menjalani persalinan.  Aa yang baik sudah mendengar permintaan ibu dan membantu ibu untuk kontraksi natural/alami, you really did a great job =) Kontraksi natural adalah sesuatu yang ibu harapkan agar dapat melakukan persalinan normal setelah mba nana dulu sectio.  Apalagi saat ini ibu akan melakukan persalinan di Belanda, yang ibu pikir lebih ‘maju’ secara profesionalisme kedokteran, dan di Belanda pun terkenal dengan tradisi melahirkan normal, sectio merupakan hal yang sangat dihindari.

Selengkapnya ada di sini =)

 

Written by ibu didin

July 20th, 2011 at 12:13 am

Bandung Lautan Durian

without comments

Berton-ton truk berisi durian dari Sumatera masuk kota Bandung hari-hari ini. Hampir di mana-mana di pinggir jalan kita temukan pedagang durian dengan mobil bak terbuka dikerubungi pembeli. Mereka biasanya berjualan mulai dari sore hingga malam hari, yaitu saat-saat pas makan durian.

Seperti pedagang durian yang saya temui di pinggir jalan Supratman ini. Kata pedagangnya durian yang dibawanya berasal dari Bengkulu. Harganya bervariasi, mulai dari 5000, 10000 hingga 20.000 rupiah per biji bergantung pada ukurannya. Selain durian Sumatera, banyak juga durian lokal dari Parung, Garut, dan Tasikmalaya ikut bersaing. Namun menurut saya nih tetap durian asal Sumatera yang maknyus.

Karena setiap hari melintasi pedagang durian ini kala pulang dari ITB, saya pun tertarik membeli buah durian yang harganya Rp20.000. Pedagang mencoba memilihkan durian yang bagus. Diambilnya sebuah durian, dibuka sedikit dan saya dipersialakn mencicipi buahnya. Jika deal, durian bisa dibawa pulang atau dimakan di pingir jalan itu, tetapi jika rasa buahnya hambar atau tidak enak, pedagang memilihkan yang lain lagi. Begitu seterusnya sampai pembeli menemukan durian yang enak.

Jika dipikir-pikir, dengan cara pembelian durian yang iteratif seperti itu apakah pedagang tidak rugi? Sebab, dari seluruh durian yang dibawanya, mungkin hanya 2/3 saja yang bagus, sisanya yang sebagai tester tidak terjual. Ah…. mungkin pedagang durian ini sudah berhitung-hitung untung dan ruginya, makanya buah durian tidak dijual dengan harga murah untuk mengimbangi kerugian dari buah tester yang tidak laku.

Kata teman saya, kalau memilih durian dari mobil bak terbuka itu harus hati-hati. Mungkin saja buah durian di dalam mobilnya sudah dicampur dengan durian lokal. Bagian atas durian Sumatera, bagian bawahnya durian asal Parung. Namanya juga pedagang, tidak semuanya jujur, sebagian ada juga yang nakal.


Written by rinaldimunir

July 16th, 2011 at 10:29 am

Posted in Seputar Bandung

My Favorite Tea

without comments

Written by Veriyanta Kusuma

July 14th, 2011 at 11:04 pm

Posted in Uncategorized

My Favorite Tea

without comments

Written by Veriyanta Kusuma

July 14th, 2011 at 11:04 pm

Posted in Uncategorized

My Favorite Tea

without comments


Written by Veriy

July 14th, 2011 at 11:04 pm

Posted in Uncategorized