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
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") print "8090ffad1201".decode("hex")Terlihat bahwa string yang tidak jelas muncul dikarenakan saya mencoba memunculkan string dengan bilangan NOT PRINTABLE
open("/dev/urandom").read(16)open("/dev/urandom").read(16).encode("hex")"f47301903a5d1bee34123f4c76997fa7".decode("hex")"\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

0 komentar:
Posting Komentar