KidBright32 dan KBX

Kalau United Kingdom punya Micro bit, maka Thailand punya KidBright32. KidBright32 dikembangkan oleh NECTEC (National Electronics and Computer Technology Center) organisasi pemerintah Thailand dan diproduksi oleh perusahaan lokal Thailand Gravitech). Usaha ini didukung perusahaan lain, misalnya perusahaan Maker Asia membuat extension berupa case dan peripheral tambahan yang diberi nama KBX (KidBright32 Extension).

Di posting sebelumnya saya sudah membahas Micro bit, di sini saya membahas KidBright32 dan ditutup dengan apakah mungkin Indonesia membuat board serupa.

KidBright32

KidBright32 menggunakan ESP32 sebagai prosessornya. ESP32 ini merupakan chip dari China yang pernah saya bahas di posting lain. Sedangkan Microbit memakai chip NRF52 dari Nordic Semiconductor, perusahaan Norwegia. NRF52 hanya memiliki fitur Bluetooth dan komunikasi radio proprietary, sedangkan ESP32 memiliki fitur Bluetooth dan WIFI. Harga KidBright32 sekitar 600 baht (19 USD), tidak beda dengan harga Micro Bit .

Seperti Micro bit, KidBright32 juga memiliki IDE Visual drag drop yang bernama KidBright IDE yang bisa dipakai di Linux/Windows/OSX. Berikut ini video yang dirilis oleh NECTEC untuk memperkenalkan KidBright (video bahasa Thai dengan subtitle bahasa Inggris).

Sebagian besar fitur KidBright32 ini sama dan bahkan lebih dari Micro Bit.. Memori lebih besar, bisa WIFI (bagus untuk belajar IOT), dan LED yang dipakai lebih besar (dua buah matris 8×8, jadi ada 128 led, sedangkan micro bit hanya 25).

Micro bit sudah cukup dikenal dan ada banyak aksesori tambahan, tapi KidBright32 juga tidak kalah. Berbagai sensor dan hardware tambahan sudah tersedia dan bisa dibeli di : https://www.kidbright.io/shop. Beberapa contoh sensor yang tersedia: proximity (kedekatan), detak jantung dan barometer.

KBX dan kbide

Sifat KidBright32 ini terbuka dan bisa dikembangkan lebih lanjut. Salah satu hasil pengembangannya adalah board KBX. Board ini memiliki case, LCD, Micro SD, USB host (supaya bisa memakai keyboard atau gamepad USB), dan juga tombol ekstra. Saya baru mengenal board ini ketika menemani Jonathan untuk ikut pelatihan gratis pemrograman hardware dasar di Chiang Mai Maker Club.

Selain membuat KBX, Maker Asia juga membuat kbide, versi lebih canggih dari KidBright IDE. Software kbide ini open source dan bisa berjalan di Windows, Mac, maupun Linux.

IDE-nya bukan sekedar meniru persis editor Micro Bit, banyak fungsi tambahan yang menurut saya lebih menarik. Berbagai fungsi tingkat lanjut di sediakan di mode visual, seperti:

  • Melakukan koneksi ke WIFI
  • Melakukan time synchronization dengan NTP
  • Menampilkan gambar (bahkan dari IDE-nya kita bisa mengakses kamera USB/kamera laptop, supaya kita bisa memfoto sesuatu untuk ditampilkan di device)
  • Mengucapkan kata-kata (terbatas, hanya yang ada di dalam kamus)
  • Memainkan nada (dengan editor yang bagus)
  • Memainkan MP3
  • Melakukan koneksi dengan protokol MQTT

Sebagai produk Thailand, salah satu kelebihannya adalah support terhadap bahasa Thai. Contoh paling sederhana adalah pada fungsi teks yang bisa menampilkan teks bahasa Thai dan disertakan juga berbagai font Thai.

Dengan hardware ekstra, harga KBX tentunya lebih mahal dari harga KidBright biasa, tepatnya harganya sekitar 60 USD (1990 THB). Dengan adanya koneksi Wifi dan sinkronisasi waktu dari NTP serta fitur buzzer, Jonathan bisa dengan cepat membuat Jam meja dengan alarm. Di malam hari jamnya diletakkan di samping tempat tidurnya.

Dari hasil mencoba-coba hardware dan softwarenya, saya merasa cukup kagum. Ini proyek yang serius, bukan sekedar meniru BBC Micro bit. Design hardwarenya bagus dan softwarenya juga dibuat dengan serius. Softwarenya masih terus dikembangkan (ini bisa dilihat di aktivitas github Maker Asia).

Bisakah Indonesia membuat hal serupa?

Membuat development board yang ditujukan untuk anak-anak butuh diperlukan pengembangan hardware dan software. Kenapa kita tidak mengimpor saja benda ini? ada beberapa alasan kenapa kita perlu membuat sendiri:

  • Harga barang jadi biasanya lebih mahal, apalagi jika ditambah dengan berbagai aksesorinya
  • Kita tetap perlu membuat dokumentasi dan manual dalam bahasa Indonesia dan juga menerjemahkan softwarenya dalam bahasa Indonesia (di Thailand masalah bahasa sangat penting, bahkan semua film didub dalam bahasa Thai)
  • Kita bisa menyesuaikan dengan kondisi Indonesia, misalnya menambahkan sensor yang berguna untuk otomasi pertanian atau mungkin memakai panel surya karena sinar matahari melimpah di Indonesia

Board populer pertama yang ditujukan untuk belajar pemrograman hardware adalah Arduino. Dulu Arduino bisa dirakit sendiri karena komponennya sedikit dan jenis komponennya through hole. Dengan teknologi through hole, komponen dimasukkan menembus lubang PCB dan disolder di sisi lain.

Memakai komponen dengan teknologi through-hole

Tapi sekarang jumlah komponen through hole semakin sedikit, dan kebanyakan komponen sekarang memakai teknologi surface mounted (SMT). Dalam teknologi SMT, komponen elektronik diletakkan di atas PCB dan diberi pasta solder, lalu dipanaskan. Untuk memanaskan ini bisa memakai oven (oven kue juga bisa, tapi sebaiknya khusus, jangan dipakai lagi untuk masak kue karena walau sudah bebas timbal, masih ada kemungkinan ada uap berbahaya) atau memakai hot air soldering station. Pada produksi masal, biasanya ini dilakukan secara otomatis dengan mesin.

Contoh board dengan teknologi SMT, chip hanya “menempel” di atas PCB

Karena sulitnya merakit board modern, sebaiknya ini dilakukan oleh perusahaan khusus, sehingga anak-anak bisa langsung memakainya. Harga berbagai komponen (chip, resistor, dsb) sudah relatif murah, tapi kebanyakan masih perlu impor. Indonesia sudah mampu membuat PCB sendiri dan merakit komponennya.

Alternatif lainnya adalah kita menyusun berbagai modul, jadi tidak menyusun chip dan berbagai komponen pasif. Saat ini sudah ada banyak modul kecil dengan berbagai fungsionalitas (sensor udara, transmitter dan receiver infrared, LED, dsb) yang harganya murah (beberapa USD, bahkan ada yang hanya beberapa sen). Modul modul ini bisa disolder ke sebuah board besar.

Software untuk memprogram boardnya bisa dibuat dengan relatif mudah dengan menggunakan berbagai library yang sudah ada, atau melakukan forking terhadap IDE lain yang sifatnya open source. Bagian sulitnya adalah membuat hardware dan software yang bisa berjalan mulus. Hal lain yang penting adalah dokumentasinya.

Jadi sebenarnya bisa saja Indonesia membuat board serupa dengan BBC atau KidBright. Kesulitan pengembangan hardware dan softwarenya tidak terlalu tinggi. Pertanyaannya adalah: apakah kita memang sudah memfokuskan ke sana atau belum.

BBC micro:bit

BBC Micro Bit (kadang ditulis “micro:bit”) adalah hardware open source yang dibuat oleh BBC (British Broadcasting Corporation) untuk mengajarkan pelajaran komputer di United Kingdom. Board ini sudah dirilis tahun 2016 dan sudah saya beli tidak lama setelah diluncurkan. Baru sekarangsaya tulis karena Jonathan baru mulai tertarik belajar ini.

Case kittenbot dan micro:bit

Micro bit ini ditargetkan untuk umur 11 tahun ke atas (walau lebih muda juga bisa), jadi sebenarnya memang baru cocok untuk usia Jonathan yang sekarang 9 tahun. Micro bit ini ukurannya sekitar setengah kartu kredit, ada dua tombol (plus satu tombol reset), konektor micro USB, dan 25 LED. Ada accelerometer (bisa jadi input dengan gerakan) dan juga magnetometer (bisa menjadi kompas), ada juga sensor temperatur (tapi kurang akurat karena built in).

img
Sumber gambar: https://tech.microbit.org/hardware/

Micro bit juga bisa dihubungkan ke handphone dengan Bluetooth Low Energy (BLE). Dua micro bit juga bisa berkomunikasi dengan radio (yang ini protokolnya proprietary, berdasarkan Gazell dari Nordic). Micro bit bisa dihubungkan ke banyak hardware, tapi sebelumnya saya jelaskan dulu tentang sisi softwarenya.

Micro bit dalam case Kittenbot

Software dan pemrograman

Resminya Micro bit bisa diprogram dengan browser memakai editor blok atau menggunakan Micropython dengan mengunjungi https://microbit.org/code/ . Tapi benda ini juga bisa diprogram dengan C, C++, BASIC, ADA, Rust, Swift, Forth dan mungkin masih banyak lagi.

Editor blok resmi memiiliki simulator, sehingga kita bisa langsung mencoba bahkan tanpa perlu hardwarenya. Perhatikan gambar board micro bit di kiri, gambar tersebut interaktif, kita bisa menekan tombol A, tombol B, atau keduanya.

Editor block bisa menerjemahkan kode langsung ke JavaScript. Kita juga bisa menulis kode Javascript dan jika tidak terlalu kompleks akan bisa otomatis diterjemahkan jadi bentuk blok. Javascript yang terlalu rumit akan muncul sebagai blok teks. Berikut ini contoh terjemahan otomatis dari blok ke Javascript.

Memprogram dengan browser sangat mudah: tidak perlu instalasi apapun, cukup memakai browser Chrome terbaru (jadi perlu punya komputer/laptop, bisa Windows/Linux/Mac). Transfer program ke Micro bit juga langsung dari browser.

Khusus untuk Micro bit yang dibeli beberapa tahun lalu, firmwarenya perlu diupdate dulu agar bisa diprogram via web. Cara updatenya cukup mudah, cukup colok ke komputer dan micro bit akan terdeteksi sebagai USB disk, kita cukup drag drop firmware terbaru agar berikutnya Micro bit bisa diprogram via browser.

Browser tidak harus di PC, browser ponsel juga bisa dipakai. Untuk transfer kode dari ponsel ke Micro bit, disediakan juga companion app untuk iOS dan Android. Transfer kode dilakukan via bluetooth. Jika memakai PC, kabel USB juga merupakan sumber daya listrik bagi micro bit, jika memakai HP, kita butuh kabel USB atau batere.

Tanpa hardware tambahan

Tanpa hardware tambahan apapun, sudah ada beberapa program yang bisa kita buat dengan Micro bit, misalnya:

  • kompas
  • animasi LED
  • game sederhana (bisa memakai tombol dan atau accelerometer)

Jika kita memiliki dua Micro bit, keduanya bisa berkomunikasi dengan mudah, jadi bisa dibuat berbagai aplikasi misalnya:

  • Mengirimkan pesan (misalnya kode morse)
  • game multiplayer

Kurang ide? ada banyak contoh yang diberikan di website Micro bit

Hardware Tambahan

Micro bit bisa dihubungkan ke device lain dengan alligator clip, device sederhana misalnya: LED, tombol, sensor, dsb. Selain device sederhana, sudah ada beberapa kit yang dirancang agar gampang dihubungkan ke Micro bit, di antaranya:

  • Sensor cuaca
  • Mobil-mobilan
  • Robot

Jadi Micro bit berfungsi sebagai otak untuk benda-benda tersebut. Editor blok memiliki fitur Extensions, sehingga berbagai benda tersebut bisa diprogram tetap menggunakan editor blok yang resmi tanpa perlu instalasi software tambahan.

Benda yang sudah saya belikan untuk Jonathan adalah Ring bit car v2. Mobil ini cukup mudah disusun, walau agak susah membuat kedua rodanya supaya tepat lurus. Di bawah mobil ada 2 LED Neopixel yang bisa diprogram warnanya. Dengan menggunakan dua micro bit, mobilnya bisa dijadikan mobil remote control dengan satu micro bit lain sebagai controllernya. Kita juga bisa menempelkan spidol ke mobilnya supaya mobilnya bisa “menggambar”.

Perbandingan dengan board lain

Ketika membandingkan dengan board lain, kita harus memperhatikan tujuannya. Untuk tujuan mengajari anak-anak board ini sangat bagus. Untuk mengajari orang dewasa atau mahasiswa, board lain akan lebih bagus.

Harga Micro bit sekitar 250 ribu rupiah (sekitar 18 USD). Menurut saya ini tidak terlalu murah, tapi juga tidak terlalu mahal. Jika memikirkan alternatif lain, maka ada dua hal yang bisa dibandingkan:

  • Kemudahan development (termasuk juga ketersediaan library)
  • Kelengkapan hardware dan kitnya

Alternatif yang lebih murah biasanya perlu ditambah dengan banyak modul. Contoh: board Arduino UNO bisa didapat dengan sekitar 3.5 USD, ESP8266 harganya mulai 2.5 USD dan ESP32 mulai 4 USD. Tapi semua board tersebut belum ada accelerometer, magnetometer, output LED dan tombol.

Jika ingin berhemat, maka kita harus menghabiskan waktu untuk:

  • membeli modul (accelerometer + magnetometer + led) dan kabel, serta breadboard
  • menyambungkan modul
  • mencari library yang cocok untuk modul tersebut

Untuk anak-anak yang baru belajar, micro bit ini menurut saya sudah sangat bagus. Design hardware Micro bit ini open source, siapapun boleh membuat versinya sendiri. Jika ini cukup populer, maka ada kemungkinan akan ada clone yang lebih murah (seperti Arduino UNO yang banyak clone murahnya dari China).

Untuk Anda yang tidak punya PC/Laptop, mungkin Raspberry Pi lebih cocok karena sebenarnya itu merupakan komputer mini, jadi tidak butuh komputer kecuali saat instalasi. Tapi harganya Raspberry Pi lebih mahal, dan Anda perlu mempersiapkan keyboard, mouse, SD Card, dan juga layar monitor untuk dihubungkan ke Raspberry Pi.

Sebagai informasi, Raspberry juga punya versi murah yang namanya Raspberry Pi Zero (tanpa Wifi) dan Zero W (dengan Wifi). Teorinya ini harganya sangat murah (5 USD untuk Pi Zero, 10 USD untuk Pi Zero W), tapi kenyataannya ini sulit sekali dicari. Di banyak tempat hanya membolehkan kita membeli satu saja dengan harga 5 USD (jadi jika ditambah ongkos kirim, akhirnya jadi lebih mahal). Sedangkan di tempat lain, harganya dimarkup jadi sampai 20 USD.

Penutup

Micro bit ini menurut saya cukup menarik untuk mengajarkan pemrograman dasar. Dengan micro bit, programmer bisa melihat efek langsung di dunia nyata, bukan cuma di layar komputer. Harga Micro bit ini memang tidak terlalu murah, tapi alternatif lainnya juga harganya serupa atau lebih mahal.

Sebenarnya masih terbuka kesempatan membuat board yang lebih baik dan atau lebih murah. Minggu lalu saya sempat datang ke Chiang Mai Maker Club dan di sana ada pelatihan memakai board mereka, yang tidak lebih murah tapi lebih baik. Informasi mengenai board dari Thailand ini akan saya bahas di posting berikutnya.

Membongkar Ransomware

Rasanya tiap beberapa hari ada yang bertanya tentang bagaimana mengatasi ransomware tertentu di berbagai group, terutama di group reverse engineering. Jawaban saya untuk yang terkena ransomware tetap sama: buat backup, restore dari backup, atau jika beruntung mungkin sudah ada yang membuat dekriptornya.

Artikel ini untuk anda yang ingin membongkar ransomware dan ingin membuat dekriptor sendiri. Perlu saya peringatkan bahwa ini tidak mudah, dan seringkali mustahil membuat dekriptornya. Setelah membaca ini semoga Anda paham bahwa: meminta membuat dekriptor khusus untuk ransomware yang kena ke komputer Anda itu seperti minta uang semilyar dari orang di pinggir jalan.

Dalam tulisan ini saya akan menggunakan contoh soal dari Flare On 2019, sebuah ransomware bernama Mugatu. Karena Mugatu hanyalah soal CTF, ini sengaja dibuat agar hanya mengenkrip file yang sangat spesifik dan memiliki kelemahan dalam enkripsinya. Ini merupakan contoh yang cukup baik untuk dipelajari karena:

  • Malwarenya memakai teknik anti analisis (seperti malware yang sesungguhnya)
  • Malwarenya tidak berbahaya untuk dianalisis oleh pemula (tidak akan menginfeksi PC lain di jaringan)
  • Memiliki contoh enkripsi yang lemah

Silakan dibaca writeup mugatu dari pembuatanya:

https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/FlareOn6_Challenge10_Solution_Mugatu.pdf

Inti dari membuat dekriptor ransomware adalah:

  • melakukan reverse engineering malware
  • memahami enkripsi dan membuat dekriptor

Sebelum membahas jauh dan memberi harapan palsu. Saya ingin menekankan dulu: tidak semua ransomware bisa dibuat dekriptornya, dan andaikan bisa dibuat dekriptornya, reverse engineering butuh waktu lama.

Tidak semua ransomware bisa dibuat dekriptornya

Kenapa sebuah ransomware bisa tidak ada dekriptornya? apakah tidak ada ahli yang mampu membuat dekriptornya? Ini bukan masalah keahlian, tapi batasan teknis.

Kalau misalnya ketemu ponsel rusak seperti gambar di bawah ini, kemungkinan tidak akan bisa diperbaiki tukang reparasi. Kalaupun bisa, waktu yang dibutuhkan untuk memperbaiki sangat besar, dan nggak sebanding dengan harga ponselnya. Tentunya di kasus seperti ini Anda tidak akan bilang: wah tukang reparasinya nggak jagoan.

Sumber https://www.flickr.com/photos/glenbowman/3511874961

Contoh masalah teknis:

  • Ada ransomware yang entah salah coding atau sengaja merusak file dan tidak bisa dikembalikan lagi (menimpa isi file dengan random)
  • Ada ransomware yang cara enkripsinya tidak memiliki kelemahan. Silakan baca artikel saya mengenai unbreakable encryption.

Kalau Anda benar-benar malas membaca berbagai tulisan dan buku mengenai dasar enkripsi, minimal bacalah artikel saya mengenai unbreakable encryption. Tulisan tersebut sudah saya usahakan sangat sederhana dan harusnya bisa dimengerti oleh orang awam sekalipun, supaya tidak ngeyel bahwa “tiap enkripsi pasti bisa dibongkar”.

Intinya begini: meskipun sudah mendapatkan source code lengkap dan penjelasan lengkap tentang bagaimana ransomwarenya bekerja, tetap saja beberapa ransomware mustahil dibuat dekriptornya (kecuali kita tahu keynya).

Reverse Engineering butuh waktu lama

Jangan kira sebuah ransomware bisa dipahami dan dibuat dekriptornya dalam hitungan jam saja. Mungkin ada ransomware sederhana yang bisa dibongkar dalam hitungan jam, tapi kebanyakan akan butuh beberapa hari sampai beberapa minggu, dan butuh beberapa orang. Saya juga pernah menulis tentang mahalnya biaya reverse engineering.

Jika membongkar ransomware bisa sangat mudah dan selesai dalam 1-2 hari oleh orang yang kemampuannya baru belajar RE, maka perusahaan security dan antivirus akan rame-rame mempekerjaan banyak pemula, dan produknya akan jadi yang paling banyak dicari orang untuk mengembalikan data dari ransomware. Kenyataannya sekarang ini kebanyakan perusahaan antivirus dan security hanya bisa membuat dekriptor untuk beberapa ransomware saja, karena butuh waktu dan keahlian yang tinggi.

Prioritas perusahaan security biasanya adalah pada malware yang populer (menyebar luas), dan biasanya mereka tidak akan menghabiskan banyak waktu untuk ransomware yang kurang populer atau menyebar di wilayah tertentu saja. Jadi jika Anda beruntung, mungkin Anda bisa mendapatkan dekriptor gratis, tapi kemungkinannya makin sedikit dengan banyaknya jumlah ransomware.

Fakta bahwa reverse engineering butuh waktu lama sangat penting, karena kebanyakan orang sudah menyerah duluan setelah beberapa jam atau beberapa hari belum bisa maju. Aplikasi yang tidak memiliki proteksi khusus saja bisa butuh waktu lama, contohnya saya butuh waktu sekitar sebulan untuk mereverse engineer Pokemon Go Plus.

Nah sekarang jika memang sudah sangat berniat, maka langkah berikutnya adalah:

  • Belajar dasar reverse engineering malware
  • Belajar dasar enkripsi

Dasar Reverse Engineering Malware

Topik reverse engineering malware sendiri sangat luas. Sudah ada banyak buku yang membahas ini misalnya:

Saya juga sudah pernah membuat tulisan mengenai pengantar reverse engineering (tapi tidak spesifik malware).

Jangan berharap bisa mengerti dari sekedar membaca jawaban singkat dari bertanya di group chat atau dari menonton satu dua video saja. Reversing malware ini butuh kesabaran dan banyak latihan.

Saran saya ketika memulai: gunakan virtual machine yang tidak terhubung ke jaringan (networking dimatikan). Jangan merasa jagoan ketika baru pertama kali berurusan dengan ransomware, jika Anda membuat kesalahan, semua PC di jaringan bisa terinfeksi (contoh kasus: WannaCry).

Ibaratnya seperti belajar kalkulus, 99.99% orang akan butuh waktu dan latihan selama beberapa semester untuk bisa memahaminya (mungkin ada 0.01% orang super jenius yang bisa belajar kalkulus sendiri dalam beberapa jam atau beberapa hari). Coba bayangkan apakah Anda bisa diminta menjelaskan kalkulus via chatting? mengajari integral dan differensial dasar bisa dilakukan relatif cepat, tapi ketika sudah masuk topik rumit, segala macam trik dasar tidak bisa dipakai lagi.

Sebuah program biasa biasanya tidak terlalu sulit dibongkar/reverse engineer. Tapi sebuah ransomware biasanya tidak mudah dibongkar, ada trik-trik yang mempersulit analisis, atau membuat analisisnya jadi salah. Di contoh CTF Mugatu ada trik supaya IAT (import address table) jadi kacau jika langsung dibuka dengan disassembler/decompiler.

The first-stage malware shouldn’t seem too difficult when looking at it in a disassembler. However, something should start to feel amiss after you’ve looked at the API calls and how they are used. While some seem legitimate, others seem completely wrong.
The malware uses a trick I designed that involves running code before WinMainCRTStartup.


This function is responsible for the C-runtime initialization. Most disassemblers will skip this
function and start in WinMain, which corresponds to the main function for the code you programmed. . By skipping WinMainCRTStartup, you may miss my insidious trick.

Writeup Mugatu

Jadi kalau baru sekedar bisa membongkar aplikasi dengan Ghidra atau IDA Pro, ketika membongkar Mugatu akan langsung bingung karena API call-nya kok semuanya salah. Perlu dicatat bahwa ini hanya satu obfuscation sederhana, masih ada puluhan teknik lain misalnya:

  • String encryption
  • Anti debugging
  • Anti disassembly
  • Anti decompilation
  • Virtual Machine based protection
  • Heaven’s Gate (hanya untuk Windows 8 ke bawah), salah satu teknik yang cukup rumit

Dasar ilmu Enkripsi

Ransomware adalah malware yang mengenkripsi file korbannya. Jadi langkah logis berikutnya adalah: memahami enkripsinya.

Pertama yang saya sarankan adalah: cobalah membuat program yang mengenkrip dan mendekrip file. Lebih bagus lagi kalau membuat enkriptor dalam satu bahasa dan dekriptor dalam bahasa lain, supaya lebih paham berbagai variasi API enkripsi dalam berbagai bahasa.

Contohnya begini: jika kita ingin mengenkrip file, maka ada banyak cara:

  • Kita mengimplementasikan sendiri algoritma AES/RSA atau bahkan algoritma custom
  • Kita menggunakan library yang sudah ada, misalnya: CryptoPP (C++), openssl (C dengan binding ke banyak bahasa), Bouncycastle (Java, .NET)
  • Kita bisa menggunakan library built in dari sistem operasi (misalnya wincrypt di Windows)

Jadi pembuat ransomware bisa memilih salah satu dari cara di atas. Bagaimana misalnya kalau dia memilih Wincrypt, dan kita sudah bisa mendekompilasi kodenya. Apakah Anda akan bisa memahami proses enkripsi dan membuat dekriptornya? jika ransomwarenya memakai CryptoAPITransform, apakah Anda bisa membuat dekriptornya?

Cobalah membaca dan memahami berbagai jenis enkripsi. Jika kita bahkan tidak tahu enkripsi apa yang dipakai oleh ransomware, bagaimana kita bisa tahu apa kelemahannya?

Kelemahan Implementasi Enkripsi

Ini adalah topik yang paling sulit saya jelaskan, karena kebanyakan yang bertanya tidak paham mengenai dasar enkripsi. Saya sebenarnya sudah menulis sebagian topik dasar ini, misalnya beberapa artikel ini, tapi belum lengkap dan menyeluruh (topik enkripsi ini sangat luas):

Beberapa contoh kelemahan dalam implementasi enkripsi ini misalnya:

  • Keynya ada di ransomware itu sendiri/fixed key
  • Keynya berdasarkan MAC address komputer (atau nomor seri harddisk, atau sesuatu yang lain yang bisa dicari)
  • Keynya random, tapi ada kelemahan dalam cara menghasilkan bilangan randomnya (tidak menggunakan secure random)
  • Salah memanggil fungsi enkripsi (misalnya salah parameter)
  • Salah mengimplementasikan algoritma enkripsi
  • Memakai stream cipher dengan key yang sama untuk setiap file

Di soal Flare On Mugatu, ternyata kelemahannya adalah: hanya 4 byte key yang dipakai untuk enkripsi. Dan ini bisa dibruteforce dengan cepat menggunakan C.

Salah satu cara untuk mendapatkan gambaran berbagai kelemahan enkripsi adalah dengan mengikuti CTF kategori crypto, atau minimal membaca berbagai writeup di kategori crypto. Untuk saat ini saya sarankan dari CTF di luar negeri, karena kebanyakan CTF di Indonesia masih basic sekali soal kriptografinya.

Contoh beberapa malware yang memiliki kelemahan enkripsi: LockCrypt dan ACCDFISA. LockCrypt memakai enkripsi lemah dan random number generator (RNG) yang lemah, sedangkan ACCDFISA yang membuat password dengan RNG yang lemah. Untuk contoh lain ransomware yang tidak bisa dibongkar tapi pembuatnya menyerah dan memberikan keynya: Teslaware.

Pernah juga ada kasus di mana kelemahan malware bukan di malware itu sendiri tapi di server pembayaran tebusan/ransom. Servernya berhasil di hack, dan keynya bisa diambil dari server.

Penutup

Mungkin sebagian tulisan ini terasa mengecewakan, dan mungkin sebagian akan berpikir: wah susah ya, kalau begitu gak jadi deh, saya menyerah aja. Kalau memang memiliki niat, sebaiknya jangan menyerah.

Tidak semua pembuat ransomware jagoan, mungkin ada ransomware buatan lokal dan hanya menyebar lokal di kota tertentu (bahkan sangat lokal, misalnya cuma area kampus tertentu), dan ada kemungkinan enkripsinya tidak rumit atau memiliki kelemahan. Anda bisa mencoba-coba membuat dekriptornya, dan menyelamatkan minimal orang-orang di sekitar Anda.

Semoga tulisan ini cukup untuk menjawab Anda yang ingin belajar membongkar sendiri ransomware. Jika ada pertanyaan lebih lanjut bisa ditanyakan ke saya (lihat side bar mengenai cara menghubungi saya).

Lampu Pohon Natal yang bisa diprogram

Ini sebenarnya proyek yang saya lakukan tahun 2016, tapi setelah saya posting foto pohon Natal tahun ini dan membaca komentar di Bu Inge, sepertinya proyek kecil ini menarik juga untuk dituliskan. Ini bisa digunakan untuk mengajar pemrograman dan hardware.

Saya akan berusaha memberikan petunjuk generik, supaya bisa dipakai di aneka LED strip dengan aneka microcontroller, dan aneka bahasa pemrograman

Hardware yang dibutuhkan:

  • RGB LED Strip (individually addressable)
  • Power supply (opsional, tergantung seberapa banyak LED-nya)
  • Board microcontroller

LED Strip

Ada beberapa jenis LED Strip, yang kita cari adalah yang RGB (jangan yang satu warna) dan harus bisa dikontrol per LED-nya (individually addressable).

LED Strip ketika masih digulung

Jenis yang paling murah adalah WS2812/WS2812B. Versi yang B memiliki proteksi jika salah polaritas (terbalik positif dan negatif), jadi untuk belajar saya sarankan memakai versi B. Harganya mulai dari 1.3 USD untuk 30 LED dalam strip sepanjang 1 meter. Ada juga versi yang anti air (rating IP67 jika ingin dipasang di luar rumah). Versi lain adalah APA102/APA109B, harganya lebih mahal tapi warnanya lebih bagus. Berbagai jenis LED ini bisa dibaca di artikel Hackaday ini.

Perlu diketahui bahwa LED ini ada juga yang dijual dalam bentuk PCB dengan bentuk tertentu, misalnya ada yang melingkar. Cara pemrogramannya sama apapun bentuknya. Ini bisa dipasang di puncak pohon Natal.

LED yang sama tapi disurun melingkar

Power Supply

Hal yang perlu diperhatikan ketika bermain dengan LED strip adalah: tiap LED memerlukan sampai sekitar 50-60mA jika menyala dengan kecerahan yang paling tinggi. Artinya untuk satu meter saja yang memakai 30 LED maka dibutuhkan 1.5-1.8A. Jika ingin menggunakan power dari USB, kebanyakan hanya bisa memberikan 2A.

Tentu saja kita bisa memprogram supaya dalam satu waktu kita tidak menggunakan kecerahan maksimum, dan tidak menyalakan semua LED. Untuk pohon Natal biasanya kita tidak menyalakan semua lampunya sekaligus.

Microcontroller

Saat ini ada banyak board microcontroller misalnya:

  • Arduino (diprogram dengan Wiring yaitu varian C++ yang disederhanakan), harga mulai dari 3 USD per board
  • ESP8266 (diprogram dengan C/MicroPython/Lua), harga mulai dari 3 USD per board
  • Micro:Bit (diprogram dengan MicroPython), harga mulai 17.5 USD

Microcontroller apapun bisa dipakai, yang penting adalah ada librarynya untuk memudakan development. Memprogram LED secara low level bisa dilakukan, tapi ini cukup rumit terutama WS2182 yang timingnya harus tepat.

RGB LED yang addressable ini sudah populer sejak 2013, sehingga sekarang sudah ada librarynya untuk semua board yang saya tahu. Library WS2812B dan sejenisnya biasanya bernama neopixel. Atau jika tidak yakin: cari saja WS281b dan nama boardnya di google (misalnya “Micro:Bit WS2812B”) dan kita akan ketemu nama librarynya.

Tiap library biasanya akan menjelaskan bagaimana menghubungkan dengan LED-nya. Hanya ada 3 kabel yang perlu dihubungkan: tegangan positif, ground, dan data. Ini contohnya dari halaman dokumentasi Micro: Bit.

Perhatikan: jika ada lebih dari 8 LED, gunakan sumber daya terpisah.

_images/neopixel-croc.png
Sumber: https://microbit-micropython.readthedocs.io/en/latest/neopixel.html

Program

Program paling sederhana untuk menyalakan LED seperti ini di micropython (ini sudah program lengkap, bukan pseudocode, menyalakan 2 LED warna merah dan ungu):

import machine, neopixel
NUMBER_OF_LEDS = 8
np = neopixel.NeoPixel(machine.Pin(4), NUMBER_OF_LEDS)
np[0] = (255, 0, 0) #warna merah (red = 255)
np[1] = (255, 0, 255) # warna ungu (merah + biru)
np.show()

Untuk pohon Natal, intinya adalah: kita membuat infinite loop dan dalam loop kita menyalakan/mematikan lampu sesuai pola-pola tertentu (sekedar mengisi elemen array) lalu memanggil “show” untuk menampilkan isi arraynya. Beberapa contoh pola:

  • Berkedip (semua on, lalu semua off)
  • berkedip berselingan (misalnya semua LED ganjil on, semua genap off, lalu sebaliknya)
  • mengalir: hanya beberapa LED yang menyala, bergerak dari posisi pertama sampai terakhir
  • fade in/fade out

Dan masih banyak lagi pola-pola yang bisa dibuat. Jika tidak ingin pola statik juga bisa (menggunakan bilangan acak). Jika ingin memprogram yang lebih lanjut juga bisa, misalnya:

  • Lampu dikendalikan via WIFI (butuh microcontroller yang memakai WIFI, misalnya: ESP8266/ESP32)
  • Lampu menyala berdasarkan sensor tertentu (misalnya sensor suara, sensor kedekatan/proximity)
Mengontrol LED dengan ponsel

Penutup

Proyek ini menurut saya sangat sederhana, cukup menyenangkan. Bisa digunakan untuk mengajari loop dan juga array. Versi lebih kecil juga bisa dipakai dengan jumlah LED yang lebih sedikit. Tentunya ini tidak harus jadi hiasan pohon Natal, bisa juga jadi hiasan rumah atau bahkan di mobil.

Selamat Natal dari kami di Chiang Mai.

Aneka bug bypass OTP (One Time Password)

Berbagai website memiliki fitur two factor authentication (2FA) dalam bentuk OTP (One Time Password) alias password sekali pakai yang biasanya dikirim via SMS atau email. Sering kali ini tidak diimplementasikan dengan sempurna dan bisa dibypass. Tulisan ini tidak membahas metode baru, hanya sekedar koleksi beberapa OTP bypass yang sering saya temukan. Tujuan tulisan ini:

  • Untuk pentester supaya jadi checklist ketika mengecek OTP
  • Untuk programmer supaya jadi checklist ketika mengimplementasikan OTP

Tulisan ini juga untuk memberi pencerahan, supaya user sadar bahwa meskipun sebuah website memiliki OTP tidak berarti 100% aman. OTP biasanya diminta ketika login kali pertama, dan kadang hanya diminta ketika akan melakukan transaksi (contoh: ketika akan transfer uang). Kadang bypass OTP bisa dilakukan di login saja, transaksi saja, atau keduanya.

Sebagai catatan: OTP hanyalah salah satu bentuk dari 2FA, contoh lainnya adalah penggunaan hardware key. Implementasi OTP yang baik seharusnya tidak bisa dibypass. Jadi jika sebuah website tidak bisa dibypass OTP-nya dengan cara di sini, maka ada beberapa kemungkinan

  • Implementasi OTP website/aplikasi tersebut sudah aman dan memang tidak bisa dibypass
  • Anda kurang kreatif memikirkan bug lain yang mungkin spesifik terhadap aplikasi tersebut

OTP kosong

Kadang sebuah website membuat OTP jadi opsional, user bisa mengaktifkan OTP jika ingin lebih aman. Beberapa website mengecek ini dari ada atau tidaknya OTP yang dikirimkan dan dengan meremove field otp kadang OTP bisa dibypass.

OTP Non Numerik/Non String

Ini bypass sangat sederhana. Program backend berharap OTP adalah string, tapi bagaimana jika kita beri input berupa array atau object? Contohnya di PHP, parameter otp=123456 bisa dicoba diganti dengan otp[]=12356. Contoh lain jika backend menerima JSON: {"userid": "x123", "otp":"123456"} lalu kita ganti menjadi {"userid": "x123", "otp":[]} .

Salah satu penyebab ini bisa terjadi adalah penggunaan strcmp di PHP untuk membandingkan string dan array. Ini adalah salah satu kelemahan type juggling di PHP. Sementara di NodeJS atau teknologi javascript lain, bisa juga memiliki bug prototype pollution.

Intinya adalah: input-input non numerik/non string atau bahkan string dengan format tertentu bisa saja membuat error pada pemrosesan di backend.

SQL Injection/Akses Database

Bug SQL injection memungkinkan kita mengintip nilai OTP saat ini. Bahkan dalam kasus tertentu field OTP itu sendiri yang memiliki SQL injection. Hal ini bisa parah jika OTP yang dipakai adalah berbasis TOTP (time based OTP), dan kita memiliki seed untuk OTP tersebut. Artinya kita bisa mendapatkan OTP untuk sembarang orang kapanpun juga.

Tentunya akses database tidak harus selalu melalui SQL Injection, bisa saja melalui noSQL injection atau melalui Remote Code Execution (RCE). Jika kita bisa mendapatkan RCE kita bisa mengupload shell yang bisa mengakses database.

Bruteforce OTP

Jika tidak dibatasi waktu dan jumlah percobaan, maka OTP bisa dibypass dengan bruteforce terutama jika hanya 4 digit. Hanya dibutuhkan maksimum 10 ribu percobaan. Dalam kasus tertentu jumlah request bisa sangat sedikit. Kasus menarik yang pernah saya temui: OTP dibutuhkan untuk menambahkan email, dan format requestnya seperti ini:

actions: [{"action": "add_email",  "email": "[email protected]", "otp":"1232"}]

Menariknya di sini adalah adanya array actions, artinya kita bisa mengirimkan banyak request sekaligus, seperti ini:

actions: [
{"action": "add_email",  "email": "[email protected]", "otp":"0001"},  
{"action": "add_email",  "email": "[email protected]", "otp":"0002"},
{"action": "add_email",  "email": "[email protected]", "otp":"0003"} 
] 

Saya beruntung karena aplikasi tersebut meneruskan memproses action berikutnya jika yang pertama gagal. Karena hanya ada 10 ribu kemungkinan, kita cukup mengirimkan 100 request dengan masing-masing request mencoba 100 OTP. Atau bahkan jika sistemnya mampu menerima, kita mungkin bisa mengirimkan 1000 OTP, dan hanya butuh 10 request.

OTP dicek di client

Ini adalah bug yang sangat aneh dan seharusnya tidak terjadi. Ketika aplikasi butuh OTP, server mengembalikan nilai OTP ke client. Client di sini artinya browser atau mobile app. Jadi jika kita bisa mengintercept hasil requestnya, kita tahu apa OTPnya. Bug ini mungkin terdengar konyol, tapi setidaknya sudah ada 3 aplikasi yang saya cek yang memiliki bug sejenis ini.

Memakai OTP user lain

Ada OTP yang diimplementasikan dengan aneh: OTP tidak diasosiasikan dengan user id, tapi dengan OTP token. Atau sederhananya: OTP sesorang bisa dipakai orang lain.

Dalam bug ini, ketika user melakukan aksi yang butuh OTP, aplikasi meminta ke server (generateOTP) dan server akan mengembalikan sebuah token OTP (bukan string OTPnya, hanya sekedar ID misalnya xyz123) ke aplikasi sambil mengirimkan nilai OTP ke SMS User (misalnya 7171). Ketika user mengetikkan OTP dari SMS yang diterimanya, maka yang dikirimkan ke server adalah: aksi user saat ini (misalnya transfer uang), token OTP (xyz123) dan OTP-nya (7171).

Masalahnya token OTP ini bisa dipakai di user lain, jadi dengan mengirimkan transaksi sebagai user B, tapi memakai nilai OTP dari user A (dengan token OTP dan nilai OTP user A) kita bisa membypass OTP user B. Jadi dalam kasus ini: attacker A memiliki account juga di website target agar bisa menerima OTP di ponselnya.

OTP spamming

Terkadang SMS tidak langsung sampai, jadi user meminta OTP sampai beberapa kali. Kadang jika kita meminta OTP 3 kali, yang sampai ke HP malah hanya 2 OTP pertama (sementara OTP terakhir masih “nyangkut”). Karena ingin berbaik hati, sebagian programmer menerima tidak hanya OTP terakhir, tapi beberapa OTP sebelumnya. Kadang ini tidak berdasarkan jumlah (n OTP sebelumnya), tapi berdasarkan waktu, misalnya OTP yang dihasilkan 10 menit terakhir akan dianggap valid.

Kita bisa menspam server dengan meminta OTP sebanyak-banyaknya. Misalnya OTP hanya 4 digit dan selama 10 menit kita bisa meminta 1000 OTP, maka kemungkinan OTP kita benar adalah 1 banding 10.

Bug IDOR update profile/phone number

Biasanya kita bisa mengubah nomor telepon via aplikasi atau via web. Jika ada bug indirect object references (IDOR) sehingga kita bisa mengupdate/menimpa profil atau ponsel orang lain ketika kita melakukan aksi profile (yang seharusnya mengupdate profile kita sendiri), maka ini bisa digunakan untuk bypass OTP karena OTP akan dikirimkan ke nomor ponsel kita.

Sebagai catatan: kebanyakan bank (termasuk yang saya pakai) hanya mengijinkan perubahan nomor ponsel dengan datang langsung ke banknya. Sementara perubahan email berbeda kebijakannya (ada bank yang mengijinkan online, ada yang tidak, ada yang butuh OTP dan ada yang tidak).

Weak Random Number Generator

Ini hanya bisa ditemukan jika kita bisa mendapatkan akses ke source code melalui bug lain (atau mungkin adminnya lupa sehingga direktori .git bisa diakses). Kadang OTP dihasilkan hanya dari random number generator yang memakai waktu saat ini sebagai seed.

Logic Reset Password

Dalam banyak aplikasi, setelah kita reset password, maka kita otomatis login. Jika ada kelemahan dalam mekanisme reset password (ini mungkin akan saya bahas di kesempatan lain), maka kita bisa memanfaatkan ini untuk bypass OTP.

Cara lain (bukan bug aplikasi)

Sebagai pelengkap, saya akan menuliskan beberapa bypass OTP yang bukan bug aplikasi dan biasanya di luar scope sebuah bounty ataupun pentest.

Kebanyakan orang jahat memakai social engineering agar korban membacakan OTP. Ini menurut saya bukan bug aplikasi, terutama jika ada instruksi yang jelas di SMS: jangan berikan OTP ini pada siapapun. Jika instruksinya tidak ada atau tidak jelas, maka itu bisa disarankan kepada developernya.

Simjacking atau SIM swap adalah serangan social engineering ke perusahaan telekomunikasi. Intinya penyerang mengumpulkan data orang lain, dan menghubungi perusahaan telekomunikasi: “Maaf SIM card saya hilang, tolong buatkan SIM card baru dengan nomor yang sama, berikut ini data pribadi saya”. Dengan data yang cukup lengkap, penipu bisa meyakinkan agar diberikan SIM Card baru.

Cara lain bypass OTP adalah dengan mengakses sistem telekomunikasi, baik itu bug di level SS7 maupun di sistem lain yang berhubungan dengan SMS. Sebagai catatan: serangan ini cukup kompleks dan rawan ketahuan. Jadi biasanya hanya dilakukan jika targetnya nilainya cukup besar.

Cara berikutnya adalah dengan malware: jika ada malware yang terinstall di HP korban, maka semua SMS bisa diakses oleh attacker. Dengan cara ini OTP aplikasi apapun yang berbasis SMS bisa diakses oleh attacker. Agar korban menginstall aplikasi malware ini, korban bisa ditipu dengan social engineering tertarget (“bapak perlu menginstall aplikasi kami terbaru agar dapat mengakses layanan ini”) atau sekedar membuat aplikasi palsu dan disebar ke web ( misalnya: “APK terbaru cheat Mobile Legends”).

Jika OTP dikirim via email, dan email sudah diambil alih oleh attacker, maka attacker akan bisa mengakses OTP. Berbagai serangan untuk mengakses email orang bisa dilakukan, dan mungkin akan saya bahas juga di tulisan lain.

Penutup

Mungkin masih ada bug-bug lain yang tidak tercantum di sini, jadi jangan cuma terpaku pada list yang tercantum di sini. Intinya pikirkan dari mulai OTP dibuat, dikirimkan, sampai divalidasi di sisi server.

Ketika saya mendapatkan source code sebuah aplikasi, kadang saya terpikir beberapa bug yang tidak terpikirkan sebelumnya. Misalnya ternyata programmernya memiliki backdoor OTP, yaitu OTP sakti berupa string khusus yang bisa dipakai di sembarang transaksi (mungkin digunakan ketika testing tapi tidak dihapus dalam production).

Artikel singkat ini sekedar menjadi checklist ketika pentest untuk mengetahui serangan apa saja yang bisa dilakukan untuk bypass OTP. Saya juga berharap programmer membaca ini agar membuat sistem yang aman. Saya suka sistem yang aman karena membuat pekerjaan pentest saya jadi lebih cepat, dan saya jadi bisa memikirkan bug lain yang lebih kreatif.

PocketChip, PocketGo, dan Pinebook Pro

Posting ini sekedar catatan beberapa benda yang baru saya dapatkan supaya tidak lupa di masa depan. Kebetulan semuanya berawalan huruf P. Hanya Pinebook Pro yang merupakan benda yang benar-benar baru karena hasil preorder, sedangkan yang lain sudah ada lama di pasaran.

PocketChip

PocketChip adalah komputer saku berbasis Single Board Computer CHIP (dulu pernah saya bahas tiga tahun yang lalu). Benda ini memiliki layar, keyboard dan batere, jadi bisa dibawa ke mana-mana. Keyboardnya fungsional tapi kurang nyaman untuk mengetik banyak teks.

PocketChip ini sudah tidak diproduksi lagi tapi baru saya beli baru-baru ini. Saya sudah ingin membeli waktu benda ini diproduksi, tapi masih ragu kegunaannya, tapi kemudian benda ini hanya bisa dipesan ke negara tertentu, dan setelah itu tiba-tiba perusahaan pembuatnya (NextThing Co) bubar. Setelah NextThing Co bubar, sisa benda ini jadi banyak dijual di ebay dan Aliexpress.

Dibandingkan laptop, benda ini cukup ringan dan kecil. Kelebihan benda ini adalah: memiliki GPIO dan bisa menjadi USB Host. Satu hal praktis yang bisa saya lakukan adalah mengakses adb dan fastboot untuk Android. Hal ini adalah sesuatu yang tidak bisa dilakukan dengan mudah menggunakan benda selain laptop/komputer.

Benda ini bisa dihubungkan juga ke iOS dan akan cocok sekali dipakai untuk menjalankan exploit checkra.in jika nanti dirilis untuk Linux. Sayangnya saat ini tidak ada lagi yang memaintain distribusi Linux terbaru. Jadi sering kali saya harus mengcompile sendiri versi software terbaru.

PocketGo

Benda ini adalah game console pocket yang saya beli beberapa bulan lalu. Game console ini bukan produk perusahaan besar dengan tujuan utama untuk menjalankan berbagai emulator. Sebenarnya saya tidak kekurangan game console sekarang ini punya: Gameboy, Game Boy Color, Game Boy Advance, Nintendo DS, Nintendo DSi XL, Nintendo 3DS, dan Nintendo Switch. Saya tertarik dengan PocketGo ini karena ukurannya kecil, ringan, benar-benar bisa masuk kantong.

Selain PocketGo, masih banyak console sejenis ini dari China. Pocket Go menggunakan prosesor ARM ( Allwinner F1C500) dan menggunakan operasi Linux, jadi bisa mudah ditambah program sendiri. Banyak device serupa menggunakan prosessor MIPS.Saya sudah membongkar benda ini sekali untuk mengganti warna tombolnya menjadi lebih cerah.

Pinebook Pro

Sekitar 2.5 tahun lalu, saya memiliki Pinebook, laptop seharga 99 USD. Masalah utama laptop tersebut adalah keyboardnya: layoutnya tidak standar dan tombol sering tidak responsif terutama tombol spasinya. Selain itu laptopnya terasa murahan dan specnya juga kurang bagus. Sekarang team yang sama telah membuat laptop baru: Pinebook Pro.

Laptop ini memiliki memori yang lebih besar (4GB, pinebook hanya 2 GB) dan penyimpanan yang lebih besar (mulai dari 64 GB, tapi karena saya preorder, saya mendapatkan yang 128 GB, sedangkan pinebook hanya 16 GB eMMC). Layarnya Pinebookpro matte, tidak glossy seperti pinebook.

Sayangnya meskipun spesifikasinya sudah jauh lebih baik, tapi saat ini di mode GUI, terutama ketika mengetik di browser, lagnya masih cukup terasa. Menurut saya ini hanya masalah software dan seharusnya akan lebih baik.

Out of the box, benda ini sudah langsung bisa membuka youtube dan menjalankan video HD dengan mulus. Speaker cukup keras, tapi kurang enak didengar. Saya masih gagal mengakses layanan yang memakai DRM WideVine (Netflix, Spotify, dll), padahal saya sudah mendownload plugin versi terbaru.

Waktu saya terima, saya sempat kecewa karena keyboardnya sering tidak responsif, tapi ternyata ini hanya masalah firmware saja. Saat ini versi layout keyboard hanya versi ISO, dan ini mengesalkan karena tombol shift jadi kecil karena adanya tombol ekstra di antara shift dan Z. Nantinya akan ada versi ANSI yang seharusnya lebih enak.

File:Physical keyboard layouts comparison ANSI ISO.png
ANSI Vs ISO layout (sumber: https://commons.wikimedia.org/wiki/File:Physical_keyboard_layouts_comparison_ANSI_ISO.png )

Satu kelebihan pinebook adalah adanya privacy switch: kita bisa mematikan secara fisik microphone, wifi dan camera. Sebenarnya beberapa tahun lalu banyak laptop (misalnya Thinkpad) yang memiliki tombol fisik untuk mematikan WIFI, jadi ini bukan hal baru. Webcam bisa ditutup dengan mudah menggunakan stiker. Hal yang sulit dilakukan di laptop lain adalah mematikan mikrofon.

Penutup

Semua benda di atas yang saya bahas menurut saya sifatnya: nice to have, tapi tidak “must have”. PocketChip sangat menarik dan berguna untuk saya, tapi saya berharap ada yang membuat benda serupa, dengan harga yang tidak terlalu mahal dan memakai prosessor yang lebih baik (msalnya Raspberry Pi).

PocketGo benar-benar hanya benda iseng, tapi sejauh ini cukup menghibur. Kualitas dan fitur berbagai emulator yang ada lebih baik dari yang ada di Nintendo DS/DSi/3DS.

Pinebook akan menarik bagi orang yang suka ngoprek dan belajar mengenai prosessor ARM, atau orang yang sangt memperhatikan privasi. Dari segi performance, benda ini masih bisa dengan mudah dikalahkan oleh laptop thinkpad dari beberapa tahun yang lalu yang harganya serupa dengan pinebook.

Ulang tahun Jonathan ke-9

Hari ini Jonathan masuk usia 9 tahun. Seperti tahun lalu, ulang tahunnya tidak dirayakan, tapi cukup dikasih hadiah dan makan bersama. Setelah lama berhomeschool dan jarang melihat perayaan ulang tahun anak lain, Jonathan tidak berharap perayaan ulang tahun.

Tahun ini hadiah yang saya berikan adalah buku Pokemon dan Minecraft. Buku Pokemon nya cukup tebal tapi sudah selesai dibaca dalam beberapa jam saja. Buku Minecraft nya baru satu box yang dibuka. Sebenarnya Jonathan juga meminta sebuah game untuk Nintendo Switch, tapi karena baru akan dirilis Minggu depan, jadi kami belum bisa belikan sekarang.

Meskipun tidak ada kegiatan homeschool hari ini, tapi tetap ada kegiatan kumon. Untungnya hari ini dia bisa cepat sekali menyelesaikannya. Setelah selesai, dia langsung menelpon saya dengan Video Call Facebook Kids dengan WIFI dari tempat kumon.

Setelah itu kami menunggu Risna yang sedang ikut pelatihan di Gereja, dan kemudian diteruskan dengan makan di Bear Hug Caffe.

Makanan dan minuman di tempat ini cocok untuk anak-anak, dihias cantik dan rasanya juga enak.

Sudah banyak perkembangan Jonathan di usia 8 tahun, dan semalam saya ngobrol banyak tentang targetnya di usia 9 tahun. Saya tidak perlu tuliskan di sini, tapi saya berharap keinginan dan target Jonathan bisa tercapai.