Senin, 25 Januari 2021

Dasar-dasar Encoding Data - Part 2

1. Base64 (Terminal)

1.1 Encode Base64 

Saya akan encode string "Semuanya Ingin BAHAGIA" kedalam base64

echo -ne "Semua Ingin BAHAGIA\x01\xff" | base64

-n  = Supaya tidak menghasilkan newline di akhir
e = Supaya support syntax dengan karakter Printable& Non Printable (\x01\xff)


Hasil base64 encode : U2VtdWEgSW5naW4gQkFIQUdJQQH/

1.1.1 Eksperimen 1
Apabila tidak saya tambahkan "e" maka akan berbeda hasilnya karena saya memasukkan karakter Printable& Non Printable 

echo -n "Semua Ingin BAHAGIA\x01\xff" | base64


Hasil base64 encode : U2VtdWEgSW5naW4gQkFIQUdJQVx4MDFceGZm


1.2 Decode Base64  

echo -ne "U2VtdWEgSW5naW4gQkFIQUdJQQH/" | base64 -d

Hasil dari decode base64 "U2VtdWEgSW5naW4gQkFIQUdJQQH/" bisa dilihat di bawah 


1.2.1 Eksperimen 1

echo -ne "U2VtdWEgSW5naW4gQkFIQUdJQQH/" | base64 -d

Hasil dari decode base64 "U2VtdWEgSW5naW4gQkFIQUdJQVx4MDFceGZm" bisa dilihat di bawah


Terlihat perbedaan bahwa "\x01\xff" tidak bisa diconvert ke string biasa karena syntax encode base64 tidak menggunakan "e" :)


2. Base64 (Python)

2.1 Encode base64 (ipython)

Saya menggunakan "ipython"

"Semua Ingin BAHAGIA\x01\xff".encode("base64")


Hasil dari base64 encode menggunakan Python : "U2VtdWEgSW5naW4gQkFIQUdJQQH/\n"

2.2 Decode base64 (ipython)

"U2VtdWEgSW5naW4gQkFIQUdJQQH/\n".decode("base64")


Hasil dari base64 decode menggunakan Python : "Semua Ingin BAHAGIA\x01\xff'"


2.3 Base64 (ipython library)

2.3.1 Import library 

import base64


2.3.2 Encode base64 (with ipython library base64)

base64.b64encode("Cyber Security UMJ\xdd\xff\xad")


Hasil : "Q3liZXIgU2VjdXJpdHkgVU1K3f+t"

2.3.3 Decode base64 (with ipython library base64)

base64.b64decode("Q3liZXIgU2VjdXJpdHkgVU1K3f+t")


Hasil : "Cyber Security UMJ\xdd\xff\xad"

2.3.4 Print base64 (with ipython library base64)

print base64.b64decode("Q3liZXIgU2VjdXJpdHkgVU1K3f+t")


Hasil : "Cyber Security UMJ▒▒▒"

2.3.5 Pick Random String + Encode to base64

open("/dev/urandom").read(16).encode("base64")


3. base32 (ipython library)

3.1 base32 Encode

base64.b32encode("Cyber Security UMJ")


Hasil : "IN4WEZLSEBJWKY3VOJUXI6JAKVGUU==="

3.2 base32.Decode

base64.b32decode("IN4WEZLSEBJWKY3VOJUXI6JAKVGUU===")


Hasil : "Cyber Security UMJ"



Continue reading Dasar-dasar Encoding Data - Part 2

Rabu, 20 Januari 2021

Dasar-dasar Encoding Data - Part 1

Satuan terkecil adalah Byte bukan Bit 

1. Menghitung Byte sebuah file

"HALO" berukuran 5Byte 

H = 1Byte
A = 1Byte
L = 1Byte
O = 1Byte
Ditambah 1 newline (1Byte)

Untuk memastikan apakah benar HALO berukuran 5Byte, saya save dan beri nama *file*

 

Dan ternyata benar :)


2. Melihat representasi dari "file" menggunakan HEXDUMP (hd)

 hd file  

 

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

Darimana saya tahu? Perhatikan tabel ascii dibawah ini

Ascii Table 

Kita buktikan  

 - Tanpa newline

 echo -ne "48414c4f" | xxd -r -p  

- Dengan newline

 echo -ne "48414c4f0a" | xxd -r -p 

 

 

3. Coba di python
Disini saya menggunakan interpreneur python (ipython). Untuk cara instalasinya bisa dilihat disini

ipython

 

- chr (Menghasilkan karakter dari kode ascii hex)

 chr(0x48) + chr(0x41) + chr(0x4c) + chr(0x4f)  

 

- encode (melihat kode ascii hex dari sebuah string)

"HALO".encode("hex")  

 

- decode (melihat string yang dihasilkan kode ascii hex)

"48414c4f".decode("hex") 

  

- backslash

"\x48\x41\x4c\x4f"


\xNN = 1Byte
NN = 2digit hex

 

4. Tidak semua Byte bisa dijadikan karakter ASCII 

4.1 Printable
(0x20 - 0x79)
(0x2a - 0x2f)
(0x3a - 0x3f)
(0x4a - 0x4f)
(0x5a - 0x5f)
(0x6a - 0x6f)
(0x7a - 0x7e)

4.2 Not Printable 
(0x00 - 0x19)
(0xa - 0xf)
(0x1a - 0x1f)
(0x7f - 0xff)

Yang bisa dijadikan karakter ASCII hanya PRINTABLE

 

4.2.1 MARI BERMAIN dengan Not Printable

"8090ffad1201".decode("hex")


4.2.2 MARI BERMAIN dengan Not Printable (+print) 
 print "8090ffad1201".decode("hex")

Terlihat bahwa string yang tidak jelas muncul dikarenakan saya mencoba memunculkan string dengan bilangan NOT PRINTABLE

4.2.3 Mengambil string random (tanpa encode)
open("/dev/urandom").read(16)

4.2.4 Mengambil string random (dengan encode)
open("/dev/urandom").read(16).encode("hex")

Saya coba decode 
"f47301903a5d1bee34123f4c76997fa7".decode("hex")

Hasil terlihat bahwa string '\xf4s\x01\x90:]\x1b\xee4\x12?Lv\x99\x7f\xa7' merupakan hasil decode dari kode ASCII (hex) "f47301903a5d1bee34123f4c76997fa7"

Untuk membuktikan sekali lagi, saya mencoba untuk encode kembali string tersebut 
"\xf4s\x01\x90:]\x1b\xee4\x12?Lv\x99\x7f\xa7".encode("hex")

Hasilnya cocok :) 

5. URL Encoding

48414c4f  =  %48%41%4c%4f 

48414c4f  = String biasa

%48%41%4c%4f  = URL String

5.1 Import urllib ke python

import urllib


5.1.1 Untuk mengubah kode hex dari ASCII menjadi string, saya melakukan decode URL dengan perintah (unquote)
urllib.unquote("%48%41%4c%4f")


Continue reading Dasar-dasar Encoding Data - Part 1

How To Fix "E : Could not get lock /var/lib/dpkg/lock-frontend"

Error "E : Could not get lock /var/lib/dpkg/lock-frontend" yang saya alami disebabkan karena menghentikan paksa penginstalan package baru (ctrl+z)

  

Ini adalah Screenshoot dari Error yang disebabkan oleh penghentian paksa pada saat menginstall package baru

 

Bagaimana cara mengatasinya (How To Fix It) ?

1. Lihat process apt yang sedang berjalan

 ps aux | grep -i apt  

 

 *Terlihat ada proses apt yang sedang berjalan (pid 2749)

 

2. Kill proses yang sedang berjalan

 kill -9 2749  

 

*2749 merupakan pid dari apt yang sedang berjalan di ubuntu saya, kalian sesuaikan dengan pid masing-masing


3. Cek apakah proses tersebut berhasil dikill (dimatikan) atau bahasa kerennya *abort

 ps aux | grep -i apt 

 

BERHASILL DIKILL (DIMATIKAN)

Setelah itu kalian bisa kembali menginstall package yang diinginkan :)  


Continue reading How To Fix "E : Could not get lock /var/lib/dpkg/lock-frontend"