Archives for the month of: January, 2013

Anyeong

Ini tugas kuliah pertama saya memakai blog,hehe. Tugas kuliah untuk mapel Komdat Dan Jarkom.

Oleh:

Hanan Asmaratih P (D22.2011.01146)

PRINSIP KERJA DAN ARSITEKTUR CARA MENEMUKAN KESALAHAN PENGIRIMAN DATA 

1. LRC (Logitudional Redundancy Check) 

cek redundansi longitudinal (LRC) atau cek redundansi horizontal adalah bentuk cek redundansiyang diterapkan secara independen untuk masing-masing kelompok paralel bit stream.Teknik Longitudinal Redundancy Check (LRC) ini bisa dikatakan merupakan pengembangan teknik parity check. Pada LRC, data (payload) disusun menjadi sejumlah baris yang ditentukan (blok), kemudian dilakukan perhitungan bit paritas untuk setiap baris dan setiap kolom. Bit paritas baris ditaruh di ujung kanan, sedangkan bit paritas kolom diletakkan dibagian bawah. Sedangkan urutan transmisi dimulai dari kolom paling kiri kearah bawah. 

Gambaran LRC dapat dilihat pada gambar dibawah ini:  

Untuk melakukan perhitungan LRC, ditambahkan karakter tambahan (bukan satu bit) di bagian kiri dan bagian bawah blok :

a.     Block Check Character (BCC) pada tiap blok data. Tiap bit BCC merupakan pariti dari semua bit dari blok yang mempunyai nomor bit yang sama. Jadi bit 1 dari BCC merupakan pariti genap dari semua bit 1 karakter yang ada pada blok tersebut, dan seterusnya

b.    Ditentukan seperti parity, tetapi menghitung secara longitudinal pada pesan (dan juga secara vertikal)

c.     Kalkulasi berdasarkan pada bit ke-1, ke-2 dst (dari semua karakter) pada blok menggunakan operator XOR (paritas genap) atau ~XOR (paritas ganjil) :

·         Bit ke-1 dari BCC ß jumlah 1 pada bit ke-1 dari karakter

·         Bit ke-2 dari BCC ß jumlah 1 pada bit ke-2 dari karakter

·         98% laju deteksi error untuk burst errors ( > 10 bit)

·         Mampu mengoreksi error sebuah bit

·         Mampu mengoreksi error sebuah drive yang rusak (dalam RAID)

·         Perbaikan signifikan dibandingkan  parity checking

Contoh : Akan dilakukan pentransmisian string “DATA” dengan teknik LRC paritas ganjil. Data tersebut diubah menjadi sebuah blok yang terbagi menjadi empat baris. Masing-masing karakter direpresentasikan dengan biner kemudian dihitung paritasnya baik secara longitudinal maupun horizontal.

 

Ternyata blok yang diterima oleh penerima seperti pada tabel 1 dibawah ini.

 

Perhitungan paritas pada sisi penerima, untuk baris 2 menghasilkan 0 (genap) yang seharusnya 1 (ganjil) seperti pada baris yang lain. Demikian pula kolom 6 menghasilkan 0 (genap) yang seharusnya 1 (ganjil) seperti pada kolom yang lain. Jika dua error ini disilangkan maka akan diketahui bahwa error terjadi pada bit di baris 2 kolom 6.

Koreksi dilakukan dengan menginversi bit 0 menjadi 1 atau 1 menjadi 0 pada posisi bit yang baris dan kolomnya dinyatakan error.

  Untuk pengecekan error tambahan byte (atau kata) ditambahkan ke sebuah blok data untuk mengungkapkan korupsi data. Bit n of this byte indicates whether there was an even or odd number of “1” bits in bit position n of the bytes in the block.  Bit n byte ini menunjukkan apakah ada jumlah genap atau ganjil dari “1” bit pada posisi bit n byte di blok tersebut. The parity byte is computed byXOR ing the data bytes in the block.  Paritas byte dihitung dengan XOR ing byte data dalam blok.Longitudinal parity allows single bit errors to be detected.  paritas longitudinal memungkinkan kesalahan-kesalahan bit tunggal untuk dideteksi. 
LRC Generasi 
The Longitudinal Redundancy Check (LRC) lapangan satu byte, yang berisi nilai biner delapan-bit.Nilai LRC dihitung oleh perangkat transmisi, yang menambahkan LRC ke pesan. Perangkat penerima kalkulasi ulang sebuah LRC saat menerima pesan, dan membandingkan nilai yang dihitung dengan nilai aktual yang diterima di lapangan LRC. Jika kedua nilai tidak sama, suatu hasil kesalahan. 
LRC dihitung dengan menambahkan bersama-sama berturut-turut delapan-bit byte dalam pesan, membuang apapun membawa, kemudian dua yang melengkapi hasilnya. LRC adalah bidang delapan-bit, sehingga setiap penambahan baru dari karakter yang akan menghasilkan nilai yang lebih tinggi dari 255 desimal hanya berguling nilai lapangan melalui nol. Karena tidak ada bit kesembilan, carry tersebut akan dibuang secara otomatis. 
Menghasilkan sebuah LRC 
Langkah 1 Tambahkan semua byte dalam pesan, termasuk usus besar awal dan akhir CRLF.Tambahkan mereka ke medan delapan-bit, sehingga membawa akan dibuang. 
Langkah 2 Kurangi nilai kolom terakhir dari hex FF (semua 1 s), untuk menghasilkan orang-orang-komplemen. 
Langkah 3 Tambahkan 1 untuk menghasilkan two’s-komplemen. 
Menempatkan LRC ke Message 
Ketika delapan-bit LRC (dua karakter ASCII) ditransmisikan dalam pesan, karakter urutan tinggi akan dikirim pertama, diikuti oleh urutan rendah karakter-misalnya, jika nilai LRC adalah 61 hex (0110 0001): 

Gambar 8 LRC Karakter Urutan 
Contoh 
Contoh dari fungsi bahasa C melakukan generasi LRC ditunjukkan di bawah ini. Fungsi membutuhkan dua argumen: 

 unsigned char * auchMsg, Sebuah pointer ke buffer pesan

 con-

           taining biner data yang akan digunakan untuk

           menghasilkan LRC

 unsigned short usDataLen, Jumlah byte dalam

          Pesan penyangga.

Fungsi mengembalikan LRC sebagai tipe char unsigned. LRC Generasi Fungsi 

 statis unsigned char LRC (auchMsg, usDataLen)

 unsigned char * auchMsg, pesan / * menghitung * /

 unsigned short usDataLen; / * LRC pada kuantitas * /

           / * Byte dalam pesan * /

 {

  unsigned char uchLRC = 0; / * LRC Char diinisialisasi * /

  sementara (usDataLen -) / * lulus melalui pesan * /

   uchLRC + = * auchMsg + +; / * buffer byte penyangga add * /

           / * Tanpa membawa * /

  kembali ((unsigned char) (- ((char_uchLRC)));

           / * Kembali berpasangan complemen * /

 }

2. CRC (Cyclic Redundancy Check) 

CRC (Cyclic Redundancy Check) adalah algoritma untuk memastikan integritas data dan mengecek kesalahan pada suatu data yang akan ditransmisikan atau disimpan.

Data yang hendak ditransmisikan atau disimpan ke sebuah media penyimpanan rentan sekali mengalami kesalahan, seperti halnya noise yang terjadi selama proses transmisi atau memang ada kerusakan perangkat keras. Untuk memastikan integritas data yang hendak ditransmisikan atau disimpan, CRC dapat digunakan. CRC bekerja secara sederhana, yakni dengan menggunakan perhitungan matematika terhadap sebuah bilangan yang disebut sebagai Checksum, yang dibuat berdasarkan total bit yang hendak ditransmisikan atau yang hendak disimpan.

Dalam transmisi jaringan, khususnya dalam jaringan berbasis teknologi Ethernet, checksum akan dihitung terhadap setiap frame yang hendak ditransmisikan dan ditambahkan ke dalam frame tersebut sebagai informasi dalam header atau trailer. Penerima frame tersebut akan menghitung kembali apakah frame yang ia terima benar-benar tanpa kerusakan, dengan membandingkan nilai frame yang dihitung dengan nilai frame yang terdapat dalam header frame. Jika dua nilai tersebut berbeda, maka frame tersebut telah berubah dan harus dikirimkan ulang.

CRC didesain sedemikian rupa untuk memastikan integritas data terhadap degradasi yang bersifat acak dikarenakan noise atau sumber lainnya (kerusakan media dan lain-lain). CRC tidak menjamin integritas data dari ancaman modifikasi terhadap perlakukan yang mencurigakan oleh para hacker, karena memang para penyerang dapat menghitung ulang checksum dan mengganti nilai checksum yang lama dengan yang baru untuk membodohi penerima.

Kode pendeteksian kesalahan yang paling umum serta paling hebat adalah Cyclic Redundancy Check (CRC) yang dapat digambarkan sebagai berikut, dengan adanya blok bit k-bit, atau pesan, transmitter mengirimkan suatu deretan n-bit, disebut sebagai Frame Check Sequence (FCS), sehingga frame yang dihasilkan, terdiri dari k+n bit, dapat dibagi dengan jelas oleh beberapa nomor yang sebelumnya sudah ditetapkan. Kemudian receiver membagi frame yang datang dengan nomor tersebut dan, bila tidak ada sisa, maka diasumsikan tidak terdapat kesalahan.

Untuk menjelaskan hal tersebut, kita dapat menggunakan dua cara yaitu:

a.    Modulo 2 Aritmatik

Modulo 2 aritmatik menggunakan penambahan biner tanpa pembawa, yang hanya merupakan operasi EX-OR saja. Pengurangan biner tanpa pembawa juga diterjemahkan sebagai operasi EX-OR. Sebagai contoh:

 

Untuk Gambar Di sini silahakan cari sendiri yach… bukannya aku pelit tapi.. gambarnya aku tdk dapat temukan yang bagus2 mas brow… klik di sini

b.    Polynomials

Cara kedua mengamati proses CRC adalah dengan menyatakan seluruh nilai sebagai polynomial dalam suatu model variabel X, dengan koefisien-koefisien biner. Koefisien berhubungan dengan bit-bit dalam angka biner. Jadi, untuk M = 110011, kita peroleh M(X) = X5 + X4 + X + 1, dan untuk P = 11001, kita peroleh p (X) = X4 + X3 + 1. Operasi aritmetik lagi-lagi berupa modulo 2. Sekarang, proses CRC digambarkan sebagai:

 

Untuk Gambar Di sini silahakan cari sendiri yach… bukannya aku pelit tapi.. gambarnya aku tdk dapat temukan yang bagus2 mas brow… klik di sini

 

Error E(X) hanya akan menjadi tak terdeteksi bila dibagi dengan P(X). Hal ini bisa ditunjukkan bahwa semua kesalahan berikut ini tidak dibagi dengan pilihan P(X) yang sesuai dan karenanya mampu dideteksi:

·         Semua bit kesalahan tunggal

·         Semua bit kesalahan ganda, selama P(X) memiliki sedikitnya tiga 1s

·         Apapun angka kesalahan yang garijil, selama P(X) memuat faktor (X + 1)

·         Apapun banyaknya kesalahan dimana panjangnya kurang dari panjang polynomial pembagi; yakni, kurang dari atau setara dengan panjang FCS.

·         Kesalahan yang besar sekali

Selain itu, dapat pula ditunjukkan bahwa bila semua pola kesalahan dianggap sama, maka untuk kesalahan dari panjang r + 1, probabilitas dari kesalahan yang tak terdeteksi E(X) dibagi dengan p (X) l adalah 1/2r-1, dan untuk kesalahan yang lebih panjang, probabilitasnya adalah 1/2r-1, dimana r adalah panjang FCS.

Empat versi P(X) yang telah digunakan secara luas adalah:

CRC-12

CRC-16

CRC-CCITT

CRC-32

= X12 + X11 + X3 + X2 + X + 1

= X16 + X15 + X2 + 1

= X16 + X12 + X5 + 1

= X32 + X26 + X23 + X22 + X16 + X 12 + X11+ X10 + X8 + X7 + X5    + X4 + X2+ X + 1

 

Sistem CRC-12 dipergunakan untuk transmisi sederatan sebesar 6-bit karakter dan menbangkitkan 12-bit FCS. Baik CRC-16 maupun CRC-COTT populer untuk 8-bit karakter, masing-masing di Amerika Serikat dan Eropa, di mana keduanya sama-sama menghasilkan 16-bit FCS. Nampaknya ini sesuai untuk sebagian besar aplikasi, meskipun CRC-32 ditentukan sebagai salah satu pilihan untuk standar transmisi synchronous ujung-ke-ujung.

CRC Generasi The Redundancy Check Siklus (CRC) lapangan adalah dua byte, yang berisi nilai biner 16-bit. Nilai CRC dihitung oleh perangkat transmisi, yang menambahkan CRC ke pesan. Perangkat penerima kalkulasi ulang CRC saat penerimaan pesan, dan membandingkan nilai yang dihitung dengan nilai aktual yang diterima di lapangan CRC. Jika kedua nilai tidak sama, suatu hasil kesalahan. 
CRC dimulai dengan terlebih dahulu preloading register 16-bit untuk semua 1 s. Kemudian proses dimulai dari penerapan berturut-turut delapan-bit byte pesan ke isi saat register.Hanya delapan bit data di masing-masing karakter yang digunakan untuk menghasilkan CRC. Start dan stop bit, dan bit paritas, tidak berlaku untuk CRC. 
Selama generasi CRC, masing-masing karakter delapan-bit eksklusif ORed dengan isi register. Hasilnya digeser ke arah bit paling signifikan (LSB), dengan nol diisi ke dalam bit yang paling signifikan (MSB) posisi. LSB diambil dan diperiksa. Jika LSB adalah 1, register kemudian ORed eksklusif dengan nilai, preset tetap. Jika LSB adalah 0, tidak ada tempat eksklusif OR membutuhkan. 
Proses ini diulang sampai delapan pergeseran telah dilakukan. Setelah pergeseran (kedelapan) lalu, karakter delapan-bit berikutnya adalah eksklusif ORed dengan nilai saat mendaftar, dan mengulangi proses selama delapan pergeseran lebih seperti dijelaskan di atas. Isi akhir register, setelah semua karakter pesan telah diterapkan, adalah nilai CRC. 
Menghasilkan CRC 
Langkah 1 Muat register 16-bit dengan hex ​​FFFF (semua 1 s). Panggilan ini register CRC. 
Langkah 2 Eksklusif ATAU byte delapan-bit pertama dari pesan dengan urutan byte rendah dari 16-bit CRC mendaftar, menempatkan hasilnya dalam register CRC. 
Langkah 3 Shift CRC mendaftar satu bit ke kanan (menuju LSB), zerofilling MSB. Ekstrak dan memeriksa LSB. 
Langkah 4 Jika LSB adalah 0, ulangi Langkah 3 (pergeseran lain). Jika LSB adalah 1, Eksklusif ATAU register CRC dengan hex A001 nilai polinomial (1010 0000 0000 0001). 
Langkah Langkah 5 Ulangi 3 dan 4 sampai delapan pergeseran telah dilakukan. Bila ini dilakukan, byte delapan-bit lengkap akan diproses. 
Langkah Langkah 6 Ulangi 2 … 5 untuk byte delapan-bit berikutnya pesan. Terus melakukan hal ini sampai semua byte telah diproses. 
Hasil akhir dari Isi register CRC adalah nilai CRC. 
Langkah 7 Ketika CRC ditempatkan ke dalam pesan, byte yang atas dan bawah harus bertukar seperti yang dijelaskan di bawah ini. 
Menempatkan CRC ke pesan yang 
Ketika 16-bit CRC (dua delapan-bit byte) ditransmisikan dalam pesan, urutan byte rendah akan ditransmisikan pertama, diikuti oleh urutan tinggi byte-misalnya, jika nilai CRC 1241 hex (0001 0010 0100 0001) : 

Gambar 9 CRC Byte Urutan 
Contoh 
Contoh dari fungsi bahasa C melakukan generasi CRC ditampilkan pada halaman berikut.Semua nilai-nilai CRC mungkin dimuat ke dalam dua array, yang hanya diindeks sebagai penambahan fungsi melalui buffer pesan. Satu array berisi semua 256 nilai CRC mungkin untuk byte tinggi dari bidang CRC 16-bit, dan array lain berisi semua nilai untuk byte rendah. 
Pengindeksan CRC dengan cara ini menyediakan eksekusi yang lebih cepat daripada yang dapat dicapai dengan menghitung nilai CRC baru dengan masing-masing karakter baru dari buffer pesan. 

Catatan: Fungsi ini melakukan swapping dari tinggi / rendah byte CRC internal. Byte sudah bertukar dalam nilai CRC yang kembali dari fungsi. Oleh karena itu nilai CRC kembali dari fungsi tersebut dapat langsung ditempatkan ke dalam pesan untuk transmisi. 
Fungsi membutuhkan dua argumen: 

 unsigned char * puchMsg, Sebuah pointer ke buffer pesan

          mengandung data biner yang akan digunakan

          untuk menghasilkan CRC

 unsigned short usDataLen, Jumlah byte dalam

          Pesan penyangga.

Fungsi mengembalikan CRC sebagai tipe unsigned pendek. CRC Generasi Fungsi 

 unsigned short CRC16 (puchMsg, usDataLen)

 unsigned char * puchMsg; / * pesan untuk menghitung CRC

 pada * /

 unsigned short usDataLen; / * jumlah byte dalam pesan 

 * /

 {

  unsigned char uchCRCHi = 0xFF; / * tinggi CRC byte

 diinisialisasi * /

  unsigned char uchCRCLo = 0xFF; / * low byte CRC

 diinisialisasi * /

  uIndex unsigned; / * akan indeks ke CRC

 lookup * /

            / * Table                  

   * /

  sementara (usDataLen -) / * melewati buffer pesan 

   * /

   {

   uIndex = uchCRCHi ^ * puchMsgg + +; / * menghitung CRC 

  * /

   uchCRCHi = uchCRCLo ^ auchCRCHi [uIndex};

   uchCRCLo = auchCRCLo [uIndex];

   }

  kembali (uchCRCHi << 8 | uchCRCLo);

 }

Orde Tinggi Byte Tabel

 / * Tabel nilai CRC untuk high-order byte * /

 statis unsigned char auchCRCHi [] = {

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40

 };

 

Orde Rendah Byte Tabel

 / * Tabel nilai CRC untuk low-order byte * /

 statis Char auchCRCLo [] = {

 0x00, 0xC0, 0xC1, 0x01, 0xc3, 0x03, 0x02, 0xC2, 0xC6, 0x06,

 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,

 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,

 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,

 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,

 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,

 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,

 0x3C, 0xFC, 0xfd, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,

 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,

 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, ​​0xED,

 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,

 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,

 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,

 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,

 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,

 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,

 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,

 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,

 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,

 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,

 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,

 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,

 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,

 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,

 0x43, 0x83, 0x41, 0x81, 0x80, 0x40

 };

 

 

Advertisements

Huft…tugas kuliah akhir menumpuk. Aku heran deh kenapa semua dosen kalau pas mau semseteran kasih tugas seabreg? Btw,this is my 2nd blog in wordpress setelah blog sebelumnya gk pernah di pakai gr2 lupa password. Semoga blog ini bertahan lama ^^