Tunjukkan Kodemu!

Minggu lalu, tepatnya hari Rabu 11 Mei 2016, saya mengikuti peluncuran kompetisi “IBM Linux Challenge 2016” di Balai Kota Jakarta. Acara ini sebetulnya merupakan kelanjutan dari kompetisi yang pernah dilakukan tahun lalu. Jadi, ini yang kedua.

Intinya ini adalah kompetisi pembuatan software yang berbasis open source. Adapun fokus dari aplikasinya adalah hal-hal yang terkait dengan smart city dan finansial daerah. Untuk yang smart city, ada banyak aplikasi yang bisa dikembangkan. Aplikasi yang bagus (pemenangnya) akan diberi kesempatan ditampilkan / digunakan di Jakarta Smart City. Sementara aplikasi finansial daerah digunakan untuk meningkatkan transaksi UMKM melalui e-commerce.

26929749021_91fcc41d86_o

Bagi saya, ini adalah ajang untuk mencari bibit-bibit dan kelompok pengembang software yang keren-keren di Indonesia. Untuk menunjukkan bahwa Indonesia (dan orang Indonesia ) juga jagoan di dunia IT. Ayo … tunjukkan bahwa kita bisa!

Cyber Intelligence Asia 2016 Conference

Selama dua hari (Selasa dan Rabu kemarin) saya mengikuti konferensi Cyber Intelligence Asia yang diselenggarakan di Bangkok, Thailand. Ini adalah konferensi tentang cyber security, keamanan dunia siber. Dalam konferensi ini dan juga yang sebelumnya, saya diminta untuk menjadi chair yang memimpin acara.

12719128_10153461735416526_6661691705388106185_o

Yang menarik dari konferensi ini adalah dia menjadi ajang untuk bertukar informasi mengenai security di berbagai bidang di regional ini. Berikut ini adalah daftar yang dibicarakan.

  • Thailand: Ada dua pembicara. Yang pertama dari Nectec, bercerita tentang issues security terakhir di Thailand dan bagaimana training di bidang security. Pembicara kedua bercerita dari sudut pandang pemerintah, yaitu adanya layanan dari sebuah organisasi pemerintah untuk memberikan layanan IT untuk seluruh instansi pemerintah.
  • Filipina: Ada dua pembicara; dari Kepolisian dan dari Militer. Diceritakan tentang kasus cyber yang terakhir, yaitu tentang modus transfer fiktif dari sebuah bank di Bangladesh ke bank di Filipina dalam jumlah yang cukup besar (lebih dari US$ 80 juta). Kejahatan dilakukan dari cabang bank Bangladesh tersebut di Manhattan (US). Pembicara kedua bercerita tentang cyberwar.
  • Malaysia: Ada satu pembicara dari Cyber Security Malaysia. Topik yang disampaikan adalah  inisiatif-inisiatif yang sudah dilakukan di Malaysia. Mereka punya program yang sudah terstruktur.
  • Indonesia: Ada dua pembicara. Pertama diceritakan tentang situasi di Indonesia dan munculnya inisiatif untuk membuat asosiasi digital forensik. Kemudian saya bercerita tentang bagaimana adopsi ICT di Indonesia dan beberapa kasus terakhir. Saya juga menceritakan bagaimana situsasi di dunia media sosial (banyaknya hoax, perang berita palsu, dan lain-lain).
  • Taiwan: Bercerita tentang kondisi di Taiwan (TWCERT/CC)
  • Jepang: Satu pembicara yang bercerita tentang bagaimana mereka menangani security di lingkungan akademik. Dunia akademik memiliki situasi yang khas padahal jaringannya termasuk cepat dan banyak orang yang terlibat di perguruan tinggi dari berbagai bidang (yang tidak paham tentang cyber security).
  • China: Bercerita tentang bagaimana mereka menangani kasus-kasus di China dari kacamata CERTCN/CC. China menduduki ranking pertama dalam hal attack dan kejahatan-kejahatan siber lainnya.
  • Abu Dhabi: Bercerita tentang situasi security di perusahaan di sana serta penjelasn tentang tools Application Security yang dikembangkan olehnya.
  • Interpol: Bercerita tentang fasilitasnya di Singapura.
  • Selain hal-hal di atas, ada juga presentasi dari vendor; Arbor Networks (menceritakan tentang kasus Neverquest, malware yang mengancam bank melalui Man-In-The-Browser attack dan bisa dikembangkan ke dunia lain), Akamai (bagaimana mereka menangani masalah security sebagai CDN), Black Ridge Technology (tentang pendeteksi identitas dari melihat paket yang pertama), Custodio (tentang keamanan di dunia penerbangan), dan Parasoft (tools software security).

Singkatnya, saya banyak belajar dan membuat teman-teman baru di konferensi ini.

P_20160323_154200 CIA 0001

Berpotret di akhir konferensi.

Buku (Catatan) Teknis

Dalam keseharian  ada banyak hal yang harus saya lakukan, mulai dari menjadi administrator sistem sampai ke programmer. Ditambah lagi, saya sebagai pengguna. Ada beberapa banyak hal yang harus saya kuasai.

Selain membaca manual, saat ini banyak tempat di internet untuk mencari jawaban. Bahkan membuka situs “stackoverflow” sering dianggap sebagai cara standar untuk mencari jawabab, bukan membaca manual. ha ha ha.

Permasalahan saya adalah saya mudah lupa. Jadi, misalnya saya sudah bisa ngoprek database MongoDB kemudian beberapa waktu kemudian saya lupa apa yang saya lakukan. Hanya sekedar untuk membuka database saja saya sudah lupa. Untuk mencari tahu, bisa cari di internet lagi, tetapi ini butuh waktu dan internet yang bagus.

Nampaknya saya harus membuat buku catatan sendiri. Catatan sendiri ini bagusnya juga dibuat tersedia untuk orang lain agak dapat dimanfaatkan juga. Dengan kata lain, saya harus membuat buku. Nah ini dia masalahnya. Saya kebanyakan mikir untuk membuatnya. Misalnya, saat ini saya sedang mencari LaTeX styles yang pas untuk buku saya. Ini lagi baca-baca tanya jawab di internet (tex.stackexchange.com – ha ha ha). Soalnya kalau bukunya jelek juga nggak menarik untuk dibaca diri sendiri.

Sekarang lagi baca manual dari “memoir style”. Mau nulis mesti baca manual dulu. Kelamaan ya?

Jreng ah!

Mengajari Untuk Menjadi Dinosaurus

Minggu lalu saya mengajari orang-orang di tempat saya tentang pemrograman bahasa BASIC. Iya, bahasa BASIC. Ini bahasa pemrograman yang saya pelajari jaman tahun 1980-an dulu. hi hi hi. Sekarang bahasa BASIC ini sudah tidak ada yang mengajarkan. Apa lagi ada banyak orang yang berpendapat bahwa “GOTO” itu sangat berbahaya. (GOTO is considered harmful.) Padahal bahasa BASIC itu memiliki GOTO dan sangat lazim digunakan. hi hi hi.

DSC_5216 BR BASIC 1000 bw

Minggu ini saya berencana mengajari penggunakan editor “vi“. Ini juga editor teks yang cukup kuno. Saya masih menggunakan editor ini di berbagai platform; Linux, Windows, Mac OS. Kemana-mana saya masih menggunakan vi. Enaknya adalah di setiap platform pasti ada vi. Vi juga adalah editor yang sangat powerful. Regular expression di dalam vi sangat bermanfaat ketika saya melakukan pemrograman. (Saya lagi mencari vi reference card yang bagus.) Apakah mengajari cara pemrograman dengan teknik-teknik lama ini bermanfaat?

IMG_6825 dinosaurus 1000Apakah mengajari menjadi dinosaurus itu jelek? Dinosaurus masih menarik lho. Ini buktinya. Dinosaurus sisa dari Pasar Seni ITB 2014 kemarin masih tetap menjadi tontonan yang menarik di kampus ITB lho. Banyak orang yang potret-potretan dan selfie di depan Dinosaurus ini.

Mari menjadi Dinosaurus …

Perlukah Software Diproteksi

Salah seorang mahasiswa bimbingan saya baru menyelesaikan tugas akhirnya. Topiknya adalah seputar proteksi software dengan memperhatikan perangkat keras yang digunakan oleh software tersebut. Dia membuat program yang mengambil data dari komputer (misalnya, identitas CPU, MAC address dari ethernet card yang digunakan, dan sejenisnya) kemudian mengirimkan data tersebut ke pembuat software (aplikasi) untuk dibuatkan license key. Kunci ini kemudian diberikan bersama dengan software. Sistemnya agak sedikit rumit.

Pertanyaannya adalah perlukah kita melakukan hal ini semua? Kenapa kok jadi ribet begini? Alasan utamanya adalah agar pengguna menggunakan software yang 100% original. Itu saja bukan? Kalau semua pengguna jujur dan baik-baik, mungkin penelitian ini tidak perlu dilakukan.

Akibat dari proteksi semacam ini sebetulnya ada kerepotan tambahan bagi pengguna atau orang yang mengurusi software di perusahaan (misalnya aplikasi tersebut digunakan secara luas di perusahaan). Sebagai contoh, jika ethernet card dari komputer yang digunakan rusak dan digantikan dengan card yang lain maka MAC address-nya berbeda. Akibatnya software tidak dapat digunakan di komputer tersebut karena sistem proteksi lisensinya akan mengatakan bahwa software digunakan di komputer lain yang tidak terlisensi. Pengguna harus menjalankan program tertentu (untuk mendeteksi hardware yang baru), kemudian mengirimkan hasilnya ke pembuat software untuk dibuatkan lisensi yang baru. Repot jika proses ini tidak berjalan secara cepat. Misalnya proses ini berjalan beberapa hari, maka software tidak dapat digunakan selama itu.

Yang paling elegan adalah kalau pengguna baik-baik dan mau membeli software 100% original sehingga kita semua tidak perlu direpotkan dengan hal seperti ini. Mau kah kita? Mestinya mau ya. Sementara itu nampaknya penelitian proteksi software masih harus terus berlangsung.



Anak-anak inovator IT

Hari Jum’at kemarin saya diminta untuk menjadi nara sumber di acara “Kuliah Umum” terkait dengan IT yang diberikan oleh lima (5) anak-anak di Aula Timur ITB. Kelima anak-anak ini terbagi menjadi tiga group; (1) pengembang anti virus Artav (Arrival Dwi Santosa dan Taufik Aditya Utama), (2) pengembang jejaring sosial salingsapa.com (Muhammad Yahya Harlan), dan (3) pengembang aplikasi game di handphone (Fahma Waluya Rosmansyah) yang memenangkan salah satu kategori di APICTA – ajang lomba software di Indonesia.

Acara ini ternyata disiarkan langsung secara live oleh TV One dan juga dihadiri oleh banyak orang; baik dari kampus ITB maupun “supporter” dari masing-masing anak-anak 🙂  yaitu teman-teman sekolah mereka. Pada mulanya saya menolak untuk ikutan karena saya ada rapat sore itu dan juga sebenarnya saya tidak terlalu suka masuk tv 🙂  Tetapi karena yang mintanya pak Yusep, salah satu dosen ITB, maka saya setujui dengan catatan mungkin saya tidak bisa ikut sampai selesai.

Memasuki Aula Timur ITB, sudah penuh sesak dengan penonton dan setup TV One. Audience sedang diberikan petunjuk oleh salah seorang (apa namanya ya? director?) kru TV One tentang cara tepuk tangan dan seterusnya.

Saya langsung bertemu dengan nara sumber yang lainnya yang mulai berdatangan. Setelah itu kami diminta untuk duduk di barisan paling depan.

Tujuan saya hadir di acara ini adalah untuk menilai kemampuan anak-anak ini, tetapi dengan catatan hal ini tidak terlihat seperti menguji. Hi hi hi. Supaya mereka tidak tegang kayak ujian. Kasihan kan. Kita tidak ingin dibohongi oleh kasus-kasus sebelumnya, dimana orang / tim digembar-gemborkan menghasilkan inovasi / teknologi yang hebat-hebat ternyata itu hanya bohong belaka. Wah, bagaimana ya bisa melakukan hal tersebut dalam waktu yang singkat? Ya saya lihat-lihat dulu lah.

Setelah duduk di barisan depan, acara dimulai. Acaranya menurut saya bagus dan menarik. Acara dimulai dari Arrival dan Taufik yang mengembangkan anti virus Artav. Mereka memberikan presentasi sekitar 10 menit, kemudian ada diskusi. Ruby Alamsyah maju ke depan dan memberikan flashdisk yang berisi virus untuk dicek apa benar anti virus Artav bisa mendeteksi. Dan ternyata memang bisa mendeteksi virus Yuyun 🙂

Saya melihat jam terus dan setelah jam menunjukkan jam 4 saya bergegas untuk keluar karena saya harus rapat. Saya memang belum sempat bertanya. Yay! Saya pamitan dengan nara sumber yang lain dan mulai menuju sisi kiri. Ternyata di sana saya disetop oleh tim TV One. Saya diminta tunggu sebentar dan langsung mau ditanya. Oke deh. Saya tunggu sebentar. Kemudian memang saya diminta untuk memberi komentar.

Poin dari apa yang ingin saya sampaikan ada tiga (3):

  1. Sebagai seorang yang gemar teknologi informasi – katakanlah nerd 🙂 – tentu saja senang jika ketemu dengan nerd yang lain. Tidak ada batas umur untuk saling berkawan. Jadi, selamat datang adik-adik.
  2. Adik-adik ini kita harapkan untuk berkembang secara natural sesuai dengan kemampuan mereka. Jangan dikarbit atau diblow-up secara berlebihan. Biarkan mereka berkembang. Mereka tentu saja nantinya perlu dibekali dengan ilmu sehingga apa yang mereka kembangkan bisa lebih bagus lagi (kualitas, scalability, desain yang lebih elegan, dan lain-lain).
  3. Kita-kita yang kebetulan sudah lebih dahulu menggeluti teknologi informasi (bukan berarti lebih hebat lho, hanya lebih dahulu saja) siap membantu, menjadi mentor dalam bidang teknis, bisnis, dan lain-lain. Yang saya maksud dengan kita-kita di sini adalah para dosen dan juga komunitas IT.

Begitu. Setelah mengungkapkan itu, saya kabur 🙂  Di depan pintu Aula Timur dicegat beberapa wartawan. Diskusi sebentar dan terus kabur lagi. (Memang akhirnya meeting kami dimulai telat, tapi tidak mengapa.)

Jadi … selamat datang adik-adik. Mari kita belajar, bermain, dan berkarya bersama. Yuk mari …

Saran Buku PHP

Minta saran kepada rekan-rekan tentang buku belajar PHP yang cukup bagus untuk orang yang sudah bisa programming C. Tidak harus berbahasa Indonesia (bahkan saya cenderung condong menggunakan bahasa Inggris). Saya mau ngajari anak saya programming PHP.

Saya sendiri sudah lupa dulu belajar PHP pakai apa. Oh ya ingat, pakai manualnya PHP karena dulu belum ada buku PHP. he he he.

Gembira Ria Coding: Fungsi Hash

Fungsi hash digunakan untuk membuat rangkuman (summary) dari rentetan data (pesan). Rangkuman ini bisa hanya berupa sebuah bit (biasanya disebut parity check) sampai rentetan bit (misalnya MD5, yang panjangnya 128 bit).

Fungsi hash dikategorikan sebagai fungsi satu arah karena diberikan keluaran sebuah fungsi hash kita tidak bisa menemukan data atau pesan aslinya. Jika Anda saya berikan rangkuman satu bit, “1”, apa pesan aslinya? 🙂

Ada banyak implementasi fungsi hash. Iseng-iseng saya buat sebuah fungsi hash sederhana yang pada prinsipnya dia menjumlahkan nilai kode ASCII dari data yang diberikan ke dia.

#! /usr/bin/perl
# fungsi hash sederhana - menambahkan nilai ASCII dari input
# BR - nov 2009

$modulus=65536; # modulus pembagi total


print "Masukkan sebuah pesan sederhana dan tekan return\n";
print "Pesan: ";
$pesan = <STDIN>;
chop($pesan); # hapus carriage return di akhir pesan
print $pesan . " panjang: " . length($pesan) . "\n";

$total=0;
for ($i=0; $i < length($pesan) ; $i++) {
   print "$i";
   $karakter = substr($pesan,$i,1);
   print " $karakter";
   $ascii = ord($karakter);
   print " $ascii";
   $total = $total + $ascii;
   $total = $total % $modulus;
   print " $total";
   print "\n";
}

Berikut ini contoh keluarannya.


macbook$ perl perl-hash-tambah.pl
Masukkan sebuah pesan sederhana dan tekan return
Pesan: BUDI
BUDI panjang: 4
0 B 66 66
1 U 85 151
2 D 68 219
3 I 73 292

Contoh di atas saya memasukkan empat karakter; “B”, “U”, “D”, “I”. Masing-masing dicari nilai ASCII-nya kemudian dijumlahkan. Hasilnya adalah 292.


Pesan: BUDI.
BUDI. panjang: 5
0 B 66 66
1 U 85 151
2 D 68 219
3 I 73 292
4 . 46 338

Kalau kita coba dengan masukan lain, yaitu menambahkan titik (.) di belakangnya, maka hasil hashnya adalah 338. Berbeda kan?

Coba sebutkan kelemahan dari program hash ini.

Link terkait: versi bahasa C ada di sini.

Gembira Ria Koding: Random number generator

Salah satu hal yang lazim dibutuhkan dalam kriptografi (dan aplikasi lain) adalah adanya mekanisme untuk menghasilkan bilangan random. Setelah uplek sana sini, saya buat koding sendiri seperti contoh di bawah ini.

Kode di bawah ini sebetulnya bukan penghasil bilangan random, tetapi masih baru menghasilkan seed yang akan digunakan oleh fungsi random.

(Masih sulit menampilkan source code di wordpress. Tanda < misalnya harus saya tuliskan dengan &lt; Kemudian indentation dari kode juga menjadi hancur. Bagaimana menampilkan kode yang bagus di wordpress.com ini ya?)

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *randev;
unsigned seed;

srandomdev();
randev = fopen("/dev/random", "r");
if (randev == NULL) {
printf("gak bisa open /dev/random\n");
exit(-1);
}
fread(&seed, 2 , 2, randev);
fclose(randev);
printf("seed = %u\n", seed);
exit(0);
}

Sedikit pembahasan mengenai kode di atas.

Jika kita lihat berbagai fungsi penghasil bilangan random (misalnya random() atau gunakan “man -k random” untuk melihat apa saja yang tersedia di sistem Anda), fungsi tersebut membutuhkan sebuah nilai awal yang disebut seed. Seed yang sama akan menghasilkan bilangan “random” yang sama. Jadi, seed ini diharapkan berbeda setiap kita menjalankan program.

Salah satu cara untuk memperoleh seed adalah dengan menggunakan berkas “/dev/random“. Untungnya berkas ini ada di Mac OS X yang saya gunakan untuk memprogram. (Di Linux juga ada. Saya tidak tahu ekivalennya apa di Windows.)

Baca sana sini. Kok tidak ada contoh yang jelas. Maka langsung saya saya buatkan kode di atas. Jalan kodenya, meskipun saya masih kurang sreg dengan penggunaan fread. (Mungkin masih kurang tepat angkanya karena saya koding tanpa referensi. hi hi hi. Unsigned itu berapa bytes di C? Kemudian saya juga baca 2 buah. Mestinya hanya 1 saja kan? Tapi kalau satu kok angkanya tidak terlalu bagus.) Yah, lumayanlah sekedar untuk contoh bagi Anda yang membutuhkan kode ini untuk program Anda.

Setelah dapat seed ini, baru kita panggil fungsi random() atau yang ekivalen dengan itu. Nanti kalau saya sudah buatkan, saya akan tampilkan di sini juga.

[Mestinya saya ngarang buku tentang trik pemrograman saja ya? 🙂 ]