Ini adalah pengalaman saya merecover data dari sebuah hard disk (bukan SSD) yang partisinya memakai filesystem NTFS (New Technology Filesystem) yang umum dipakai Windows saat ini (di masa depan Microsoft mungkin akan memakai ReFS/Resilient File System). Metode yang saya pakai untuk recovery ini mungkin berguna untuk beberapa kasus, tapi tidak semua kasus, tergantung jenis kerusakan yang terjadi.
Kerusakan pada Hard disk
Bentuk kegagalan (failure) hard disk berbeda dengan SSD, jadi harap dicatat bahwa banyak hal di tulisan ini yang tidak berlaku untuk SSD. Hard Disk memiliki komponen mekanis: head dan platter dan juga komponen elektronik (controller). Controller hard disk adalah PCB yang memiliki CPU dan RAM dan menjalankan firmware hard disk.
Saya paling tidak suka mengerjakan hal-hal yang berulang atau yang langkahnya panjang jika melibatkan tablet, ponsel atau apapun yang melibatkan komputer. Tool otomasi iOS masih cukup terbatas dibandingkan dengan PC dan Android (kecuali jika dijailbreak). Walau demikian ada beberapa aplikasi (Shortcuts, Pythonista, dan iSH) yang bisa mengotomasi cukup banyak hal di iOS/iPadOS tanpa perlu jailbreak.
Shortcuts
Shortcuts merupakan aplikasi bawaan di iPhone sejak iOS 13, dan juga tersedia untuk iPadOS dan macOS. Kita bisa menyusun perintah-perintah yang akan dikerjakan oleh sebuah shortcut ketika ditekan. Bentuk shortcut yang paling sederhana adalah meluncurkan aplikasi dengan parameter tertentu.
Awalnya saya cuma ingin memahami kenapa tahun lalu gagal melakukan akuisisi data WhatsApp di Android yang memakai Android 12 (non-root), tapi ternyata eksplorasinya malah mendalam ke bagaimana sistem backup di Android bekerja. Saya melakukan berbagai eksperimen dan juga langsung membaca source code Android untuk memahami berbagai detail mengenai backup data di Android.
Dalam tulisan ini saya akan menuliskan nomor versi Android yang dikenal user (misalnya Android 6.0) dan kadang mencantumkan API Levelnya jika memang relevan (misalnya: Android 6.0 memiliki API Level 23). Menurut saya versi Android ini lebih mudah dipahami dibandingkan API Level yang biasanya hanya dikenal oleh developer.
Latar Belakang
Untuk keperluan tertentu kadang kita ingin mengekstrak data dari sebuah aplikasi Android. Beberapa contoh: untuk keperluan forensik, untuk recovery data, atau untuk riset security.
Sebuah aplikasi bisa menyimpan data di lokasi yang dengan mudah diakses karena berada di lokasi publik. Contoh lokasinya: galeri foto, direktori Downloads, dan SD Card. Informasi yang disimpan di sini sifatnya publik dan untuk bisa dikonsumsi aplikasi lain. Contoh: media (foto, video, file) dari aplikasi chat seperti WhatsApp bisa disimpan di direktori publik.
Ketika membuat posting Cloudflare Tunnel, banyak yang bertanya dan membandingkan ini dengan berbagai teknologi lain. Nah di posting ini saya akan membahas beberapa teknologi lain seputar tunnel dan VPN .
Wireguard
Ini adalah teknologi VPN yang sederhana dan cepat. Spesifikasinya cukup pendek dan sudah diimplementasikan di kernel berbagai sistem operasi, clientnya tersedia di berbagai sistem operasi juga, termasuk di iOS dan Android. Saya bahas sedikit tentang Wireguard dulu karena ini jadi dasar untuk Tailscale.
Wireguard ini cukup sederhana sehingga bisa dipakai untuk IOT, misalnya sudah ada implementasi Wireguard untuk ESP32. Tapi bagian ini tidak akan saya bahas sekarang, mungkin di posting lain.
Wireguard hanya menangani koneksi dari satu titik ke titik lain. Contoh: saya bisa setup server wireguard, lalu client pertama bisa konek ke server itu. Client lain juga bisa konek ke server situ. Atau bisa saya set Wireguard di dua server supaya keduanya seolah-olah di jaringan yang sama.
Ada beberapa keterbatasan Wireguard: jika client pertama ingin konek ke client kedua, maka koneksi dilakukan melalui server (tidak bisa langsung dari client pertama ke kedua). IP sebuah server harus fixed IP, jika memakai dynamic DNS dan IP server berubah di tengah-tengah koneksi, maka kita perlu disconnect lalu reconnect dengan IP yang baru.
Setup Wireguard tidak terlalu sulit (jika dibandingkan openvn misalnya), tapi juga tidak sederhana untuk orang awam. Perlu setup server, perlu setup key, copy paste key, distribusi konfigurasi dengan membuat file atau menggenerate QR (untuk mobile), dsb. Sudah ada beberapa proyek untuk menyederhanakan interface ini, tapi tetap tidak semudah teknologi yang lain.
Saya sudah memakai Cloudflare sejak sekitar 10 tahun yang lalu dan tiap tahun biasanya selalu ada fitur baru. Tahun 2020, Cloudflare memperkenalkan Cloudflare Tunnel, yang salah satu kegunaanya adalah untuk membuat situs lokal kita bisa diakses internet. Ada banyak kegunaan lainnya, misalnya bisa untuk melakukan SSH atau remote desktop ke mesin lokal dari Internet atau untuk mengakses intranet, tapi yang akan saya bahas di tulisan ini hanya untuk web hosting saja.
Saya sudah pernah menjelaskan apa itu Cloudflare Tunnel di posting Blog ini sekarang bertenaga surya. Secara singkat: salah satu kegunaan Cloudflare Tunnel adalah membuat website di server internal (tidak memiliki IP public) bisa diakses dengan nama domain publik. Caranya dengan menjalankan program cloudflared yang akan melakukan koneksi ke server cloudflare dan koneksi dari IP publik akan masuk melalui cloudflared.
Ini berarti:
Tidak mungkin salah konfigurasi sehingga website bisa diakses melalui public IP membypass cloudflare (karena web servernya memang tidak punya IP publik)
Kita bisa memakai server di rumah yang memakai dynamic IP (atau bahkan di Android dengan termux)
Selain itu Cloudflare tunnel mendukung autentikasi, jadi misalnya sebuah website punya area /admin yang hanya boleh diakses admin. Kita bisa mensetup agar ketika diakses akan muncul halaman autentikasi dari cloudflare.
Autentikasi Cloudflare bisa berdasarkan email, melalui login Google, login Github ataupun yang lain. Ini merupakan layer keamanan tambahan, andaikan penyerang ingin membrute force password, atau ada kelemahan SQL Injection atau yang lain di halaman login admin, maka penyerang harus bisa membypass dulu autentikasi dari Cloudflare.
Sejak dua minggu lalu di gereja, salah satu lagu pujian yang dinyanyikan adalah Goodness Of God, ini lagu pujian yang relatif baru (2019). Ada bagian lirik yang sangat berkesan bagi saya yang saya renungkan di ulang tahun ini:
All my life You have been faithful All my life You have been so so good With every breath that I am able Oh I will sing of the goodness of God
Goodness Of God
Saya merasa bersyukur atas kebaikan Tuhan di hidup saya, dan juga keluarga saya. Walau juga masih sering merasa malu karena sering kali belum bisa selalu menjadi orang Kristen yang baik.
Dulu saya sering membajak software, lalu setelah mengerti bahwa itu salah, saya berusaha tidak membajak sama sekali. Tapi kemudian pandangan saya mulai bergeser: bahwa kadang membajak tidak apa-apa, tergantung situasi.
Alasan utama untuk tidak membajak adalah: karena kita ingin menghargai karya orang lain dengan memberikan haknya sebagai pencipta karya itu. Ini sangat masuk akal: kalau semua orang membajak sebuah buku (atau musik, film, dsb), bagaimana pengarangnya bisa makan?
Untuk karya yang dibuat oleh pengarang yang masih hidup, apalagi yang masih belum kaya raya, saya pasti akan mendukungnya. Saya akan dengan tegas melarang distribusi buku/software bajakan di berbagai group yang saya ikuti. Saya juga akan berargumen dengan orang yang bilang “ilmu kan harus dibagi dengan gratis”, dalam kasus ini silakan cari ilmu dari orang lain yang memang mau membagi ilmunya secara gratis, bukan memaksa orang membagikan ilmunya dengan mendistribusikan konten buatan orang itu.