KSL - UBL Merupakan Kelompok Riset Mahasiswa / Mahasiswi Dibidang Teknologi Informasi Khususnya FOSS (Free Open Source Software)

Senin, 13 November 2017

DASAR ENCODING DATA

Untuk membuktikannya buatlah sebuah file dengan isi teks HALO maka sizenya adalah 5 byte, 5 byte terdiri dari 4 byte + 1 byte untuk newline

Untuk cek isi file bisa menggunakan hd (hexdump)
hd [nama file]
hd file

Maka output:














48 = H
41 = A
4c = L
4f = O
0a = newline

Untuk cek ascii table www.asciitable.com

Untuk membalikan dari kode hexa ke string ascii menggunakan xxd
echo -ne “48414c4f| xxd -r -p
-n untuk tidak menggunakan newline
-e untuk

maka output:












Sekarang coba kita pakai python, di panduan ini gw pake “ipython”

Cara ke-I








Cara ke-II











Cara ke-III













\xNN = 1 byte NN = 2 digit hexa 

Dan kalian harus mengetahui bahwa tidak semua byte itu dapat dijadikan karakter ascii. Lihat pada tabel di bawah ini.






Sekarang kita coba decode hexadecimal di dalam rentang printable





Maka di python tidak akan menampilkan hasil printable karakter

Sekarang kita coba dengan menggunakan perintah print









Maka di python akan menampilkan huruf-huruf yang tidak jelas

Karakter-karakter yang nonprintable ini biasanya akan muncul ketika kita membaca hasil enkripsi atau dari network atau suatu data random, semisal seperti ini.

Kita buka file didalam /dev/urandom di gnu/linux dan kita ambil 16 byte.







Maka akan menampilkan sebagian printable dan sebagian nonprintable

Sekarang mari coba lagi dengan perintah yang sama.







Maka akan menampilkan hasil yang berbeda dari yang sebelumnya, karena file random

Bisa juga kita encode ke hexadecimal
Hasilnya akan menjadi:
32 huruf hexadecimal karena 16 byte

Sedangkan 1 byte = 2 huruf, maka 16 x 2 akan menjadi 32 huruf hexadecimal







Maka hasilnya akan terlihat seperti md5

Encoding lain yang juga menggunakan hexadecimal banyak kita temui pula di web yaitu url encoding.
Jadi semisal string HALO = 48414c4f
Maka kalau di url encode (ditambah %) akan menjadi %48%41%4c%4f
%48%41%4c%4f biasa masuk sebagai parameter url, misal: ksl.php?param=%48%41%4c%4f
Nah %48%41%4c%4f adalah url encode dari string HALO tadi
Terus kalian pasti biasa melihat ada %20, %20 ini adalah spasi atau %2f, %2f ini adalah /
Jadi kalau semisal url encode ksl.php?param=%48%41%4c%4f%2f = ksl.php?param=HALO/

Sekarang kita coba men-decode menggunakan library urllib di python.














Cara encoding lain selain hexadecimal yang banyak dipakai di security web yaitu base64, base32, base16
Tapi yang lebih populer adalah base64, untuk mengetahui lebih lengkap mengenai base64 bisa baca artikel di wikipedia https://en.wikipedia.org/wiki/Base64

Ciri-ciri dari base64
  1. Mengandung huruf besar kecil tak beraturan
  2. Terkadang terselip angka di antara huruf
  3. Dan di akhiri dengan tanda samadengan, baik satu maupun 2 samadengan (=)
  4. Atau tanpa simbol samadengan (=)

Sekarang kita coba melalui terminal di gnu/linux.







Dan akan menghasilkan encode seperti gambar diatas.

 Lalu kita coba balik dari base64 ke string, -d adalah decode







 


Maka akan menghasilkan string seperti gambar diatas

Sekarang kita coba di python

Percobaan 1


Percobaan 2
atau juga kita bisa menggunakan library base64 di python


Dari 2 percobaan di atas menggunakan python dengan menggunakan library base64 dan tidak menggunakan library dapat disimpulkan bahwa:
  1. Tidak menggunakan library
    Menghasilkan newline (\n) pada akhir encode
  2. Menggunakan library
    Tidak menghasilkan newline(\n) pada akhir encode

Sekarang coba kita decode






atau






Bisa juga men-encode urandom file









Kita bisa juga men-encode menjadi base32








Dan juga base16








Dan juga bisa men-encode dari text ke binner

Atau juga bisa men-decode dari binner ke text

CASE: https://ctfs.me/missions/5

Tidak ada komentar: