06 May 2018

Bionic and LXC

Andika Triwidada

This brand new Ubuntu LTS 18.04 surely had given me a big surprise. Major syntax change for LXC, because of upgrade from LXC v2 to v3. All my LXC VMs can't be started after this upgrade.Searching documentation about config syntax change was difficult. So I have resorted to reverse engineering: install new LXC VM, then compare its config to v2. Result is documented here. Still need more info to
on 06 May 2018 06:14 AM

27 Apr 2018

Arsitektur SSO

Apereo CAS (sebelumnya Jasig CAS) banyak dipakai untuk SSO. Cara pemasangannya agak ribet dan sulit. Kebetulan, versi CAS 5.1.2 sekarang sudah menggunakan Spring Boot sebagai dasarnya.

Keuntungan penggunaan Spring Boot adalah Jasig CAS menggunakan banyak keunggulan framework Spring. Misalnya, teknologi Spring Cloud untuk teknologi devops, Spring Web Flow untuk arsitektur layanan mikro (micro service), service discovery, dan konfigurasi melalui YAML. Sehingga, kita bisa memasang infrastruktur SSO melalui CAS tanpa harus mengoding seperti dahulu. Atau, kita bisa mengembangkan layanan yang terpisah dari SSO ala layanan mikro.

Sebelum infrastruktur bertambah rumit, saya ingin memberikan jembatan keledai. Sebab, saya pikir SSO ini agak sulit pada awalnya kalau tidak tahu caranya. Saya harap ketika selesai membaca artikel ini, pembaca ada gambaran bagaimana SSO bisa dikembangkan.

Arsitektur yang dipilih

Arsitektur SSO

Arsitektur SSO dasar.

Ada banyak pilihan, tetapi saya memilih kapabilitas komponen yang bisa diskalakan secara horizontal dan modern. Misalnya, ada banyak pilihan untuk ruang penyimpan tiket (Ticket Storage), tetapi saya memilih Redis karena dia implementasi modern yang banyak dipakai untuk teknologi dewasa ini.

Setiap komponen yang saya pilih ini dapat dikluster. Saya memilih untuk mengembangkan satu layanan per mesin. Nanti kalau sudah mengerti teknologi perawanan, [uhuk colek Utian Ayuba] Anda bisa mengubah setiap ini menjadi konfigurasi devops macam Ansible, Puppet, Chef, Vagrant,  atau apa pun agama Anda.

CAS IdP

CAS IdP adalah mesin utama yang menyediakan profil, otentikasi, dan otorisasi. Semua klien terhubung ke sana.

Cara buat:

CAS IdP Server

CAS Ticket Storage

Secara baku CAS IdP menyimpan tiket sesi pada memori. Namun, untuk arsitektur kluster dan skalabilitas, lebih baik menggunakan Redis. Mengapa Redis? Karena Redis utamanya menggunakan memori.

Untuk peladen Redis tidak perlu dikluster. Lebih baik satu instans Redis yang memakan memori 24 GB dari pada membuat kluster.

Cara buat:

Redis Ticket Storage

CAS Service Storage

Satu situs/sistem/aplikasi yang menggunakan CAS untuk SSO disebut satu layanan (service). Setiap layanan dapat didefinisikan logo, URL, ACL pengguna, dan sebagainya secara granular. Itu semua secara baku disimpan oleh CAS IdP di berkas JSON.

Untuk pengelolaan yang lebih baik, saya memilih PostgreSQL sebagai ruang penyimpan. Pengalaman saya membandingkan PostgreSQL dengan MySQL mengatakan bahwa PostgreSQL rajanya basisdata untuk basisdata perangkat lunak bebas terbuka. Waktu itu saya membandingkan layanan Roundcube Webmail dengan MySQL dan PostgreSQL. Anda sebagai pengguna Webmail UI pasti merasakan bagaimana Webmail UI itu seperti mengakses sistem HTML statik.

Saya, sih, tidak apa kalau ada yang mau menggunakan MongoDB atau yang lainnya. Tetapi saya memilih karena daftar layanan ini tidak perlu kecepatan khusus. Selain itu, daftar layanan butuh untuk tahan banting, saya lebih memilih PostgreSQL. Tentu saja, saya takkan memilih Redis.

Cara buat:

CAS Service Registry

CAS Authentication Provider

Normalnya CAS menggunakan Spring Security dengan login casuser dan sandi Mellon. Tentunya, ini buat yang main-main. Untuk yang lebih serius, gunakan LDAP, basis data, atau bahkan layanan REST.

Penyedia otentikasi CAS dapat lebih dari satu (komposit). Tetapi, untuk kali ini, gunakan saja LDAP.

Cara buat:

CAS Auth LDAP

CAS Service Management Webapp

Aduh, lupa menulis dokumentasi. Silakan simpan URL ini, nanti saya coba tulis. Untuk sementara, langsung saja buat di basisdata. He… he… he….

Studi Kasus: WordPress

Penasaran dengan hasilnya? Langsung saja, buat aplikasi WordPress. Mengapa WordPress? Karena gampang memasangnya. Tinggal pakai plugin WP Cassify, daftarkan URL WP sebagai satu layanan, dan beres!

Cara buat:

WordPress Cassify

TODO:

  • Personalisasi halaman login.
  • Membuat CAS IdP terkluster (lebih dari satu instans)
  • Entahlah….
on 27 Apr 2018 09:29 AM

20 Apr 2018

Well, my Dev team mate have a Linux server for build some projects, and they wanted to access their files from Linux by remote/konsole mode, in this case their files are on Windows. So, here are their files sharing on Windows system.
As you can see above, we will access on those folder Autogenerated and Resources. So, here's the step to make it accessible from Linux.
Installing a requirements packages
# apt-get install cifs-utils

After that then go to /etc/nsswitch.conf and edit it:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

add "wins" on that line
hosts:  files mdns4_minimal [NOTFOUND=return] wins dns mdns4

If winbind is not installed on Linux system, please install it by this issue command:
# apt-get install libnss-winbind winbind

Now reload the network to take effect:
# service networking restart

Mounting drive
Backup the fstab configuration to avoid any mistaken in the future.
# cp /etc/fstab{,.old}

Now create a credential user files who will accessing the folder share files on current linux user.
# printf '%s\n' 'username=darm' 'password=******' > .smbuser

Next, we should know the UID and GID on the system. Run the following command
# id programmer
uid=1000(programmer) gid=1000(programmer) groups=1000(programmer),27(sudo),7001(wksadmin)

Create folder for mounting point.
# mkdir /media/prg
# mkdir /media/prg2

Then we open fstab file to start mounting point, and put this line on it.
//Workstation/AutoGenerated /media/prg cifs credentials=/home/programmer/.smbcredentials,iocharset=utf8,gid=1000,uid=1000,file_mode=0777,dir_mode=0777 0 0
//Workstation/Resources /media/prg2 cifs credentials=/home/programmer/.smbcredentials,iocharset=utf8,gid=1000,uid=1000,file_mode=0777,dir_mode=0777 0 0

Save your configuration, and reload the fstab
# mount -a

Now let's take a look the result. :D
on 20 Apr 2018 07:21 AM

15 Apr 2018

Bandung yang dikenal sebagai kota dengan segudang tujuan wisata kelihatannya enggak pernah kehabisan gagasan untuk berinovasi. Terlebih semenjak walikota idola tidak sedikit warga, Ridwan Kamil, menjabat. Walikota yang akrab disapa Kang Emil ini kayaknya sebentar lagi akan mendapat fans baru nih. Kali ini datang dari komunitas penyuka kebudayaan Korea. Kok bisa? Pasalnya kota Bandung akan […]
on 15 Apr 2018 09:50 AM

13 Apr 2018

Selamat Datang

Putu Wiramaswara Widya

Ini adalah post pertama dalam Bahasa Indonesia. Saat ini saya sedang mencoba untuk mengubah blog ini agar dwi-bahasa.

on 13 Apr 2018 06:40 AM

11 Apr 2018

Saya tertarik untuk mengubah semua presentasi saya dengan HTML5. Kalau Anda lihat di laman publikasi, saya sudah bereksperimen dengan beberapa. Kali ini, saya menemukan sebuah proyek pembuatan salindia yang cukup modular: Reveal JS.

Dia memiliki fitur yang saya butuhkan: presentasi di peramban, cetak ke PDF, dan sintaksis. Ada juga yang mengembangkan catatan pemresentasi dan skema klien-peladen untuk menghubungkan beberapa perangkat. Tujuan dari sinkronisasi ini untuk tampilan pemresentasi dan tampilan presentasi berbeda. Tetapi, saya jarang menggunakan catatan kaki. Makanya, saya tidak mengejar fitur ini.

Reveal JS cukup mudah dikembangkan. Selain memiliki contoh situs yang menggambarkan penggunaannya, Reveal JS juga menyediakan contoh-contoh penggunaan yang gila di alam sana. Salah satu yang menginspirasi saya adalah The Arab Spring Uprisings Five Years On oleh Council on Foreign Relations.

Modularitas ini yang membuat pengembangan Reveal JS bisa ditambah-tambahi dengan berbagai macam. Tetapi, saya yakin, yang paling penting adalah bagaimana cara memulainya. Apalagi, untuk orang-orang yang tidak terbiasa dengan Node JS, memasang paket-paket Node JS sangat mahal (biaya Internet) dan membingungkan.

Saya akan memulai membangun dasar Reveal JS yang saya gunakan mulai dari nol sampai beberapa modul yang saya rasa perlu. Di akhir tulisan ini, akan ada sebuah cetakan salindia yang siap untuk dibuat.

Paket Dasar

Perhatikan struktur direktori sebagai berikut:

.
├── css
│   ├── reveal.css
│   └── theme
│       └── beige.css
├── index.html
└── js
    └── reveal.js

Sesuai dengan contoh dari Reveal JS, hal yang paling dasar cukup menyediakan 4 berkas:

  1. Berkas CSS Reveal JS.
  2. Berkas CSS tematik yang digunakan. Untuk contoh kali ini saya menggunakan tematik Beige.
  3. Berkas Javascript Reveal JS sebagai skrip penjalan.
  4. Berkas HTML sebagai berkas salindia.

Anggap sudah ada di sebuah direktori, mari buat struktur yang cukup:

mkdir -p js css/theme

Unduh tiga berkas dari situs Reveal JS.

wget https://raw.githubusercontent.com/hakimel/reveal.js/master/css/reveal.css -O css/reveal.css
wget https://raw.githubusercontent.com/hakimel/reveal.js/master/css/theme/beige.css -O css/theme/beige.css
wget https://raw.githubusercontent.com/hakimel/reveal.js/master/js/reveal.js -O js/reveal.js

Lalu, buat sebuah berkas HTML biasa sebagai kerangka kerja:

cat > index.html << EOF
<html>
        <head>
                <link rel="stylesheet" href="css/reveal.css">
                <link rel="stylesheet" href="css/theme/beige.css">
        </head>
        <body>
                <div class="reveal">
                        <div class="slides">
                                <section>Slide 1</section>
                                <section>Slide 2</section>
                        </div>
                </div>
                <script src="js/reveal.js"></script>
                <script>
                        Reveal.initialize();
                </script>
        </body>
</html>
EOF

Sampai sini, sudah ada presentasi sederhana yang bisa digunakan dengan contoh dua halaman.

Contoh Salindia yang dihasilkan.

Contoh Salindia yang dihasilkan.

Perhatikan bahwa setiap halaman dalam salindia berada di dalam elemen HTML section. Bila ingin membuat laman yang ke bawah, buat section di dalam section. Nanti hasilnya laman dengan panah ke bawah.

Silakan menggunakan elemen HTML di dalam section untuk membuat isi salindia. Beberapa rekomendasi saya:

  • Saya menggunakan elemen H1 untuk membuat judul salindia dan H2 untuk judul laman.
  • Untuk menggunakan poin, gunakan saja elemen UL (unordered list) seperti biasa.

Fitur Pencetakan ke PDF

Untuk mencetak lebih baik, diperlukan dua berkas CSS yang memformat salindia menjadi format untuk dicetak:

mkdir -p css/print
wget https://raw.githubusercontent.com/hakimel/reveal.js/master/css/print/pdf.css -O css/print/pdf.css
wget https://raw.githubusercontent.com/hakimel/reveal.js/master/css/print/paper.css -O css/print/paper.css

Setelah itu, ubah HTML salindia pada elemen HEAD untuk membuat skrip yang sesuai:

<html>
<head>
<!-- ... -->
        <!-- Printing and PDF exports -->
        <script>
            var link = document.createElement( 'link' );
            link.rel = 'stylesheet';
            link.type = 'text/css';
            link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
            document.getElementsByTagName( 'head' )[0].appendChild( link );
        </script>
<!-- ... -->
</head>
<body>
<!-- ... -->
</body>

Saya membuang konteks yang lain agar tidak bingung Anda mau memasukkan baris elemen SCRIPT di mana.

Setelah ini, ketika mengakses dengan peramban, tambahkan “?print-pdf” (tanpa kutip) pada ujung URL. Tata letak dengan URL tersebut akan terlihat aneh. Namun, bila kita menekan CTRL+P untuk menampilkan dialog pencetakan, salindia akan tercetak dengan baik.

Print presentation to PDF.

Print presentation to PDF.

Dengan ini, salindia yang dibuat bisa diekspor ke PDF.

Skrip Pembantu

Sebelum memasang plugin, tambahkan skrip pembantu Head JS untuk membantu memasang skrip-skrip plugin ke elemen HEAD.

Unduh berkas-berkas seperti biasa.

mkdir -p lib/js
wget https://raw.githubusercontent.com/hakimel/reveal.js/master/lib/js/head.min.js -O lib/js/head.min.js

Tambahkan skrip pembantu sebelum skrip Reveal JS.

<html>
<head>
<!-- ... -->
</head>
<body>
<!-- ... -->
                <script src="lib/js/head.min.js"></script>
                <script src="js/reveal.js"></script>
<!-- ... -->
</body>

Dengan adanya Head JS ini, plugin-plugin bisa dimuat dengan mudah.

Fitur Kode

Saya tahu pasti kebanyakan yang membaca tulisan saya adalah seorang yang biasa mempresentasikan kode. Reveal JS menggunakan Highlight JS, tetapi saya lebih suka Prism JS.

Untuk Prism JS, harus mengunduh secara manual dan menaruhnya di direktori plugin/prism

mkdir -p plugin/prism

Tambahkan secara manual dua berkas Prism JS (CSS + Javascript) sehingga direktori tersebut berisi:

plugin/prism/
├── prism.css
└── prism.js

Ada dua tempat yang harus ditambahkan.

CSS

CSS diperlukan untuk tematik kode. Ditambahkan di elemen HEAD sehabis berkas CSS tematik.

 

<html>
<head>
<!-- ... -->
                <link rel="stylesheet" href="css/theme/beige.css">
                <link rel="stylesheet" href="plugin/prism/prism.css">
<!-- ... -->
</head>
<body>
<!-- ... -->
</body>

Setelah ini Javascript.

Javascript

Ubah konfigurasi di perintah:

Reveal.initialize();

Tambahkan berkas Javascript tersebut:

Reveal.initialize({
  dependencies: [
    { src: 'plugin/prism/prism.js' },
  ]
});

Contoh Penggunaan

Kode di HTML:

<section>
     <h2>Slide 3</h2>
     <pre><code class="language-html" data-trim data-noescape>
&#60;pre&gt;&#60;code class="language-bash"&gt;$ echo Test &#60;/code&gt;&#60;/pre&gt;
     </code></pre>
</section>

Hasilnya:

Highlight

Highlight

Fitur Markdown

Buat orang-orang yang terbiasa mengisi WIKI, Github Pages, dan sejenisnya, bahasa Markdown lebih sederhana daripada harus mengetik elemen HTML.

Unduh berkas-berkas seperti biasa.

mkdir -p plugin/markdown
wget https://raw.githubusercontent.com/hakimel/reveal.js/master/plugin/markdown/markdown.js -O plugin/markdown/markdown.js
wget https://raw.githubusercontent.com/markedjs/marked/master/marked.min.js -O plugin/markdown/marked.js

Javascript

Ubah konfigurasi di perintah:

Reveal.initialize();

Tambahkan kedua berkas tersebut:

Reveal.initialize({
  dependencies: [
    { src: 'plugin/prism/prism.js' },
    { src: 'plugin/markdown/marked.js' },
    { src: 'plugin/markdown/markdown.js' },
  ]
});

Contoh Penggunaan

<section data-markdown><script type="text/template">
## Slide 4: Markdown

```bash 
echo "Hello World!"
```
</script></section>

Hasilnya:

Created with Markdown

Created with Markdown

Terakhir

Saya lelah. Nanti lanjut (kalau tidak malas). Setidaknya saya sudah memberikan gambaran bagaimana cara menggunakan Reveal JS dan menambahkan plugin tambahan.

Bacaan Lebih Lanjut

on 11 Apr 2018 06:25 AM

08 Apr 2018

Halo, lama tidak menulis. Berikut akan saya sampaikan bagaimana cara XAMPP untuk jalan secara otomatis pada sistem operasi GnU/Linux Ubuntu 16.04.

Menurut Wikipedia, fungsi XAMPP sebagai server yang berdiri sendiri (localhost), yang terdiri atas program Apache HTTP Server, MySQL database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl. Nama XAMPP merupakan singkatan dari X (empat sistem operasi apapun), Apache, MySQL, PHP dan Perl. Program ini tersedia dalam GNU General Public License dan bebas, merupakan web server yang mudah digunakan yang dapat melayani tampilan halaman web yang dinamis. Untuk mendapatkanya dapat mendownload langsung dari web resminya.

Untuk dapat menjalankan XAMPP ke dalam service, yang perlu dilakukan adalah sunting berkas rc.local dengan perintah:
$ sudo gedit /etc/rc.local
Silahkan gunakan aplikasi penyunting berkas yang Anda sukai, tidak musti Gedit, kemudian, tambahkan dua baris perintah berikut:
cd /opt/lampp
sudo ./lampp start
Tambahkan dua baris tersebut di atas baris perintah dengan tulisan:
exit 0
Setelah menambahkan dua baris tersebut di atas, silahkan mula-ulang sistem operasi GnU/Linux Ubuntu 16.04 Anda.

Semoga bermanfaat :).


Bahan bacaan:

  1. https://askubuntu.com/questions/870099/auto-start-xampp-in-ubuntu-16-04 
  2. https://id.wikipedia.org/wiki/XAMPP

on 08 Apr 2018 02:46 AM

31 Mar 2018

What is stack register?
Stack is a group of memory which is use for storage informations during the execution of program. It’s temporary area in CPU.
How it work?
The First data that goes into the stack is the Last data that come out from the stack.

In this article I will show you how it works using gdb (gnu debugger).
First, I create a program named stack in assembly language. I name the file stack.asm.

section .text
global _start
_start:

push 0xAAAAAAAA
push 0xBBBBBBBB
push 0xCCCCCCCC
push 0xDDDDDDDD

pop eax
pop ebx
pop ecx
pop edx

exit:
mov eax,1
mov ebx,0
int 0x80
stack01
Then I compile with “nasm” and link with “ld”. I add option -gstabs+ to tell nasm to save debugging information that I will use in gdb to print the line of assembler code that correspond to each assembler instruction. Since my processor is 32 bit, the format will be elf32.

$ nasm -f elf32 -gstabs+ stack.asm -o stack.o
$ ld stack.o – stack
stack02
Now, let start using gdb.
Type “gdb” followed by the program “stack”.

$ gdb stack
GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type “show copying”
and “show warranty” for details.
This GDB was configured as “i686-linux-gnu”.
For bug reporting instructions, please see:

Reading symbols from /home/darklinux/assembly/stack…done.
(gdb)

I set the breakpoint at “_start” so I can run the instruction line by line.
(gdb) break _start
Breakpoint 1 at 0x8048060

I set the display so I can read the assembler code more clear.
(gdb) set disassembly-flavor intel

I display the code.
(gdb) disassemble _start
Dump of assembler code for function _start:
0x08048060 : push 0xaaaaaaaa
0x08048065 : push 0xbbbbbbbb
0x0804806a : push 0xcccccccc
0x0804806f : push 0xdddddddd
0x08048074 : pop eax
0x08048075 : pop ebx
0x08048076 : pop ecx
0x08048077 : pop edx
End of assembler dump.

And run the program.
(gdb) run
Starting program: /home/darklinux/assembly/stack

Breakpoint 1, 0x08048060 in _start ()

I check where the current instruction position. It mean that gdb will start running the current instruction.
(gdb) disassemble _start
Dump of assembler code for function _start:
=> 0x08048060 : push 0xaaaaaaaa
0x08048065 : push 0xbbbbbbbb
0x0804806a : push 0xcccccccc
0x0804806f : push 0xdddddddd
0x08048074 : pop eax
0x08048075 : pop ebx
0x08048076 : pop ecx
0x08048077 : pop edx
End of assembler dump.
stack03

I can check also by display the content of eip register with “x/i $eip” commnad.
(gdb) x/i $eip
=> 0x8048060 : push 0xaaaaaaaa

I check the stack, still empty.
(gdb) x/4wx $esp
0xbffff3f0: 0x00000001 0xbffff564 0x00000000 0xbffff583

Then, I execute one machine instruction using si/stepi or step instruction.
(gdb) si
0x08048065 in _start ()

Now the current position is on address 0x08048065. The instruction at 0x08048060 has already executed.
(gdb) disassemble _start
Dump of assembler code for function _start:
0x08048060 : push 0xaaaaaaaa
=> 0x08048065 : push 0xbbbbbbbb
0x0804806a : push 0xcccccccc
0x0804806f : push 0xdddddddd
0x08048074 : pop eax
0x08048075 : pop ebx
0x08048076 : pop ecx
0x08048077 : pop edx
End of assembler dump.
(gdb) x/i $eip
=> 0x8048065 : push 0xbbbbbbbb

Now, you see that first memory in the stack already fill with “aaaaaaaa”.
(gdb) x/4wx $esp
0xbffff3ec: 0xaaaaaaaa 0x00000001 0xbffff564 0x00000000

Run another one machine instruction.
(gdb) si
0x0804806a in _start ()
(gdb) x/i $eip
=> 0x804806a : push 0xcccccccc

Second memory in stack filled with “bbbbbbbb”.
(gdb) x/4wx $esp
0xbffff3e8: 0xbbbbbbbb 0xaaaaaaaa 0x00000001 0xbffff564

Run another one machine instruction.
(gdb) si
0x0804806f in _start ()
(gdb) x/i $eip
=> 0x804806f : push 0xdddddddd
Third memory is filled with “cccccccc
(gdb) x/4wx $esp
0xbffff3e4: 0xcccccccc 0xbbbbbbbb 0xaaaaaaaa 0x00000001

Run another one machine instruction.
(gdb) si
0x08048074 in _start ()
(gdb) x/i $eip
=> 0x8048074 : pop eax
Fouth memory in stack is filled with “dddddddd”.
(gdb) x/4xw $esp
0xbffff3e0: 0xdddddddd 0xcccccccc 0xbbbbbbbb 0xaaaaaaaa

(gdb) disassemble _start
Dump of assembler code for function _start:
0x08048060 : push 0xaaaaaaaa
0x08048065 : push 0xbbbbbbbb
0x0804806a : push 0xcccccccc
0x0804806f : push 0xdddddddd
=> 0x08048074 : pop eax
0x08048075 : pop ebx
0x08048076 : pop ecx
0x08048077 : pop edx
End of assembler dump.
Now, all data has already push into the stack with the following sequence.
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd
stack04

I check the content of eax, ebx ecx and edx register. Still empty.
(gdb) info register eax ebx ecx edx
eax 0x0 0
ebx 0x0 0
ecx 0x0 0
edx 0x0 0
And the 4 data in stack are still there.
(gdb) x/4xw $esp
0xbffff3e0: 0xdddddddd 0xcccccccc 0xbbbbbbbb 0xaaaaaaaa

Run another one machine instruction.
(gdb) si
0x08048075 in _start ()
(gdb) x/i $eip
=> 0x8048075 : pop ebx

The instruction is to pop up the data on the top of the stack to eax register. As you can see the eax register is filled with “dddddddd” data.
(gdb) info register eax ebx ecx edx
eax 0xdddddddd -572662307
ebx 0x0 0
ecx 0x0 0
edx 0x0 0

I check the stack memory, 1 stack memory has already pop out. Only left 3 data.
(gdb) x/4xw $esp
0xbffff3e4: 0xcccccccc 0xbbbbbbbb 0xaaaaaaaa 0x00000001

Run another one machine instruction.
(gdb) si
0x08048076 in _start ()
(gdb) x/i $eip
=> 0x8048076 : pop ecx
It’s the second data pop out from the stack. Two data left.
(gdb) x/4xw $esp
0xbffff3e8: 0xbbbbbbbb 0xaaaaaaaa 0x00000001 0xbffff564
(gdb) info registers eax ebx ecx edx
eax 0xdddddddd -572662307
ebx 0xcccccccc -858993460
ecx 0x0 0
edx 0x0 0
(gdb)
stack05.png

Run another one machine instruction.
(gdb) si
0x08048077 in _start ()
(gdb) x/i $eip
=> 0x8048077 : pop edx
It’s the third data pop out from the stack. One data left.
(gdb) x/4xw $esp
0xbffff3ec: 0xaaaaaaaa 0x00000001 0xbffff564 0x00000000
(gdb) info register eax ebx ecx edx
eax 0xdddddddd -572662307
ebx 0xcccccccc -858993460
ecx 0xbbbbbbbb -1145324613
edx 0x0 0

Run another one machine instruction.
(gdb) si
0x08048078 in exit ()
(gdb) x/i $eip
=> 0x8048078 : mov eax,0x1
It’s the fourth data pop out from the stack. All gone.
(gdb) x/4xw $esp
0xbffff3f0: 0x00000001 0xbffff564 0x00000000 0xbffff583

The eax, ebx, ecx and edx are filled with data and the sequence are:
dddddddd
cccccccc
bbbbbbbb
aaaaaaaa

(gdb) info register eax ebx ecx edx
eax 0xdddddddd -572662307
ebx 0xcccccccc -858993460
ecx 0xbbbbbbbb -1145324613
edx 0xaaaaaaaa -1431655766
(gdb) disassemble _start
Dump of assembler code for function _start:
0x08048060 : push 0xaaaaaaaa
0x08048065 : push 0xbbbbbbbb
0x0804806a : push 0xcccccccc
0x0804806f : push 0xdddddddd
0x08048074 : pop eax
0x08048075 : pop ebx
0x08048076 : pop ecx
0x08048077 : pop edx
End of assembler dump.
(gdb)
stack06.png

Hope this tutorial can explain more clear about how stack CPUx86 work.

on 31 Mar 2018 03:03 PM

29 Mar 2018

Konferensi Lagi

Andika Triwidada

23 Maret kemarin, saya mengisi acara workshop LibreOffice di PENS, Surabaya. Sebenarnya saat mengisi CFP, saya hanya mengusulkan topik yang menjadi sesi ke-2 workshop, yaitu kurang lebih menguji dan memperbaiki terjemahan, yang saya pikir cukup untuk mengisi satu sesi sekitar 60 menit. Tapi ternyata panitia menodong dan memperluas usulan CFP menjadi workshop sehari penuh. Apa boleh buat. Sudah
on 29 Mar 2018 07:06 PM

14 Mar 2018

Aktivasi Windows
Terkadang di dunia ini kita tidak dapat memilih apa yang harus kita kerjakan. — anon IT yang dipaksa mengoprek Windoze.

Ketika pemasangan Windows, seharusnya Windows yang sudah dipasang dengan lisensi volum Universitas Indonesia menggunakan DNS mengarah ke ms.ui.ac.id. Namun, ada kalanya DNS tersebut tidak dapat diakses. Misalnya, karena Windows tersebut berjalan sebagai sistem operasi tamu, berada di luar jaringan UI atau dalam NAT, dan lain sebagainya.

Saya sendiri sudah frustrasi mencari cara mengonfigurasi DNS di Windows. Maklum, terakhir saya pengguna Windows XP. Itu sebabnya, dapat digunakan cara kedua yang lebih familiar.

Jalankan Powershell sebagai administrator

 → ketik “powershell”  klik kanan pada Windows Powershell  Run as administrator

Run Windows Powershell as administrator

Run Windows Powershell as administrator

Operasi selanjutnya dijalankan di dalam Windows Powershell.

Aktivasi Windows

cd \Windows\system32
cscript slmgr.vbs /skms km-01.ms.ui.ac.id
cscript slmgr.vbs /ato

Penjalanan skrip yang pertama adalah mengonfigurasi secara manual KMS UI. Yang kedua adalah menjalankan aktivasi Windows.

Windows Activation on Universitas Indonesia volume license

Windows Activation on Universitas Indonesia volume license

Kalau lisensi Anda belum lisensi Universitas Indonesia, silakan hubungi staf TIK fakultas terdekat. Atau, hubungi Helpdesk DSTI untuk pemanduan pemasangan lisensi. Setahu saya, semua sivitas akademika UI berhak memiliki lisensi Windows asli dan layanan Office 365 dari Universitas Indonesia.

 

Bacaan Lebih Lanjut

on 14 Mar 2018 11:11 PM

13 Mar 2018

Memperkenalkan: Kamaya

Arif Syamsudin


Seorang kawan dari Perpustakaan Kemdikbud meminta bantuan untuk menyebarkan informasi tentang Kamaya. Kamaya? Iya, Kamaya. Merupakan suatu inisiasi pengumpulan data bibliografi perpustakaan yang dilakukan oleh Perpustakaan Kemdikbud bekerjasama dengan Pustekkom Kemdikbud. Secara teknis, Kamaya bisa disebut sebagai Katalog Bersama atau mungkin biasa dikenal sebagai Union Catalog. Untuk lebih jelasnya, silahkan ditelaah informasi yang diberikan oleh kawan saya tersebut.

******

Kamaya (Pustaka Maya) adalah Katalog Induk Perpustakaan Sekolah Indonesia yang menghimpun data katalog koleksi perpustakaan sekolah yang menggunakan SLiMS (Senayan Library Management System) sebagai sistem automasi perpustakaannya.

Kamaya dikembangkan oleh Perpustakaan Kemendikbud bekerjasama dengan Pustekkom Kemendikbud dan SDC (Senayan Developer Community).

Kamaya diharapkan dapat menjadi sumber informasi dan referensi sekaligus peta perpustakaan sekolah di Indonesia yang telah terautomasi.

Informasi bergabung dan beranda laman Kamaya dapat diakses melalui tautan: https://psbsekolah.kemdikbud.go.id/kamaya/

Informasi Pengelola Kamaya
Perpustakaan Kemendikbud
Gedung A Lantai 1
Jl. Jenderal Sudirman, Senayan, Jakarta Pusat 10270
Tlp. 021-5707870
Fax. 021-5731228
Pos-El: kamaya@kemdikbud.go.id
on 13 Mar 2018 05:48 AM

08 Mar 2018

About KDE

Karena WCry 2.0, protokol SMBv1 sudah tidak berlaku lagi. Kebanyakan peladen berkas sudah berjalan di versi 2 ke atas. Masalahnya, banyak penjelajah berkas masih menggunakan SMBv1 secara baku. Untuk itu, perlu diaktifkan klien versi 2 ke atas.

Saya pernah membuat sebuah retasan dengan memasang berkas tersebut menggunakan CIFS. Ternyata ada cara yang lebih baik, yakni dengan mengonfigurasi pustaka klien SMB untuk mengaktifkan sampai versi 3.

Caranya:

$ mkdir ~/.smb
$ cat > ~/.smb/smb.conf  << EOF
[global]
    client max protocol = SMB3
EOF

Selesai.

Bacaan Lebih Lanjut

on 08 Mar 2018 01:45 PM
postgresql

Masih ingat tutorial saya tentang Patroni dahulu? Saya akan membuat tulisan lengkap dari nol sampai berjalan. Di akhir tutorial ini Anda bisa membuat kluster Patroni secara manual. Kalau Anda devops dan tertarik menulis resep untuk Ansible, Puppet, dan sejenisnya, saya harap artikel ini bisa menjadi acuan untuk mengerti Patroni.

Mesin-mesin yang Ada

Saya membagi setiap mesin yang digunakan dengan dua IP. Satu subnet IP internal yang digunakan untuk setiap mesin dalam kluster berkomunikasi dan satu subnet IP yang digunakan untuk akses luar. Implementasi fisik dengan menggunakan dua kartu jaringan (atau dua bonding fisik)  yang berbeda. Perbedaan jaringan untuk komunikasi internal dan komunikasi dengan klien ini selain menyediakan keamanan dalam isolasi, juga membuat koneksi internal atau pun eksternal tidak saling mengganggu.

Untuk mengurangi kompleksitas tutorial ini, saya hanya menyediakan satu mesin HAProxy dan satu mesin etcd. Fokus tulisan ini adalah untuk ketersediaan PostgreSQL. Untuk membuat ketersediaan HAProxy dan etcd akan dibahas lain kali bila ada waktu [baca: kalau tidak malas].

Agar tidak membingungkan, saya selalu mempraktikkan penamaan kluster ditambah dengan prefiks nama aplikasi. Hal ini penting karena di perawanan yang sudah semakin terotomatisasi, kadang kita suka bingung kalau konfigurasi sudah tidak ada lagi.

konfigurasi

Konfigurasi server yang dipakai

Yak, intinya ada 5 mesin untuk tutorial kali ini. Saya menggunakan GNU/Linux Debian 9 karena itu standar sistem operasi UI. Untuk sistem operasi lain saya rasa tidak ada yang berbeda karena kali ini saya tidak menggunakan paket repositori.

Untuk memudahkan, pastikan kelima mesin ini memiliki berkas /etc/hosts yang berisi kelima host.

$ sudo tee -a  /etc/hosts << EOF
192.168.100.1   haproxy0-nyata
192.168.100.2   etcd0-nyata
192.168.100.3   pg1-nyata
192.168.100.4   pg2-nyata
192.168.100.5   pg3-nyata
EOF

Selanjutnya, akan dibuatkan etcd terlebih dahulu sebagai inti yang mengatur kluster.

ETCD

Aplikasi etcd adalah sebuah basisdata konfigurasi yang digunakan status. Aplikasi etcd tidak ada di repositori Debian 9. Saya mengunduh versi terbaru dari CoreOS dan memasang manual.

wget https://github.com/coreos/etcd/releases/download/v3.3.1/etcd-v3.3.1-linux-amd64.tar.gz
tar xvfz etcd-v3.3.1-linux-amd64.tar.gz
sudo cp etcd-v3.3.1-linux-amd64/etcd /usr/local/bin

Konfigurasi

Aplikasi etcd berisi satu binari. Untuk konfigurasi, buat manual.

$ sudo /etc/etcd.conf.yml << EOF
# This is the configuration file for the etcd server.

# Human-readable name for this member.
name: 'etcd0-nyata'

# Path to the data directory.
data-dir: /var/lib/etcd/data

# Path to the dedicated wal directory.
wal-dir: /var/lib/etcd/wal

# Number of committed transactions to trigger a snapshot to disk.
snapshot-count: 10000

# Time (in milliseconds) of a heartbeat interval.
heartbeat-interval: 100

# Time (in milliseconds) for an election to timeout.
election-timeout: 1000

# Raise alarms when backend size exceeds the given quota. 0 means use the
# default quota.
quota-backend-bytes: 0

# List of comma separated URLs to listen on for peer traffic.
listen-peer-urls: http://192.168.100.2:2380

# List of comma separated URLs to listen on for client traffic.
listen-client-urls: http://localhost:2379,http://192.168.100.2:2379

# Maximum number of snapshot files to retain (0 is unlimited).
max-snapshots: 5

# Maximum number of wal files to retain (0 is unlimited).
max-wals: 5

# Comma-separated white list of origins for CORS (cross-origin resource sharing).
cors: 

# List of this member's peer URLs to advertise to the rest of the cluster.
# The URLs needed to be a comma-separated list.
initial-advertise-peer-urls: http://192.168.100.2:2380

# List of this member's client URLs to advertise to the public.
# The URLs needed to be a comma-separated list.
advertise-client-urls: http://192.168.100.2:2379

# Discovery URL used to bootstrap the cluster.
discovery: 

# Valid values include 'exit', 'proxy'
discovery-fallback: 'proxy'

# HTTP proxy to use for traffic to discovery service.
discovery-proxy: 

# DNS domain used to bootstrap initial cluster.
discovery-srv: 

# Initial cluster configuration for bootstrapping.
initial-cluster: etcd0-scele=http://192.168.100.2:2380,

# Initial cluster token for the etcd cluster during bootstrap.
initial-cluster-token: 'etcd-nyata-cluster'

# Initial cluster state ('new' or 'existing').
initial-cluster-state: 'new'

# Reject reconfiguration requests that would cause quorum loss.
strict-reconfig-check: false

# Valid values include 'on', 'readonly', 'off'
proxy: 'off'

# Time (in milliseconds) an endpoint will be held in a failed state.
proxy-failure-wait: 5000

# Time (in milliseconds) of the endpoints refresh interval.
proxy-refresh-interval: 30000

# Time (in milliseconds) for a dial to timeout.
proxy-dial-timeout: 1000

# Time (in milliseconds) for a write to timeout.
proxy-write-timeout: 5000

# Time (in milliseconds) for a read to timeout.
proxy-read-timeout: 0

# Enable debug-level logging for etcd.
debug: false

# Specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG'.
log-package-levels: 

# Force to create a new one member cluster.
force-new-cluster: true
EOF

Layanan

Agar dapat dijalankan secara sistem, perlu dibuatkan layanan systemd secara manual.

$ sudo tee -a /etc/systemd/system/etcd.service << EOF
[Unit]
Description=etcd key-value store
Documentation=https://github.com/coreos/etcd
After=network.target

[Service]
User=etcd
Group=etcd
Type=notify
ExecStart=/bin/bash --login -c "/usr/local/bin/etcd --config-file /etc/etcd.conf.yml"
Restart=always
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target
EOF

Pengaktifan Layanan etcd

Perhatikan bahwa untuk contoh kali ini saya menggunakan akun etcd dan grup etcd. Praktik aman selalu jalankan layanan sebagai pengguna biasa, bukan root. Buat pengguna baru ini.

sudo adduser --system --home /var/lib/etcd --group etcd

Bagian terakhir dari etcd adalah mengaktifkan dan menjalankan layanan etcd.

sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd

Baris daemon-reload adalah agar systemd membaca konfigurasi yang baru saja dibuat. Baris enable untuk mendaftarkan etcd sebagai layanan yang dijalankan otomatis saat mesin baru mulai. Baris terakhir untuk menjalankan layanan etcd.

PostgreSQL

Berbeda dengan tutorial yang lalu, saya akan membuat konfigurasi per mesin agar lebih menggambarkan apa yang terjadi. Sebelum memulai, saya asumsikan bahwa setiap mesin PostgreSQL pengguna root memiliki kunci SSH sehingga antar mesin bisa masuk tanpa kunci.

Cara paling gampang, di salah satu mesin buat kunci.

ssh-keygen -t ecdsa

Lalu, taruh kunci publik dan privat ke root. Saya asumsikan bahwa kita bekerja di mesin pg1-nyata.

# asumsi kerja di mesin pg1-nyata
sudo mkdir /root/.ssh/
sudo cp ~/.ssh/id_ecdsa /root/.ssh/
cat ~/.ssh/id_ecdsa.pub | sudo tee -a /root/.ssh/authorized_keys

# Transfer
scp ~/.ssh/id_ecdsa ~/.ssh/id_ecdsa.pub pg2-nyata:/tmp
scp ~/.ssh/id_ecdsa ~/.ssh/id_ecdsa.pub pg3-nyata:/tmp

# ke mesin pg2-nyata
ssh pg2-nyata
sudo mkdir /root/.ssh/
sudo cp ~/.ssh/id_ecdsa /root/.ssh/
cat ~/.ssh/id_ecdsa.pub | sudo tee -a /root/.ssh/authorized_keys
rm /tmp/id_ecdsa*
exit

# ke mesin pg3-nyata
ssh pg3-nyata
sudo mkdir /root/.ssh/
sudo cp ~/.ssh/id_ecdsa /root/.ssh/
cat ~/.ssh/id_ecdsa.pub | sudo tee -a /root/.ssh/authorized_keys
rm /tmp/id_ecdsa*
exit

Ini saya pasang secara manual. Biasanya untuk Vagrant, Proxmox, dan sejenisnya sudah menyediakan opsi pemasangan kunci SSH di konfigurasi/plugin mereka. Namun, untuk kelengkapan tutorial ini saya tuliskan saja manual. Saya sendiri sebenarnya hanya memasang satu mesin; memasang PostgreSQL; dan baru diklon menjadi dua mesin lainnya.

Pemasangan PostgreSQL

Saya kali ini menggunakan PostgreSQL yang saya kompilasi sendiri. Mengapa? Karena hasil kompilasi lebih irit dan saya mau ada variasi tulisan. Di blog saya ada kok cara-caranya untuk memasang versi repo.

Pemasangan PostgreSQL setiap mesin sama. Untuk memasang paket ketergantungan di setiap mesin jalankan:

sudo apt -y install build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev pkg-config libsystemd-dev

Unduh PostgreSQL. Saya memakai versi stabil terbaru, 10.2. Kebetulan juga, saya ada peladen cermin di samping ruangan:

wget http://kambing.ui.ac.id/postgresql/source/v10.2/postgresql-10.2.tar.bz2
tar xvfj postgresql-10.2.tar.bz2
cd postgresql-10.2
sed -i '/DEFAULT_PGSOCKET_DIR/s@/tmp@/run/postgresql@' src/include/pg_config_manual.h
./configure --prefix=/usr --with-icu --with-openssl --with-systemd --enable-thread-safety --docdir=/usr/share/doc/postgresql-10.2 CFLAGS="-O3 -march=native -mtune=native -pipe"
make -j$(nproc)
sudo make install

Saya melakukan optimasi CFLAGS untuk kompilasi. Hal ini karena saya tahu bahwa peladen di tempat saya itu homogen. Tapi, kalau misalnya Anda memasang di penyedia awan, sebaiknya  CFLAGS jangan disertakan.

Selanjutnya pemasangan Patroni.

Patroni

Patroni merupakan skrip Python. Untuk memasang Patroni, pastikan Python PIP dipasang. Saya memilih Python3. Namun, biasanya yang digunakan Python2. Saya memakai Python3 karena saya keren.

sudo apt install python3-pip
sudo pip3 install --upgrade setuptools

Pasang Patroni dan plugin etcd-nya.

sudo pip3 install psycopg2-binary
sudo -E pip3 install patroni[etcd]

Buat pengguna postgres

sudo adduser --system --home /var/lib/postgresql --group postgres

Buatkan layanan sistem.

$ sudo tee /etc/systemd/system/patroni.service << EOF
[Unit]
Description=Runners to orchestrate a high-availability PostgreSQL
After=syslog.target network.target
 
[Service]
Type=simple
 
User=postgres
Group=postgres
 
Environment="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
ExecStart=/usr/local/bin/patroni /etc/patroni.yml
 
KillMode=process
 
TimeoutSec=30
 
Restart=no
 
[Install]
WantedBy=multi-user.target
EOF

Selanjutnya, buat konfigurasi per mesin.

Konfigurasi Per Mesin

Buat konfigurasi per mesin /etc/patroni.yml

scope: postgres
namespace: /pg-nyata/
name: pg1-nyata
 
restapi:
    listen: 192.168.100.3:8008
    connect_address: 192.168.100.3:8008
 
etcd:
    host: 192.168.100.2:2379
 
bootstrap:
    dcs:
        ttl: 30
        loop_wait: 10
        retry_timeout: 10
        maximum_lag_on_failover: 1048576
        postgresql:
            use_pg_rewind: true
 
    initdb:
    - encoding: UTF8
    - data-checksums
 
    pg_hba:
    - host replication replicator 127.0.0.1/32 md5
    - host replication replicator 192.168.100.3/0 md5
    - host replication replicator 192.168.100.4/0 md5
    - host replication replicator 192.168.100.5/0 md5
    - host all all 0.0.0.0/0 md5
 
    users:
        admin:
            password: aiwaQuaeHuojeuyai2fiemai6Reeneix
            options:
                - createrole
                - createdb
 
postgresql:
    listen: 192.168.100.3:5432
    connect_address: 192.168.100.3:5432
    data_dir: /var/lib/postgresql/10.2-patroni
    pgpass: /tmp/pgpass
    authentication:
        replication:
            username: replicator
            password: zee0ohjisai5ohCohsaegho5gaeN8Xei
        superuser:
            username: postgres
            password: saichae9Aich0xeen2Otethaduphiepo
    parameters:
        unix_socket_directories: '.'
 
tags:
    nofailover: false
    noloadbalance: false
    clonefrom: false
    nosync: false

Contoh konfigurasi yang tertulis untuk mesin pg1-nyata. Untuk pg2-nyata dan pg3-nyata ubah baris ke-3 name dengan nama mesin, dan setiap baris listen dan connect_address dengan IP per mesin.

Contoh perbedaan pg1-nyata dan pg2-nyata.

$ diff pg{1,2}-nyata/etc/patroni.yml -u
--- pg1-nyata/etc/patroni.yml   2018-03-08 10:03:26.502995392 +0700
+++ pg2-nyata/etc/patroni.yml   2018-03-08 10:08:35.869743378 +0700
@@ -1,14 +1,14 @@
 scope: postgres
 namespace: /pg-nyata/
-name: pg1-nyata
- 
+name: pg2-nyata
+
 restapi:
-    listen: 192.168.100.3:8008
-    connect_address: 192.168.100.3:8008
- 
+    listen: 192.168.100.4:8008
+    connect_address: 192.168.100.4:8008
+
 etcd:
     host: 192.168.100.2:2379
- 
+
 bootstrap:
     dcs:
         ttl: 30
@@ -17,28 +17,28 @@
         maximum_lag_on_failover: 1048576
         postgresql:
             use_pg_rewind: true
- 
+
     initdb:
     - encoding: UTF8
     - data-checksums
- 
+
     pg_hba:
     - host replication replicator 127.0.0.1/32 md5
     - host replication replicator 192.168.100.3/0 md5
     - host replication replicator 192.168.100.4/0 md5
     - host replication replicator 192.168.100.5/0 md5
     - host all all 0.0.0.0/0 md5
- 
+
     users:
         admin:
             password: aiwaQuaeHuojeuyai2fiemai6Reeneix
             options:
                 - createrole
                 - createdb
- 
+
 postgresql:
-    listen: 192.168.100.3:5432
-    connect_address: 192.168.100.3:5432
+    listen: 192.168.100.4:5432
+    connect_address: 192.168.100.4:5432
     data_dir: /var/lib/postgresql/10.2-patroni
     pgpass: /tmp/pgpass
     authentication:
@@ -50,7 +50,7 @@
             password: saichae9Aich0xeen2Otethaduphiepo
     parameters:
         unix_socket_directories: '.'
- 
+
 tags:
     nofailover: false
     noloadbalance: false

Semoga dengan ini tidak ada salah ganti atau terlewat.

Pengaktifan Layanan Patroni

Setelah konfigurasi dan unit layanan Patroni terpasang, layanan Patroni sudah bisa dijalankan. Untuk setiap mesin, jalankan:

sudo systemctl daemon-reload
sudo systemctl enable patroni
sudo systemctl start patroni

Satu langkah lagi.

HAProxy

Bagian yang paling mudah saya salin saja, ya, perintahnya.

sudo apt install haproxy

Konfigurasi:

$ sudo tee /etc/haproxy/haproxy.cfg << EOF
global
    maxconn 100
 
defaults
    log global
    mode tcp
    retries 2
    timeout client 30m
    timeout connect 4s
    timeout server 30m
    timeout check 5s
 
listen stats
    mode http
    bind *:7000
    stats enable
    stats uri /
 
listen postgres
    bind *:5000
    option httpchk
    http-check expect status 200
    default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
    server postgresql_192.168.100.3_5432 192.168.100.3:5432 maxconn 100 check port 8008
    server postgresql_192.168.100.4_5432 192.168.100.4:5432 maxconn 100 check port 8008
    server postgresql_192.168.100.5_5432 192.168.100.5:5432 maxconn 100 check port 8008
EOF

Lalu,

sudo systemctl restart haproxy

Selesai.

Bacaan Lebih Lanjut

on 08 Mar 2018 06:34 AM

According to the Wikipedia, an enterprise service bus (ESB) implements a communication system between mutually interacting software applications in a service-oriented architecture (SOA). In other words, it allows communication and data sharing among several heterogenous application and database platforms through a common protocol. In a company that each of its department has their own information system already implemented using heterogenous platforms, an ESB allows an integration among different systems to achieve better interoperability, workflow and data synchronization.

One particular use case where ESB implementation is suitable is in the Indonesian government. The unitary republic consists of several central government institutions (such as ministries, and agencies) and hundreds of local provincial and municipal governments, in which each of them has several branches and departments. One problem of e-government implementation in those institutions is that each department have already build their own information system for themselves sporadically for their own purpose without any intra-department and intra-institutional common ground. Each department or institutions might uses a common database but because of the lack of integration, it tends to be unsynchronized and potentially creating some problems when providing a public service.

To achieve better integration among e-government systems within Indonesian governmental institutions, the Ministry of Communication and Information releases a Governmental ESB (GSB) system dubbed as MANTRA. The goal of this application is to facilitate data exchange among governmental institutions from different heterogenous databases and applications. It provides a common web API for a better interoperability. According to the ministry, currently the system are already been used in several ministries, agencies and provincial governments. One success implementation of GSB is the utilization of electronic identification number of all Indonesian residents for authentication purposes during state civil exam and phone number registration.

As an Indonesian, I really hope that our bureaucracy system getting better through a better intra-institutional integration. Currently, I feel that most of government institution still work for themselves and lacks cooperation

on 08 Mar 2018 03:00 AM

Semalam saya akhirnya naik taksi lagi, karena butuh cepat, kelihatan BlueBird di jalan, langsung stop, terus berangkat.

Saya sebenarnya menghindari topik pembicaraan soal demo kemarin. Takut menyinggung atau salah paham. Karena saya kurang simpatik dengan aksi mereka. Tapi tak disangka, justru pengemudinya yang duluan mengajak saya berbicara soal ini.

Pengemudi (P): Lihat berita soal demo taksi kemarin, Mas?

Saya (S): Iya. Rame banget ya. (berusaha netral)

P: Saya ikut tuh, Mas. (bangga)

S: Oh gitu, dari perusahaan emang ngutus ya? (sekalian lah, saya tanya aja)

P: Enggak sih. Itu demo paguyuban pengemudi, perusahaan gak ada hubungan. Jadi tiap pool taksi ngirim 20 orang.

S: Tapi kok di jalanan kayaknya banyak banget, Mas?

P: Ya itu yang ikut-ikutan. Kalau yang resmi itu, di tangannya diikat pita hitam. Itu yang rusuh-rusuh itu bukan yang demo resmi, Mas.

S: Tapi tetep aja pengemudi BlueBird kan?

P: Yang seragam biru dan mirip kaya kami kan bukan BlueBird aja, Mas. Orang-orang main tuduh aja.

S: Lah, videonya jelas gitu kok. Orang justru jadi kurang simpatik karena jelas banyak bukti-bukti videonya, Mas.

..hening..

S: Tapi sebenarnya kalau Mas sendiri, apa sih yang dituntut soal Uber sama GrabCar?

P: Ya ijinnya, sama tarifnya, Mas. Tarifnya kok kaya gitu. Harusnya disetarain lah sama yang lain.

S: Kalau soal ijin, mungkin ya. Saya gak paham sih soal hukum. Kalau soal tarif, kenapa pengemudi gak minta ke perusahaan buat nurunin tarif ya? Biar sama gitu dengan Uber atau GrabCar?

P: Ya mana mungkin, Mas. Kami ini rugi terus sekarang sejak ada taksi online-online ini.

S: Saya gak tahu sih kalau misal diturunin, perusahaan jadi rugi atau enggak, tapi kalau lihat laporan keuangan perusahaan BlueBird sih, akhir tahun 2015 aja, keuntungannya udah 800-an miliar loh, Mas. Itu udah untung loh, Mas. Bukan pemasukan. Apa gak mending ngurangin keuntungan perusahaan biar pengemudinya gak pusing. Kasih promo, atau bikin aplikasi yang sekelas online-online itulah gitu.

P: (hening)

Lalu si pengemudi berganti topik

P: Saya ini langsung dari kampung Mas. Habis demo besoknya saya pulang kampung ke Tegal. Kemarin malem saya balik lagi, nyampe pool jam 1-an pagi. Tidur-tidur bentar, setengah tiga pagi sudah jalan. Dari jam 3 pagi tadi sampe sekarang saya baru dapat segini, Mas! Jarinya sambil menunjuk mesin argo. Disitu tertera 481 ribu. Waktu menunjukkan sekitar pukul 10.30 malam.

S: Berapa kali bawa penumpang tuh, Mas?

P: Ini.. (Dia mencet tombol di argo, terus terlihat angka 11). Nih, dari subuh sampai malam gini saya baru dapat 11 kali tarikan. Duit cuma segitu. Bensin 100 persen di tanggung pengemudi. Nombok saya Mas. Bukan saya aja, semua pengemudi sekarang sepi banget, Mas. Ini kan gak adil. Kasian kami, Mas. Mau makan apa kalau kaya gini terus.

S: Kenapa kok jadi sepi, Mas?

P: Ya itu.. yang online-online itu.

S: Tapi orang-orang pada pindah ke yang online-online itu karena apa?

P: Ya itu.., tarifnya gak adil.

S: Kenapa gak tanya sama perusahaan kenapa tarifnya gak disamain?

(hening)

Lalu dia berlanjut curhat, istrinya jadi marah-marah karena penghasilan kurang dan seterusnya. Saya duduk saja mendengarkannya sampai saya tiba di tujuan.

Catatan:

Tulisan ini dibuat bulan Maret tahun 2016, tak lama setelah demo besar-besaran itu. Baru saya post sekarang (2 tahun kemudian). Entah kenapa. Sepertinya lupa publish. Saat tulisan ini dibuat, Go-Car belum ada. Aplikasi BlueBird juga masih jelek sekali.

Kondisi sekarang (Maret 2018). Aplikasi BlueBird di Android sudah bagus banget. Saya pribadi lumayan sering pakai. Terutama fitur EasyRide nya (naik taksi tanpa pemesanan online tetap bisa bayar cashless lewat aplikasinya). Lalu yang unik, BlueBird justru sudah ber-partner dengan Go-Jek.

Pemasukan BlueBird (kode saham BIRD) juga terus turun. Tahun 2015 penghasilannya sekitar 800-an miliar rupiah, tahun 2016 turun ke 500-an miliar. Sampai dengan kwartal 3 tahun 2017, pemasukannya “baru” 300-an miliar.

on 08 Mar 2018 02:19 AM

07 Mar 2018

The Indonesian civil service is the set of civil servants (Indonesian: Pegawai Negeri Sipil) working for government of Indonesia, either working in the central government (such as ministries, agencies) or in a local provincial/regencies/city government. Their function is either to handle government administration or to support public services such as in education, health and defense.

Like in many parts of the world, civil service is a highly regarded and prestigious career in Indonesia. Most Indonesian parents would like to see their children to work for the government. Even though a civil servant generally get a lower payment compared to a private sector, they get a good pension payment that make sure they will have an “adequate living” post-retirement.

The current legislation for Indonesian civil service system are based on the Law Number 5 2014 about State Civil Apparatus. The law preamble dictates that the government needs a civil servant who have integrity, professional, neutral and free from political interference, free from corruption, collusion and nepotism and be able to organize a public service to the community. As the preamble states, Indonesian civil servant have to be politically neutral in which they are forbidden to be a member of a political party. They are, however, still retain the right to vote unlike the Indonesian Police and Army forces who have to surrender the right. As corruption is so rampant in Indonesia, civil servants who abuses their power for their benefit will have to surrender their career entirely. Indonesian civil servant have to pledge to the national ideology of Pancasila and 1945 constitution.

The life of becoming a civil servant starts from a recruitment process. The annual civil service entrance exam (Indonesian: Seleksi Calon Pegawaian Negeri Sipil) is held to select best candidates to become a civil servant for a local government or a central government ministry/agency. The exam is really competitive with many fresh graduates or even someone who already work in a higher-salary private sector flocks together to become a bureaucrat. The exam is split into two parts. The first is basic competition test (Indonesian: Seleksi Kompetensi Dasar) consisting of nationhood knowledge test (history, constitution, ideology), general intelligence test (math, language, logic), and personal characteristic test. The second part is specialty competition test that measure the ability of a candidate to perform in their specific chosen position. When a candidate pass both test, they will get a maximum one year probation as “candidate of civil servant” (Indonesian: Calon Pegawai Negeri Sipil) and get 80% of proper monthly salary. During this period, candidates will get an orientation and some trainings from their office. They have to prove themselves worthy and pass those given trainings to become civil servant.

During their tenure, civil servants holds a specific rank and position. Rank can be promoted at some period of years based performance and qualification of a civil servant. There are three types of civil servant positions according to the State Civil Apparatus Law: Administrative (Indonesian: Jabatan Administrasi), Functional (Indonesian: Jabatan Fungsional) and High Officer (Indonesian: Jabatan Pimpinan Tinggi). Each civil servant can be transferred to a different position and/or a different agencies through a process called with/without their own will as civil servant have to pledge that they can be positioned anywhere inside Indonesian territory or any Indonesian embassy. Civil servants are entitled to several benefits such as: salaries, allowances, facilities, leave, pension and retirement, protection and career development.

That is some brief introduction of Indonesian civil service. If you have any other question, feel free to comment here. There might be another more-detailed article regarding Indonesian civil service system. Stay tune!

on 07 Mar 2018 04:11 AM

04 Mar 2018

[Ilustrasi: pexels.com]

Kalau ditanya soal film, saya senang genre thriller yang penuh intrik politik, “detektif-detektifan”, mafia, perebutan kekuasaan dan plot twist yang tak terduga. Contohnya seperti film Game of Thrones, House of Card, The Godfather, The Good Fellas, Billions, Designated Survivor, The Wire, Miss Sloane, dkk. Sayangnya, di Indonesia jarang sekali ada film bergenre seperti ini. Setahu saya (film modern) Indonesia yang bergenre seperti ini paling-paling cuma film “2014: Siapa di Atas Presiden?

Karena film Indonesia jarang yang bergenre seperti ini, akhirnya saya memutuskan berganti ke novel. Ternyata novel bergenre seperti ini pun jarang ada. Saya awalnya hanya tahu 2 novel karya Tere Liye saja yang masuk kriteria saya ini: Negeri di Ujung Tanduk, dan Negeri Para Bedebah. Cukup lumayan plotnya. Saya cuma kurang cocok di gaya bahasanya yang terlalu kaku. Mungkin niatnya nyeni gitu ya. Maklumlah, saya bukan pecinta sastra yang sampai gimana gitu.

Belakangan saya tahu ada novel Indonesia berjudul Sudut Mati karya Tsugaeda. Lumayan, tapi masih kurang nendang. Akhirnya saya baca novel pertamanya, Rencana Besar. Nah ini baru sesuai ekspektasi saya. Plot twistnya saya suka. Temanya juga gak umum, corporate-thriller gitu kalau bisa saya sebut. Selain itu ada intrik politik dengan serikat buruh. Keren.

Saya masih penasaran dengan novel-novel Indonesia lain. Ternyata ada yang temanya thriller, tapi berbau IT. Judulnya Spammer, karya dari Ronny Mailindra. Ceritanya tentang hacker/spammer, berhubungan dengan korupsi, dan KPK. Secara tema saya suka, tapi secara plot cerita saya kurang suka. Tapi untuk berani mengambil tema seperti ini saya acungi jempol. Oh iya, satu lagi part yang cukup membuat saya kaget, penceritaannya soal hacker, spammer dan hal-hal berbau IT nya terasa detail. Setelah kepo-kepo di Google, ternyata penulisnya memang bekerja di bidang IT. Boleh juga nih.

Saat ini novel lain yang masih belum saya selesaikan adalah Koin Terakhir karya Yogie Nugraha. Ini sih kalau menurut saya ala-ala Dan Brown banget sih plot ceritanya. Ceritanya tentang agen intelijen BIN yang mendapat tugas rahasia. Di sini yang bikin saya suka, karena saya yang tadinya justru lebih familiar dengan cerita-cerita FBI, CIA, NSA, Homeland, Secret Service, dll akhirnya jadi lebih tahu tentang dunia intelejen Indonesia sendiri. Tapi plot ceritanya sih sejauh ini menurut saya masih kurang nendang. Entahlah, nanti kalau sudah selesai, kalau ada waktu, nanti saya ulas.

Novel lain dalam genre ini yang sudah masuk radar saya adalah Pendosa Suci, yang juga karya Yogie Nugraha. Sama, bertema BIN (Badan Intelejen Negara) juga. Berikutnya ada novel Tiga Sandera Terakhir (tentang penyanderaan di Papua) dan Halaman Terkahir (kisah tentang Jendral Polisi Hoegeng).

Minat Masyarakat Indonesia

Saya kurang tahu soal minat atau genre favorit novel-novel di Indonesia. Tapi sepertinya, genre yang saya bahasa di sini ini tidak terlalu diminati di Indonesia. Buktinya, selain novel karya Tere Liye tadi (yang penulisnya lebih dikenal karena novel lainnya yang bertema cinta/religi), novel-novel di atas tadi sulit sekali ditemukan di toko buku (ini spesifik Gramedia sih). Selalu stok kosong. Saya cuma berhasil menemukan Sudut Mati saja.

Untungnya sih, judul-judul lainnya yang saya sebut di atas masih tersedia di Google Play Store. Di situlah akhirnya saya membeli novel tadi.

Sebenarnya ada beberapa judul novel lagi sih yang sempat masuk radar saya. Tapi karena tidak bisa saya temukan di toko buku maupun di Google Play store, akhirnya terpaksa saya lewatkan. Ini membuat saya bertanya-tanya, kenapa novel-novel yang tidak bisa saya temukan itu tidak dimasukkan saya ke Play Store ya? Ya kan gak ada ongkos biaya apa-apa (kayaknya). Siapa tahu ada lumayan banyak orang seperti saya yang lebih suka beli di Play Store. Lumayan kan?

*kenapa gak beli buku fisik di online shop saja? Saya males nanyain satu-satu ke penjualnya, stoknya masih ada atau enggak. Karena banyak yang majang di website, sebenarnya stoknya gak ada.

Btw, kalian ada tahu judul-judul novel Indonesia lainnya yang masuk  genre ini? Share dong di kolom komentar.

on 04 Mar 2018 06:35 PM

16 Feb 2018

Cleaned up my old article

Putu Wiramaswara Widya

If you happen to open my blog regularly (nobody does, and if you do, you are creepy), you will notice that I have been remove all of my blog posts. One of the reason is that I want to “refresh” my blog after many years of inactivity. Another reason is that most of posts are quite irrelevant as it is written like two or three years ago, with few of them are quite controversial (like the RT Bluetooth kernel patch for Linux that 99% won’t work anymore) so I just don’t want to attract more controversy and mislead anyone.

Some news for you who interested: after I graduated from Big Data department in Korea in mid-2017, now I am one of Indonesian Civil Servant (Known in Indonesian as PNS) working at Indonesian National Civil Service Agency (Indonesian: Badan Kepegawaian Negara). Thus, many non-CS related post regarding public administration, personnel management, Indonesian law will be presented here.

on 16 Feb 2018 05:43 AM

17 Nov 2017

SLiMS dan UCS

Arif Syamsudin

SLiMS dan UCS merupakan salah dua dari ekosistem yang dikembangkan menggunakan SLiMS sebagai bagian dari membangun jaringan data perpustakaan yang saling terhubung.

Catatan ini merupakan catatan pengingat bagi penulis dalam melakukan konfigurasi SLiMS dan UCS. Dalam melakukan konfigurasi SLiMS dan UCS, agar saling terhubung, diperlukan ketelitian agar konektivitas dapat dilakukan.

Pada catatan ini, versi SLiMS yang digunakan adalah SLiMS 7 Cendana dan UCS v2.0. Keduanya dapat diunduh melalui laman http://slims.web.id.

Konfigurasi dilakukan pada sisi SLiMS sebagai klien dan UCS sebagai penerima data. Pada catatan ini, diasumsikan bahwasanya pengguna sudah sukses melakukan instalasi SLiMS 7 Cendana dan UCS v2.0.

Langkah pertama adalah melakukan konfigurasi pada UCS dengan menyunting berkas ucserver.inc.php. Bagian yang harus disunting adalah:
// nodes configuration
$sysconf['node']['slims-node-00'] = array(
'id' => 'slims-node-00', // node id (must be UNIQUE, lowercase and not containing any spaces!)
'name' => 'Cendana Test', // node name
'password' => 'cendanates123', // this hash created with SHA1 algoritm
'baseurl' => 'http://localhost/slims7_cendana', // node base URL
'ip' => '' // IP address of node
);
Keterangan:
  • ['node']['slims-node-00'], pada bagian ini kita diminta untuk mendefinisikan nama node (simpul) yang akan digunakan pada klien. Di dalam contoh, nama simpul yang diberikan adalah slims-node-00;
  • 'id', pada baris ini, masukkan nama simpul seperti yang telah didefinisikan pada baris sebelumnya, yaitu slims-node-00. Pastikan isinya sudah sama. Karena kalau berbeda, nanti akan bermasalah pada saat mengunggah berkas dari klien ke peladen UCS;
  • 'name', pada baris ini berikan nama riil untuk simpul tersebut, sebagai contoh digunakan nama Cendana Test;
  • 'password', pada bagian ini masukkan kata lewat yang didefinisikan untuk simpul yang bersangkutan. Sebagai contoh dimasukkan kata lewat cendanates123;
  • 'baseurl', pada baris ini masukkan alamat akses dari klien. Sebagai contoh, karena klien berada di komputer yang tidak terhubung ke internet, maka bisa dimasukkan alamat http://localhost/slims7_cendana;
  • 'ip', baris ini bisa dikosongkan.

Jumlah simpul bisa ditambahkan sesuai dengan banyaknya lembaga yang akan berpartisi dalam UCS. Masing-masing simpul akan memiliki informasi setelan masing-masing yang akan diisikan pada konfigurasi masing-masing simpul. Pada contoh ini, jumlah simpul yang dimasukkan hanya satu.

Berikutnya, kita akan melakukan konfigurasi pada klien. Klien pada catatan ini adalah SLiMS 7 Cendana. Untuk mengaktifkan fitur pengumpulan data ke UCS, berkas pertama yang perlu kita konfigurasi adalah berkas sysconfig.inc.php. Cari bagian ini:
/**
* UCS global settings
*/
$sysconf['ucs']['enable'] = false;
// auto delete same record on UCS?
$sysconf['ucs']['auto_delete'] = false;
// auto insert new record to UCS?
$sysconf['ucs']['auto_insert'] = false;
Keterangan:
  • $sysconf['ucs']['enable'], bagian ini yang akan mengaktifkan fitur pengumpulan data pada klien. nilainya adalah false atau true. Untuk mengaktifkan fitur ini, ubah nilai false menjadi true;
  • $sysconf['ucs']['auto_delete'], baris ini akan mengaktifkan fitur penghapus data secara otomatis. Apabila nilainya kita ubah menjadi true maka ketika kita melakukan penghapusan data pada klien, maka data yang kita hapus tersebut secara otomatis juga akan terhapus dari UCS;
  • $sysconf['ucs']['auto_insert'], fitur ini melakukan otomatisasi pengunggahan data bibliografi yang dimasukkan ke dalam UCS. Ketika nilainya kita ubah menjadi true maka klien secara otomatis akan mengunggah data ke dalam UCS tanpa harus meng-klik pada tombol unggah.

Catatan, untuk dapat memantau perubahan-perubahan mendasar yang dilakukan dalam berkas sysconfig.inc.php, baiknya perubahan-perubahan tersebut dilokalisasi dalam berkas sysconfig.local.inc.php. Seperti contoh baris "UCS global settings" tadi, salin baris yang akan dimodifikasi ke dalam berkas sysconfig.local.inc.php, lalu lakukan perubahan pada baris yang sudah ditempelkan ke dalam berkas sysconfig.local.inc.php tersebut.

Berkas berikutnya adalah berkas ucnode.inc.php di dalam direktori SLiMS pada klien. Baris yang diubah adalah:
$ucs['serveraddr'] = 'http://localhost/ucs2'; // UCS server address. NO TRAILING SLASH! for local testing on Windows machine don't use localhost, use 127.0.0.1 instead
$node['id'] = 'slims-node-00'; // node ID
$node['password'] = 'cendanates123'; // default is s0beautifulday
$node['name'] = 'Cendana Test'; // node name
Keterangan:
  • $ucs['serveraddr'], pada baris ini masukkan alamat di mana peladen UCS, berada. Pada contoh di atas, karena UCS beserta klien SLiMS berada pada mesin yang sama, maka alamatnya seperti yang tertera pada contoh;
  • $node['id'], isikan dengan id yang sama seperti yang sudah didefinisikan pada berkas ucserver.inc.php;
  • $node['password'], isikan dengan kata lewat yang sama seperti yang sudah didefinisikan pada berkas ucserver.inc.php;
  • $node['name'], isikan dengan nama simpul yang sama seperti yang sudah didefinisikan pada berkas ucserver.inc.php.

Jika sudah dipastikan setelannya sesuai, maka sudah bisa dites untuk melakukan pengumpulan data dari klien ke UCS, seperti contoh gambar di bawah ini.




on 17 Nov 2017 01:52 PM

14 Nov 2017

For the past 5 years I’ve been relying heavily on my Buffalo Linkstation Quad NAS to store personal data. These personal data include photos I of my family that I have collected for over 16 years, to me these data is highly valuable.

Recently lightning stuck and the surge killed my Mikrotik Router, Cisco Cable Modem, LAN port of my Wifi, my son’s LG air conditioner, 4 light bulbs and the LAN Port of the Buffalo Linkstation Quad NAS Storage device sitting on my desk. 🙁

Checking the lightning rod, it turns out that an irresponsible has cut the cable that links the rod to ground. I suspect severity of the lighting strike was due to this fact.

If you have a different experience on preventing lighting surge please comment..

Back in June 2012 I estimated that 3TB of data will last me a long while in storing photos of my family, hence I did not create an array of disks to store my data. Instead I treated the 2 drives I had as individual drives each shared as separate network drives leaving me room to grow with 2 drive bays ready.

A week after the surge killed the LAN port, I pulled out the drives and placed it in a USB external case and hooked it up to a freshly installed desktop running Ubuntu 16.04 LTS. Knowing that it was formatted EXT4. I was hoping that the drives would be detected, in fact it didn’t :(.

Running

sudo fdisk -l

did not identify the filesystem type of the partition, instantly my heart raced thinking that the surge had also killed the hard drive. Being used as single drives I was convinced that I did not need to rebuild a disk array, and did not install mdadm. So I thought I needed to either rebuild the partition table or connect both hard drives and rebuild the array.

Luckily I got curios and wanted to know what the RAID array looks like, so I installed mdadm

sudo apt-get install mdadm

and auto magically all 3 partitions of the hard drive was detected and mounted. Wow what a reliever! Now I can see all the photos and videos of my family, collected for over 16 years.. what a relief!!!

Bagus lahir

Now moving forward I am budgeting a replacement of this NAS, also I’m setting up redundancy by manually uploading my family photos and videos to Google Photos.. as writing this post I’m thinking maybe better to automate this process.. any pointers? hmm let me google “Google Photos upload API”…

on 14 Nov 2017 08:09 AM

10 Oct 2017

Gtop ~ Fedora 26

Arif Syamsudin

Apa itu gtop? Gtop adalah aplikasi pemantau sistem melalui terminal. Setidaknya itu yang dikatakan pada laman pengembangan gtop pada GitHub.

Bagaimana cara memasangnya? Utamanya adalah perhatikan ketergantungan yang dibutuhkan oleh aplikasi gtop. Nodejs.

Pasang dulu nodejs (kalau belum ada)
# dnf install nodejs
Berikutnya kita akan mulai memasang gtop. Untuk mendapatkan aplikasi ini, kita bisa mengunduh aplikasi dari laman GitHub gtop.
$ git clone https://github.com/aksakalli/gtop
Saya menggunakan metode kloning repositori GitHub untuk mendapatkan aplikasi ini. Lewat laman GitHub-nya, kita pun dapat mengunduh dalam format terkompresi.

Kemudian mulai memasang gtop.
$ npm install gtop -g
Pada saat memasang dengan moda ini, saya menemukan pesan galat pemasangan seperti gambar di bawah:


Kemudian saya diminta untuk mengulangi pemasangan, kali ini dalam moda root.
# npm install gtop -g
Pada akhirnya, pemasangan berjalan dengan baik. Gtop memberikan tampilan seperti ini, pada perangkat yang saya gunakan.


Demikian. Informasi lebih lanjut tentang bagaimana menggunakan aplikasi ini, bisa dilihat pada berkas README.md yang tercantum pada direktori aplikasi.

Semoga bermanfaat.
on 10 Oct 2017 12:50 PM
Pada akhirnya, saya menemukan cara yang pas untuk membuat LiveUSB GnU/Linux. Caranya tentu dengan menggunakan perintah "dd". Saya rasa, perintah ini yang sudah cukup pas, untuk membuat LiveUSB GnU/Linux.

Perintah yang saya gunakan untuk membuat LiveUSB GnU/Linux adalah:
dd if=[file] of=[device] bs=4M; sync
Penjelasannya:
  • [file] is the name of the input image, e.g. "netinst.iso"
  • [device] is the device matching the USB flash drive, e.g. /dev/sda, /dev/sdb. Be careful to make sure you have the right device name, as this command is capable of writing over your hard disk just as easily if you get the wrong one!
  • "bs=4M" tells dd to read/write in 4 megabyte chunks for better performance; the default is 512 bytes, which will be much slower
  • The "sync" is to make sure that all the writes are flushed out before the command returns.
Menurut saya, kuncinya ada di "bs=4M" dan "sync." Jangan lupakan tanda baca titik koma (;)! Saya mencoba beberapa kali membuat LiveUSB dengan berbagai distro menggunakan perintah ini, semuanya bisa berjalan dengan baik.

Demikian, semoga bermanfaat.


Bahan bacaan:

  1. https://en.wikipedia.org/wiki/Dd_(Unix)
  2. https://www.debian.org/CD/faq/
on 10 Oct 2017 12:32 PM

09 Aug 2017

Lama saya baru sadar kalau tulisan-tulisan lama di blog ini tidak lagi bisa diakses. Baru sadar setelah iseng-iseng baca tulisan-tulisan lama saya sendiri. Secara naluri otomatis saya menyalahkan plugin-plugin baru yang saya pasang. Termasuk menyalahkan update WordPress terbaru.

Utak-atik sana-sini, lama baru ketemu apa penyebabnya.

Ternyata karena plugin Facebook OpenGraph, Twitter Card, dkk. 😐

on 09 Aug 2017 09:51 AM

24 Jul 2017

Karena harddisknya di pindah ke server lain, ethernet cardnya tidak ke detek di config /etc/network/interface

silahkan ketik perintah

lspci | grep -i net

pastikan network card sudah terdetek pada OSnya

silahkan ketik perintah

sudo ls /sys/class/net

apakah ada perubahan nama network card yang biasa  eth0 atau eth1 menjadi yang lain seperti eth2 dan eth3 dst..

selanjutnya silahkan rubah pada config /etc/network/interface

Reboot kembali server

on 24 Jul 2017 06:46 AM

20 Jul 2017

Selama beberapa tahun saya terbiasa menggunakan Digital Audio Workstation (DAW) yang bernama Ableton. Ketika masih di Windows, ataupun ketika sudah berganti ke laptop Mac. Kekurangannya, hampir semua instrumen bawaan Ableton tidak pernah saya gunakan. Mentok saya cuma gunakan untuk membuat white-noise.  Jadinya sangat bergantung dengan VST.

Setelah install ulang Mac saya dengan OS terbaru (Sierra), saya memutuskan berganti ke Logic Pro X. Agak berat sebenarnya, karena Logic ini hanya tersedia di Mac. Jika suatu saat nanti saya berganti ke OS lain, otomatis program ini tidak bisa saya gunakan lagi.

Saya nyaman sekali menggunakan Ableton sebenarnya. Tapi selain kekurangan di atas, harga Ableton juga mahal, $799, kalau dikonversi ke Rupiah menjadi sekitar Rp 10 juta.

FL Studio saya tidak begitu familiar, cuma pernah coba sehari atau 2 hari jaman kuliah dulu. Harganya sama dengan Logic sebenarnya, itu sudah termasuk berbagai instrumen VST. Sayangnya FL Studio tidak tersedia untuk Mac. Dulu sih mereka pernah meluncurkan versi Betanya untuk Mac. Tapi entah mengapa gak lanjut.

Anyway, akhirnya saya akhirnya membeli Logic Pro. $199, dirupiahkan kemarin menjadi Rp2,99 jt. Tapi ini sudah dilengkapi berbagai instrumen dan sampler. Selain itu kita bisa download sekitar 80GB sound sample dan loop, gratis, free royalti, resmi dari Apple. Jadi enggak perlu beli sample sound seperti Vengeance dkk, yang harganya justru lebih mahal dari Logic.

Setelah coba-coba selama sebulanan (yes, this is my first time using Logic), akhirnya berhasil jadi 1 lagu, genrenya dance music. Saya juga gak tahu ini genre Electro House, atau apa. Saya cuma pehobi amatiran. Kalau suka silahkan didownload via situs-situs downloader YouTube itu. 😀

Gimana, enak lagunya?

on 20 Jul 2017 04:33 PM

30 Jun 2017

In this tutorial, I assume that you are familiar with linux Terminal and basic command line.

Step 1.Make sure your wireless card in “Monitor mode”.
aireply01

Type “iwconfig your_wireless_card”.
You can turn off the wireless card, switch to ‘Monitor Mode’ and turn it on again.
aireply02

I prefer to use ‘airmong-ng’ to create a virtual wireless network. Airmon-ng is bash script that use to turn wireless card into monitor mode.
aireply03

Step 2. Run airodump-ng to check who are connected to your wifi network.
BSSID is your Access Point MAC address.
ESSID is your Access Point name.
STATION is the list of devices that are connected to BSSID.
For example, I want to kick out device with MAC address 70:72:0D:59:3D:81 from my Access Point. My Access Point MAC address is 98:DE:D0:4C:DF:74.
aireply04

Step 3. Run ‘aireply-ng’ to kick off the target.
Type: $ sudo aireplay-ng -0 0 -a your_Access_point -c your_target mon0
aireply05

 

 

 

 

 

 

 

 

 

 

 

 

 

 

on 30 Jun 2017 02:33 AM

Ping is a simple test to check if the target is exist. When your are connected with free wifi in a cafe library etc, and someone try to hack your system, usually this is one of the method that they do.

You can it using tcpdump.

If it’s not in your system yet, you can install by typing (for Ubuntu): apt-get install tcpdump in your linux terminal.

Type the command below to start the process:

sudo tcpdump -i wlan0 icmp and icmp[icmptype]=icmp-echo
-i option is for your wireless network interface. I use atheros chipset, so my one is wlan0.
When I ping from my other device, tcpdump will tell me that there is a device from an ip address try to ping me.
tcpdump

on 30 Jun 2017 02:31 AM

18 Jun 2017

Sejak teknologi A2DP muncul saya belum begitu tertarik untuk mencobanya. Baru kemarin-kemarin saja mulai tertarik untuk mencoba. Hasil dari mencoba menggunakan bluetooth speaker besutan Mifa jadi pengen mencoba merk lain dan yang relatif lebih kecil. Belilah... Xiaomi Bluetooth Speaker Portable yang bentuknya agak imut.

Awalnya memang digunakan di ponsel. Tapi iseng-iseng mencoba dikoneksikan dengan MacbookPro8,1 yang terinstall LinuxMint. Teman-teman menyebut Macbook yang saya gunakan adalah Macbook Bajakakan. Berikut langkah-langkah mengkoneksikan dengan Xiaomi Bluetooth Speaker Portable:
1. Klik pada bagian kanan bawah dengan logo Bluetooth kemudian muncul menu seperti gambar di bawah ini.


2. Pilih Bluetooth Settings maka akan muncul gambar dibawah ini.

3. Klik tanda plus (+) sambil mencari bluetooth sekitar menyala, pilih MI Portable Bluetooth Speaker, klik Continue .

4. Klik Quit, artinya komputer dan Xioami Bluetooth Speaker Portable sudah terkoneksi.

5. Setting Xiaomi Bluetooth Speaker Portable pada bagian Sound Settings.

6. Pilih Headset seperti pada gambar di bawah ini.

7. Anda juga dapat melakukan pengujian suara untuk memastikan suara dari komputer keluar di Xiaomi Bluetooth Speaker menggunakan Test Sound.

8. Setelah suara terdengar saatnya Anda menikmati hiburan favorit.




on 18 Jun 2017 09:34 AM

16 Apr 2017

OK, langsung saja download flag.zip yang di berikan seperti diatas.
Sebelumnya, mari kita cek dahulu flagnya.
$ file flag.png 
flag.png: PNG image data, 960 x 5, 8-bit/color RGBA, non-interlaced

Bisa kita cek lebih dalam lagi file nya dengan binwalk.
$ binwalk flag.png 

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
253 0xFD Zlib compressed data, default compression
330 0x14A PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
392 0x188 Zlib compressed data, default compression
469 0x1D5 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
---snip---
7514 0x1D5A Zlib compressed data, default compression
8404 0x20D4 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
8466 0x2112 Zlib compressed data, default compression
9249 0x2421 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
9311 0x245F Zlib compressed data, default compression

Setelah itu estrak file gambarnya menggunakan foremost.
$ foremost -v flag.png 
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Fri Apr 14 00:57:40 2017
Invocation: foremost -v flag.png
Output directory: /home/darm/CTF/FITHACK/forensic/aw/output
Configuration file: /etc/foremost.conf
Processing: flag.png
|------------------------------------------------------------------
File: flag.png
Start: Fri Apr 14 00:57:40 2017
Length: 82 KB (84177 bytes)

Num Name (bs=512) Size File Offset Comment

0: 00000000.png 330 B 0 (960 x 5)
1: 00000000_1.png 139 B 330 (960 x 5)
2: 00000000_2.png 139 B 469 (960 x 5)
3: 00000001.png 139 B 608 (960 x 5)
4: 00000001_1.png 139 B 747 (960 x 5)
5: 00000001_2.png 139 B 886 (960 x 5)
6: 00000002.png 139 B 1025 (960 x 5)
7: 00000002_1.png 139 B 1164 (960 x 5)
8: 00000002_2.png 139 B 1303 (960 x 5)
9: 00000002_3.png 139 B 1442 (960 x 5)
10: 00000003.png 254 B 1581 (960 x 5)
11: 00000003_1.png 357 B 1835 (960 x 5)
12: 00000004.png 516 B 2192 (960 x 5)
13: 00000005.png 603 B 2708 (960 x 5)
14: 00000006.png 657 B 3311 (960 x 5)
15: 00000007.png 764 B 3968 (960 x 5)
16: 00000009.png 932 B 4732 (960 x 5)
17: 00000011.png 895 B 5664 (960 x 5)
18: 00000012.png 893 B 6559 (960 x 5)
19: 00000014.png 952 B 7452 (960 x 5)
20: 00000016.png 845 B 8404 (960 x 5)
21: 00000018.png 1 KB 9249 (960 x 5)
22: 00000020.png 901 B 10328 (960 x 5)
23: 00000021.png 936 B 11229 (960 x 5)
24: 00000023.png 946 B 12165 (960 x 5)
25: 00000025.png 1 KB 13111 (960 x 5)
26: 00000027.png 795 B 14142 (960 x 5)
27: 00000029.png 927 B 14937 (960 x 5)
28: 00000030.png 976 B 15864 (960 x 5)
29: 00000032.png 726 B 16840 (960 x 5)
30: 00000034.png 895 B 17566 (960 x 5)
31: 00000036.png 983 B 18461 (960 x 5)
32: 00000037.png 1 KB 19444 (960 x 5)
33: 00000039.png 1019 B 20473 (960 x 5)
34: 00000041.png 1 KB 21492 (960 x 5)
35: 00000044.png 1 KB 22760 (960 x 5)
36: 00000047.png 975 B 24130 (960 x 5)
37: 00000049.png 1 KB 25105 (960 x 5)
38: 00000051.png 1 KB 26239 (960 x 5)
39: 00000053.png 954 B 27272 (960 x 5)
40: 00000055.png 1 KB 28226 (960 x 5)
41: 00000057.png 1 KB 29528 (960 x 5)
42: 00000060.png 1 KB 30765 (960 x 5)
43: 00000062.png 1 KB 32207 (960 x 5)
44: 00000065.png 1 KB 33520 (960 x 5)
45: 00000068.png 1 KB 34835 (960 x 5)
46: 00000070.png 1024 B 36058 (960 x 5)
47: 00000072.png 850 B 37082 (960 x 5)
48: 00000074.png 1 KB 37932 (960 x 5)
49: 00000076.png 844 B 39000 (960 x 5)
50: 00000077.png 1 KB 39844 (960 x 5)
51: 00000079.png 1 KB 40899 (960 x 5)
52: 00000081.png 965 B 41927 (960 x 5)
53: 00000083.png 901 B 42892 (960 x 5)
54: 00000085.png 879 B 43793 (960 x 5)
55: 00000087.png 1 KB 44672 (960 x 5)
56: 00000089.png 862 B 45871 (960 x 5)
57: 00000091.png 944 B 46733 (960 x 5)
58: 00000093.png 1 KB 47677 (960 x 5)
59: 00000095.png 1 KB 48788 (960 x 5)
60: 00000097.png 1 KB 50164 (960 x 5)
61: 00000100.png 1 KB 51236 (960 x 5)
62: 00000102.png 1 KB 52302 (960 x 5)
63: 00000104.png 1 KB 53454 (960 x 5)
64: 00000106.png 1 KB 54677 (960 x 5)
65: 00000109.png 1 KB 55882 (960 x 5)
66: 00000111.png 1 KB 57143 (960 x 5)
67: 00000113.png 1 KB 58175 (960 x 5)
68: 00000115.png 1 KB 59223 (960 x 5)
69: 00000117.png 997 B 60313 (960 x 5)
70: 00000119.png 931 B 61310 (960 x 5)
71: 00000121.png 882 B 62241 (960 x 5)
72: 00000123.png 939 B 63123 (960 x 5)
73: 00000125.png 858 B 64062 (960 x 5)
74: 00000126.png 854 B 64920 (960 x 5)
75: 00000128.png 943 B 65774 (960 x 5)
76: 00000130.png 885 B 66717 (960 x 5)
77: 00000132.png 881 B 67602 (960 x 5)
78: 00000133.png 996 B 68483 (960 x 5)
79: 00000135.png 1 KB 69479 (960 x 5)
80: 00000137.png 1 KB 70558 (960 x 5)
81: 00000139.png 1 KB 71664 (960 x 5)
82: 00000142.png 1 KB 72726 (960 x 5)
83: 00000144.png 863 B 73797 (960 x 5)
84: 00000145.png 976 B 74660 (960 x 5)
85: 00000147.png 790 B 75636 (960 x 5)
86: 00000149.png 713 B 76426 (960 x 5)
87: 00000150.png 689 B 77139 (960 x 5)
88: 00000152.png 732 B 77828 (960 x 5)
89: 00000153.png 566 B 78560 (960 x 5)
90: 00000154.png 554 B 79126 (960 x 5)
91: 00000155.png 472 B 79680 (960 x 5)
92: 00000156.png 402 B 80152 (960 x 5)
93: 00000157.png 307 B 80554 (960 x 5)
94: 00000157_1.png 357 B 80861 (960 x 5)
95: 00000158.png 435 B 81218 (960 x 5)
96: 00000159.png 403 B 81653 (960 x 5)
97: 00000160.png 432 B 82056 (960 x 5)
98: 00000161.png 290 B 82488 (960 x 5)
99: 00000161_1.png 287 B 82778 (960 x 5)
100: 00000162.png 139 B 83065 (960 x 5)
101: 00000162_1.png 139 B 83204 (960 x 5)
102: 00000162_2.png 139 B 83343 (960 x 5)
103: 00000163.png 139 B 83482 (960 x 5)
104: 00000163_1.png 139 B 83621 (960 x 5)
105: 00000163_2.png 139 B 83760 (960 x 5)
106: 00000163_3.png 139 B 83899 (960 x 5)
107: 00000164.png 139 B 84038 (960 x 5)
*|
Finish: Fri Apr 14 00:57:40 2017

108 FILES EXTRACTED

png:= 108
------------------------------------------------------------------

Foremost finished at Fri Apr 14 00:57:40 2017

Euw, ternyata banyak juga, ada 108 files yang berhasil di ekstrak.
$ cd output/
$ ls
audit.txt png
$ cd png/
$ l
00000000_1.png 00000002.png 00000012.png 00000029.png 00000047.png 00000068.png 00000085.png 00000104.png 00000123.png 00000139.png 00000154.png 00000161.png
00000000_2.png 00000003_1.png 00000014.png 00000030.png 00000049.png 00000070.png 00000087.png 00000106.png 00000125.png 00000142.png 00000155.png 00000162_1.png
00000000.png 00000003.png 00000016.png 00000032.png 00000051.png 00000072.png 00000089.png 00000109.png 00000126.png 00000144.png 00000156.png 00000162_2.png
00000001_1.png 00000004.png 00000018.png 00000034.png 00000053.png 00000074.png 00000091.png 00000111.png 00000128.png 00000145.png 00000157_1.png 00000162.png
00000001_2.png 00000005.png 00000020.png 00000036.png 00000055.png 00000076.png 00000093.png 00000113.png 00000130.png 00000147.png 00000157.png 00000163_1.png
00000001.png 00000006.png 00000021.png 00000037.png 00000057.png 00000077.png 00000095.png 00000115.png 00000132.png 00000149.png 00000158.png 00000163_2.png
00000002_1.png 00000007.png 00000023.png 00000039.png 00000060.png 00000079.png 00000097.png 00000117.png 00000133.png 00000150.png 00000159.png 00000163_3.png
00000002_2.png 00000009.png 00000025.png 00000041.png 00000062.png 00000081.png 00000100.png 00000119.png 00000135.png 00000152.png 00000160.png 00000163.png
00000002_3.png 00000011.png 00000027.png 00000044.png 00000065.png 00000083.png 00000102.png 00000121.png 00000137.png 00000153.png 00000161_1.png 00000164.png

Setelah melihat gambar hasil dari ekstrakan diatas, kalau dilihat satu persatu isi gambar adalah potongan-potongan gambar yang tidak lain adalah Flag yang kita cari-cari. Terus gimana gabunginnya? Caranya cukup mudah, kita bisa menggunakan tool dari ImageMagick yaitu convert.
$ convert -append *.png out.png

Flag: FIT{6xgwxloxq79ew}
on 16 Apr 2017 07:07 PM
Soal yang diberikan yaitu Trivia, and here you go.

Trivia1 [10]

A bug found in bash causes arbitrary code to be executed remotely
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{SHELLSHOCK}


Trivia2 [10]

A dog breed that exists in version 3.0 of SSL.
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{POODLE}


Trivia3 [10]

VyOS 1.0.0 - 1.0.5
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{HYDROGEN}


Trivia5 [10]

Nickname of SHA-1 collision attack done by Google and CWI.
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{SHATTERED}
on 16 Apr 2017 05:56 PM

Seperti yang terlihat pada challenge diatas, langsung saja kita akses pada link url https://look.problem.ctf.nw.fit.ac.jp, dan ternyata tidak ada apa-apa disana. Sesuai dari Hint yang diberikan "Look quickly", saya langsung cek response headers dari website tersebut.


Did you see the flag?
Yes, flag langsung muncul pada response headers yang terletak di set-cookie, tapi disitu terlihat ada URL encoding pada flag, dan gampang saja kita bisa melakukan decode flag melalui situs penyedia layanan URL decode seperti dibawah ini.

Flag: FIT{17_i5_n07_4_c00ki3_t0_3a7}
on 16 Apr 2017 05:50 PM

09 Apr 2017

Secara resmi ponsel yang dapat dipasang Kali NetHunter dapat dilihat pada pranala https://github.com/offensive-security/kali-nethunter/wiki#10-supported-devices-and-roms. Sampai tulisan ini dibuat Xioami Mi4 belum tercatat sebagai ponsel yang dapat dipasang Kali NetHunter. Namun pada pranala https://github.com/offensive-security/nethunter-devices/tree/master/marshmallow ada mesin cancro yang digunakan Xiaomi Mi4 dan Mi3. Kebetulan sampai saat ini Mi4 menggunakan MIUI 8.2.x yang berbasis Android M.

+fazlur rahman sudah memulai terlebih dahulu melakukan pemasangan di perangkat Xiaomi. Cara saya agak sedikit berbeda yang dilakukan oleh +fazlur rahman dan semua saya lakukan menggunakan LinuxMint. Saya memulai dari direktori Download:
1.   Ponsel sudah dalam kondisi rooted
2.   Hak akses pengembangan disesuaikan
3.   Untuk jaga-jaga, sudo python -m pip install pyopenssl pyasn1 ndg-httpsclient
4.   git clone https://github.com/offensive-security/kali-nethunter.git
5.   cd kali-nethunter/update/data/app/
6.   adb install Term-nh.apk
7.   adb install nethunter.apk
8.   cd ~/Download
9.   Unduh, wget -c https://images.offensive-security.com/https://images.offensive-security.com/kalifs-armhf-full.tar.xz
11. Pastikan hak akses pada MIUI sudah diperkenankan semuanya
12. mv kalifs-armhf-full.tar.xz kalifs-full.tar.xz
13. adb push kalifs-full.tar.xz /sdcard/
14. Jalankan aplikasi NetHunter pada ponsel
15. Ikuti petunjuk pada pilihan Kali Chroot Manager

Pada prinsipnya Kali NetHunter bisa berfungsi di Xiaomi dengan MIUI-nya namun saya belum bisa memanfaatkan maksimal karena terkendala cukup banyak seperti kapasitas internal memory dan terbentur dengan sistem keamanan MIUI yang menurut saya cukup ketat. Suatu saat kalau memang benar-benar longgar dan memiliki perangkat yang sesuai rekomendasi saya akan ngulik lagi.





on 09 Apr 2017 11:38 PM

29 Mar 2017

10 tahun lalu, kalau denger ada henpon seharga sepeda motor, orang-orang pasti komentar “Gila..!”. Orang-orang kelebihan duit aja tuh yang bakal beli segitu.

Sekarang, harga ponsel bahkan ada yang lebih mahal daripada harga sepeda motor baru. Tapi orang-orang biasa aja.

Iya, dulu sih memang ada juga ponsel harga selangit. Tapi itu karena casing-nya berlapis emas. Atau ada juga karena yang diberi hiasan berlian. Lah kalau jaman sekarang, emang ponselnya yang segitu. Harganya hampir 20 juta.

Coba aja cek harga resmi iPhone 7 dan iPhone 7 plus di Indonesia, rentang harganya di belasan juta. Tapi walaupun semahal itu, nyatanya pre-ordernya laris loh. Siapa bilang di “rezim” sekarang ekonomi Indonesia menurun? Tuh, buktinya. Mantaplah pokoknya Indonesia. Haha.

on 29 Mar 2017 07:13 PM

12 Feb 2017

Menarik untuk disimak… Meme #1: We have shared software since we have written software. Meme #2: Writing good software is hard work. Meme #3: There is no scale without discipline. Meme #4: Software is inherently dynamic. Meme #5: You always get more than you give. Meme #6: Freeloaders are essential to success. Meme #7: Don’t […]
on 12 Feb 2017 01:01 PM

04 Feb 2017

Mohon maaf jika tulisan dan judul tidak nyambung saya hanya teringat gaya menulis jaman masih SMP. Belajar menulis hasil praktikum di Lab. IPA menurut saya masih bermanfaat sampai saat ini. Hal ini didasari pemilihan Instant Messenger yang cocok untuk sebuah "forum diskusi singkat". Untuk forum diskusi saya lebih menyukai milis atau web forum. Selain itu juga ada pemberitaan yang diduga ada rekayasa dalam sebuah percakapan Instant Messenger. 

A. Alat dan Bahan
Dalam ngoprek kali ini alat dan bahan yang saya perlukan sebenarnya standar dan mudah didapat (apalagi kalau menggunakan Linux). Ada pun alat dan bahan yang saya gunakan sebagai berikut:
  1. Ponsel dengan sistem operasi Android yang telah ter-root.
  2. Kabel data (sebaiknya yang original)
  3. Komputer bersistem operasi Linux
  4. ADB yang terpasang di komputer
  5. Aplikasi Sqliteman yang terpasang di komputer

B. Tujuan
Instant Messenger saat ini banyak sekali tersedia di Playstore. Bisa dikatakan terkadang bingung memilihnya. Namun yang saat ini cukup populer di Indonesia menurut JakPat yang saya kutip dari DailySocial diantaranya Blackberry Messenger, Whatsapp, Line, FB Messenger dan Telegram. Dalam ngoprek  saya tidak menggunakan tidak menggunakan Line. Intinya saya hanya ingin "melihat" pesan yang tertinggal didalam ponsel sesuai kaidah analisis forensik.

C. Langkah Kerja
Dalam tulisan ini saya tidak menjelaskan secara detil tentang mendapatkan barang bukti digital dari  Blackberry Messenger, Telegram, FB Messenger, dan Whatsapp maupun barang bukti elektronik berupa ponsel. Asumsinya bahwa proses pengambilan barang bukti digital sudah memenuhi kaidah akuisisi barang bukti digital secara logikal.
1. Pastikan ponsel dalam kondisi ter-root.
2. Pastikan ponsel dalam mode developer.
3. Pastikan USB debugging telah aktif.
4. Saya tancapkan kabel data antara ponsel dan komputer ber-Linux kondisinya aman tidak perlu install driver ponsel.
5. Jalankan perintah adb shell.
6. Masuk ke mode administrator ketik su.
7. Membuat direktori dengan perintah, mkdir /sdcarcd/forensik-201702
8. Menyalin barang bukti digital ke direktori /sdcard/forensik-201702

D.  Analisis Barang Bukti Digital
Dengan kondisi ponsel yang ter-root memudahkan dalam mendapatkan barang bukti digital. Semua barang bukti digital disalin ke direktori /sdcard/dorensik-201702. Selanjut barang bukti digital satu per satu disalin ke komputer untuk analisis menggunakan perintah adb pull /sdcard/forensik-201702/nama.db ~/forensik/2017/02/ . Ingat harus satu per satu tidak bisa menyalin secara semua dengan tanda * . Analisis lebih lanjut silakan bisa dipelajari, berikut hanya tangkapan layar dari masing-masing barang bukti digital.
1. Blackberry Messenger
Barang Bukti Digital: master.enc
2. Telegram
Barang Bukti Digital: cache4.db


Memiliki 39 Tabel
3. Whatsapp
Barang Bukti Digital: msgstore.db

Memiliki 18 Tabel
4. FB Messenger
Barang Bukti Digital: threads_db2

Memiliki 15 Tabel
E. Kesimpulan
Ada 2 Instant Messenger yang tidak bisa saya baca isi pesannya yaitu Blackberry Messenger dan Telegram. Whatsapp dan FB Messenger tidak ada enkripsi apapun sehingga sangat mudah dibaca. Sebelum 1 November 2014 Blackbeery Messenger masih bisa dibaca menggunakan BBMPork. Serupa seperti Whatsapp versi terbaru yang tidak terenkripsi. Tidak seperti jaman dulu, Whatsapp relatif sulit dibaca walaupun ada aplikasi tambahan yang dapat membongkarnya seperti Wforensic dan Whatsapp Xtract. Sekedar bonus jika Whatsapp boros media penyimpanan. Whatsapp di ponsel saya hampir "memakan" 1 GB dapat dilihat di gambar berikut.


Harapannya adanya analisis ini Anda bisa bijak memilih dan menggunakan Instant Mesenger. Insya Allah dalam waktu dekat hasil analisis ini akan saya presentasi di Padepokan ASA, waktu dan tempat mohon bisa memantau blog ini.

on 04 Feb 2017 08:00 AM

03 Feb 2017

Ini perbaikan dari tulisan sebelumnya. Masih sama dengan kata kunci terdahulu yaitu Recover MySQL Root Password, Reset MySQL Root Password, Reset Forgotten MySQL Root Password, dan lain-lain. Berikut langkah-langkah mengubah password Mysql yang lupa di Ubuntu 16.04:
1. sudo /etc/init.d/mysql stop
2. sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld ; sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &. Jika sudah muncul tulisan seperti dibawah ini berarti "angin segar".
2017-02-03T07:47:01.759823Z mysqld_safe Logging to syslog.
2017-02-03T07:47:01.763524Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-03T07:47:01.767094Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-03T07:47:01.789149Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

3. Login mysql dengan perintah, mysql -uroot -p dan tekan enter untuk memasukan password-nya.
4. Saat pada konsol mysql jalankan perintah
USE mysql;
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('password_baru_anda');
FLUSH PRIVILEGES;
\q
5. Hentikan proses mysql dengan perintah, ps ax| grep mysql | awk '{print $1}' | xargs kill -9
6. Jalankan mysql dengan perintah, /etc/init.d/mysql start

 Silakan dicoba ulang menggunakan password baru anda.
on 03 Feb 2017 08:09 AM

01 Feb 2017

Sekedar refreshing mainan Wireshark, saat menyimpan hasil "capture" muncul pesan The capture file appears to be damaged or corrupt. Dibuka ulang pesan tersebut masih muncul. Solusinya supaya tidak muncul pesan tersebut maka install pcapfix. Dari Linux Mint cukup unduh dan install menggunakan perintah sudo apt-get install pcapfix.

Menggunakan pcapfix tidaklah sulit cukup mengetikan pcapfix -n namafile.pcapng



on 01 Feb 2017 03:22 AM

19 Jan 2017

HJKL

Fajran Iman Rusadi

As a vim user, I know since a long time ago that it has another key combination to do movement, in addition to the obvious arrow keys: HJKL. They are used as left, down, up, and right keys. They supposed to be convenient to use due to their location at the home row of the keyboard. The place where the hands naturally lay on.

I had been trying to use them but never feel quite comfortable using it. Maybe it's just me who don't "get" it right yet. But this changed since a couple of weeks ago when I decided to change my strategy a little bit.

on 19 Jan 2017 09:36 AM

08 Dec 2016

Some days ago, I wanted to program an ESP8266 module but somehow it sort-of always failed. Small program worked, but soon I added more into it, it started to fail. The upload process will get stuck and sometimes it eventually finished. But still, I could not get the program to run. If I checked through the serial console, I got the following message, or something similar.

ets Jan 8 2013,rst cause:4, boot mode:(3,7)

I also tried to do the connection more properly, by adding pull-up/down resistors and capacitor, but it did not help. Googling did not give the help that I needed until I someone mentioned to check the serial adapter. Could that be the problem?

on 08 Dec 2016 10:20 AM

07 Dec 2016

Beberapa waktu yang lalu saya butuh memprogram modul ESP8266 namun entah mengapa selalu gagal. Setelah coba macem2, sepertinya USB-to-Serial adapter yang saya gunakan itu bermasalah. Saya sudah pesan adapter baru namun butuh waktu lama untuk sampai; dan saya gak sabaran xD Untungnya saya menemukan artikel berisi petunjuk menggunakan Arduino Uno atau Nano untuk memprogram modul ESP8266 dan kebetulan saya punya Arduino Uno dan Nano yang bisa dipakai. Inilah cara yang saya pakai.

Perhatian! Panduan berikut ini BUKAN berisi panduan menggunakan ESP8266 dari Arduino, melainkan panduan untuk memprogram.

Arduino Uno dan Nano itu memiliki USB port yang bisa dipakai untuk memprogram dan keduanya memiliki jalur serial TX dan RX. Ternyata andai Arduino dibuat dalam mode Reset dengan cara menghubungkan RESET ke GND, maka si Arduino akan bertingkah sebagai USB-to-Serial adapter!

Sebelum lanjut, menurut yang saya baca, port Arduino itu bekerja dengan 5V sedangkan ESP8266 itu bekerja dengan 3.3V dan tidak memiliki toleransi sampai 5V. Sehingga sinyal dari Arduino yang dikirim ke ESP8266 berpotensi untuk merusak modul ESP8266 tersebut. Kebetulan saya lupa menyadari hal ini namun untungnya modul ESP8266 saya masih bisa berfungsi dengan baik. Supaya aman kita perlu mengubah sinyal 5V dari Arduino menjadi 3.3V sehingga aman dikonsumsi oleh ESP8266. Salah satu caranya adalah dengan membuat voltage divider.

Voltage Divider

Dengan memakai kombinasi R1 = 1KΩ dan R2 = 2KΩ, kita bisa mendapatkan sinyal 3.3V yang berasal dari 5V.

Hal lain yang perlu diperhatikan adalah bagimana memberi pasokan listrik ke modul ESP8266. Menurut sebuah dokumen, ESP8266 dapat memakai arus listrik sampai 215mA sedangkan Arduino hanya dapat memasok sampai 200mA. Walau besar kemungkinan ESP8266 tidak akan memakai arus sebesar itu ketika diprogram, akan lebih baik jika kita menggunakan sumber listrik yang lain. Menurut eksperimen saya, bread board power supply biasa sudah cukup untuk memenuhi kebutuhan pasokan listrik untuk ESP8266.

Mari lanjut dengan menghubungkan Arduino dengan ESP8266. Buat hubungan sebagai berikut.

  • Arduino TX ke ESP8266 TX
  • Arduino RX ke voltage divider input
  • Voltage divider output ke ESP8266 RX
  • Arduino RESET ke GND
  • Hubungkan semua GND
    • Arduino GND
    • ESP8266 GND
    • Voltage divider GND
    • Breadboard power supply GND
  • Breadboard power supply 3.3V ke ESP8266 VCC
  • ESP8266 CH_PD ke 3.3V via resistor 10KΩ
  • Untuk mengaktifkan mode pemrograman, hubungkan ESP8266 GPIO0 ke GND via resistor 10KΩ

Kalau digambarkan, kira2 akan terbentuk hubungan seperti berikut.

Koneksi ESP8266 dengan Arduino

Setelah semua siap, sambungkan Arduino via USB dan nyalakan breadboard power supply dan modul ESP8266 sudah bisa diprogram. Jika menggunakan Arduino IDE, cukup pilih board ESP8266 dan port USB yg dipakai.

Berdasar pengalaman saya, walau konfigurasi di atas ini sudah bisa berfungsi, kadang2 saya masih menemui kegagalan ketika proses pemrograman berlangsung. Saya belum tahu apa sebabnya namun biasanya setelah saya matikan dan nyalakan lagi si breadboard power supply, proses pemrograman berikutnya bisa berjalan lancar.

Have you tried turning it off and on again?

Selamat mencoba!

on 07 Dec 2016 08:39 AM