Rabu, 28 September 2011

Bahasa Assembly

Berkenalan dengan Bahasa Assembly untuk x86
Untuk memahami bahasa assembly, tidak bisa dilakukan secara langsung. Bagaimana kita menulis sebuah program untuk sebuah prosesor kalau “prosesornya apa” saja kita nggak tahu. Kita harus tahu dulu x86 itu apa, bagaimana memori (RAM) dikelola oleh prosesor, baru kita bisa bikin programnya. Prasyarat tambahan: 1. Konsep bilangan biner, desimal, oktal, dan heksadesimal. 2. Kode ASCII.
Apa itu x86 ?
Sejarahnya singkat mengenai Apa itu x86 ? Pada tahun 1986 Gordon Moore, Robert Noyce dan Andy Grove menemukan Intel Corp. Untuk menjalankan bisnis “INTegrated ELectronics” yang semula bernama M&N Electronics yang merupakan singkatan dari Moore & Noyce .Pertama kali dikenalkan prosesor Intel 4004 4-bit yang didesain oleh Federico Faggin. Lalu diproduksi penerusnya yaitu Intel 8008. Prosesor ini masih bermain di skala kHz, bisa dibayangkan jika kita mau menjalankan Windows Vista di sana?
G
Gambar 1. Intel C4040


Generasi selanjutnya yaitu Intel 8080, 8085, dan 8086, dan 8088. Telah terjadi evolusi arsitektur internal, kecepatan, ukuran fabrikasi, dan lain-lain. Intel 8086 adalah prosesor yang punya istri yaitu co-prosesor 8087. Jika 8086 adalah prosesor utama, maka 8087 adalah co-prosesor yang khusus menangani operasi matematika, terutama bilangan pecahan (floating point). Jika tidak ada 8087, maka komputer tetap bisa jalan hanya saja untuk operasi hitung menghitung agak lambat.8086 adalah prosesor 16-bit. Artinya dia mampu menangani operasi dengan data maksimal 16 bit sekali jalan. Evolusi berikutnya adalah Intel 80286, lalu 80386, 80486, dan 80586.
Mulai dari Intel 80386 dan sesudahnya, mereka adalah prosesor 32-bit. Ada beda register antara prosesor 32-bit dan 16-bit (nanti dijelaskan). Karena ada 8086 (80186), 80286, 386, 486 dan 586, maka arsitektur prosesor ini disebut dengan x86, dimana x bisa mewakili 1, 2, 3, 4, atau 5. Intel 80586 berganti nama menjadi Pentium (dari kata penta yang berarti lima).Evolusi Intel berikutnya tetap mempertahankan arsitektur x86 ini. Entah itu Pentium, Pentium Pro, Pentium II, Pentium III, Pentium 4, Pentium M, Pentium D, Pentium EE, Dual Core, Core Duo, Core 2 Duo, atau i7.
Nah bagaimana dengan prosesor milik AMD? Dulunya AMD adalah anak perusahaan Intel. Tapi kemudian mereka putus kontrak, dan menjadi perusahaan mikroprosesor sendiri yang bersaing dengan mantan bapaknya. AMD tetap membuat prosesor x86, arsitekturnya sama (kecuali Althon 64 dan prosesor x64 lainnya). Makanya Windows yang didesain untuk x86 bisa dijalankan dengan prosesor Intel atau AMD.
Arsitektur x86
Seperti yang sudah dijelaskan pada artikel-artikel sebelumnya yang saya buat, di dalam prosesor terdapat apa saja sih? Ada ALU (aritmethic logic unit), ada register, ada I/O ke system bus, dan ada interkoneksi internal CPU itu sendiri.
Prosesor x86 memiliki 5 kelompok register, yaitu:
1. General Purpose Registers Adalah register yang bisa dipakai untuk berbagai keperluan. Pada prosesor 8086 dan 286, register ini besarnya 16 bit. Register yang ada yaitu:
AX : accumulator register. Biasanya dipakai untuk menyimpan hasil hitungan matematika dan untuk menentukan service call.
BX : base register. Biasanya dipakai untuk menunjuk indeks alamat memori.
CX : counter register. Biasanya dipakai untuk pengulangan (loop).
DX : data register. Biasanya dipakai untuk menyimpan data keluar/masuk prosesor, serta dipakai di operasi perkalian dan pembagian.
Register generik ini masing-masing bisa “dipecah” menjadi dua, satu untuk MSB (high-order byte) dan satunya lagi untuk LSB (low-order byte). Register AX bisa dipecah menjadi AH (AX high) dan AL (AX low), demikian juga ada BH, BL, CH, CL, DH, DL. Sebagai contoh, bila AX sedang berisi 0110 0111 1101 0011(bin), maka AH berisi 0110 0111(bin) dan AL berisi 1101 0011(bin). Untuk prosesor 386 ke atas (yang sudah 32 bit), terdapat register EAX (extended AX), EBX, ECX, dan EDX. Masing-masing kapasitasnya 32 bit.
2. Segment Registers Adalah register yang tugasnya mencatat blok memori (baca: segmen) yang sedang digunakan. Bila isinya diubah sembarangan, program bisa kacau. Karena register ini kaitannya dengan memori sementara kita belum belajar manajemen memori, jadi penjelasan di bawah ini bisa saja membingungkan. Tak apa, terima saja dulu mentahnya.
CS : code segment. Menunjuk segmen memori tempat kode program yang sekarang sedang jalan.
DS : data segment. Menunjuk segmen memori tempat data-data program disimpan (seperti pre-defined string, buffer string, dan konstanta-konstanta).
SS : stack segment. Menunjuk segmen memori tempat “top” dari stack saat ini. “Segmen”nya, bukan “top”nya. Pembahasan tentang stack masih nanti.
ES : extra segment. Adalah register “bonus” yang belum tentu dipakai, tergantung programnya. Misalnya untuk menunjuk alamat video memory pada program game yang fokus pada grafis.
Pada prosesor 386 ke atas, ada tambahan extra segment lagi yang bernama FS dan GS. Huruf “F” dan “G” hanyalah urutan abjad sesudah “E” (ES), tidak ada arti khususnya. Semua register segmen, baik di prosesor 16-bit maupun 32-bit, kapasitasnya adalah 16-bit.
3. Pointer Registers Adalah register yang berfungsi sebagai pointer. Isi dari register ini adalah alamat memori, makanya dia dikatakan “menunjuk” (to point) ke suatu alamat memori tertentu. Kapasitas register pointer adalah 16 bit. Karena hanya 16 bit, maka tentu saja tidak semua alamat memori bisa ditunjuknya. Besar memori yang mampu ditangani hanya 216 byte = 64 KB (saja). Kecil amat! Padahal prosesor 16 bit bisa menangani memori sampai 1 MB. Maka dari itu, register pointer ini bekerja berpasangan dengan register segmen menghasilkan alamat memori lengkap, dan mampu menangani sampai 1 MB.
SP : stack pointer. Menunjuk ke “top” dari stack-nya langsung. Operasi push dan pop akan mengubah isi dari SP. Penjelasan tentang stack masih nanti.
BP : base pointer. Menunjuk ke sebuah alamat di bagian data program. Bekerjasama dengan DS. Biasa dipakai untuk menunjuk elemen array.
IP : instruction pointer. Menunjuk ke alamat memori tempat instruksi berikutnya, di bagian kode program. Anggap saja IP adalah program counter (PC). Register ini diubah otomatis sejalan dengan jalannya program. Pada prosesor 386 ke atas, terdapat register ESP, EBP, dan EIP yang kapasitasnya 32 bit sehingga mampu menangani memori sampai 232 byte = 4 GB.
4. Index Registers Register ini digunakan oleh operasi string dan block transfer di memori.
SI : source index.
DI : destination index.
Kapasitasnya 16 bit. Pada prosesor 386 ke atas, terdapat ESI dan EDI yang kapasitasnya 32 bit.
5. Flag Registers Namanya juga “bendera”, register ini berfungsi menandakan suatu keadaan “ya” (mengibarkan bendera) atau “tidak” (tidak mengibarkan bendera). Tentu saja tidak ada bendera di dalam CPU Anda, yang ada hanyalah bit 1 atau 0. Register bendera ini masing-masing besarnya 1 bit saja.
OF : overflow register. Bila terjadi overflow pada operasi matematika, maka OF bernilai 1. Bila tidak, isi 0.
SF : sign flag. Jika suatu operasi menghasilkan angka negatif, SF berisi 1.
ZF : zero flag. Jika suatu operasi menghasilkan angka nol, ZF berisi 1.
CF : carry flag. Berisi bit carry pada operasi penjumlahan atau bit borrow pada operasi pengurangan.
DF : direction flag. Menunjukkan arah pembacaan byte (maju atau mundur) pada operasi string.
PF : parity flag. Bila angka yang dihitung genap atau ganjil (tergantung sistemnya mau genap apa ganjil), PF berisi 1.
AF : auxiliary flag. Berisi 1 setelah penjumlahan dua bilangan BCD. Fungsinya seperti carry flag (CF) setelah bit ke-4 (bukan ke-8)
TF : trap flag. Menunjukkan mode debugging on atau off. Ini urusan internal CPU.
IF : interrupt flag. Bila IF bernilai 0, maka interupsi ke prosesor akan diabaikan.
Register yang hanya terdapat di 80286 ke atas:
NT : nested task.
IOPL : I/O protection level. (2 bit)
PE : protection enable.
MP : monitor co-processor.
EM : emulate co-processor.
TS : task switched.
ET : extention type.
RF : resume flag.
VF : virtual 8086 mode.
Jadi itulah register yang ada di prosesor Pentium/AMD (x86). Lebih sedikit dibanding MIPS ya? Memang, karena di MIPS ada 32 register dimana 16 diantaranya adalah general purpose, masih ditambah lagi 12 register general-purpose untuk floating point. Semuanya 32 bit. Di x86, register general purpose cuma 4, 16 bit doang pula. Makanya ketika mendesain program, manfaatkan sumberdaya prosesor yang terbatas ini sebaik-baiknya.

Manajemen memori

Ketika sebuah program dijalankan (katakanlah .exe), maka semua isi program dibaca dan dipindah ke memori (RAM) dengan susunan seperti ini.
Gambar contoh program satu segmen
  1. Bagian “reserved” sudah diatur oleh sistem operasi dan tidak bisa kita utak-atik lagi. Untuk program COM (program DOS yang berekstensi .com), bagian reserved ini sudah pasti ukurannya dan letaknya, yaitu dari alamat memori 0000(hex) sampai 00FF(hex).
  2. Bagian static data berisi data terdefinisi yang tidak berubah, seperti konstanta, string terdefinisi, dan buffer.
  3. Bagian program adalah instruksi-instruksi program yang nanti kita tulis dalam bahasa assembly. Tentu yang dijalankan oleh prosesor bukanlah bahasa assembly-nya, tapi sudah dalam bentuk bahasa mesin.
  4. Bagian dynamic data, tempat dimana variabel temporer berada. Perintah “malloc” di bahasa C memesan tempat di bagian ini. Dynamic data bisa membesar dan mengecil, tergantung banyaknya data yang diciptakan dan dihapus.
  5. Terakhir adalah stack, memori yang pasti disediakan di setiap program. Dasar dari stack terletak di alamat paling tinggi, dan tumbuh turun ke bawah. Nah, “top” dari stack bisa saja tabrakan dengan dynamic data; jika demikian akan muncul error “stack overflow.”
Memori di komputer kita yang hitungannya sudah gigabyte, dibagi-bagi menjadi beberapa blok (dikenal sebagai segmen). Satu segmen berukuran 64 KB. Gambar di atas adalah contoh program yang memakai memori satu segmen.
Apa bedanya program COM dan EXE? Program COM maksimal memakai memori hanya satu segmen, yaitu 64 KB (makanya kecil sekali). Zaman DOS dulu (dimana memori kecil dan sangat mahal), banyak sekali program COM.
Sebaliknya, program EXE bisa memakai lebih dari satu segmen. Bisa saja static data-nya banyak sekali, sampai disimpan bersegmen-segmen. Stacknya juga barangkali banyak sekali, memakai puluhan segmen. Bagian program? Ah, tak usah ditanya berapa ratus segmen yang dia pakai.
Coba jalankan Microsoft Word (winword.exe), lalu buka task manager. Lihat memori yang dipakainya (di bagian private use working set). Waktu pertama kali dijalankan, di komputer saya tertampil 14280 KB. Bagi dengan 64, maka Microsoft Word ini memakai 224 segmen di RAM.

Bermain dengan alamat memori

Dikenal dua jenis alamat memori. Yang pertama adalah alamat absolut, yaitu alamat yang secara fisik diakses oleh prosesor. Yang kedua adalah alamat relatif, yaitu alamat yang didasarkan pada pembagian segmen dan pergeseran (offset). Gambar tentang susunan program di atas adalah alamat relatif.
Misalkan kita kembali ke zaman dulu, dimana prosesor masih 16-bit dan memori komputer masih 1 MB. Satu megabyte berarti 1024 KB, sama dengan 1.048.576 byte. Setiap byte ini punya alamat absolut masing-masing, yaitu dari 00000(hex) sampai FFFFF(hex).
Komputer membagi memori 1 MB tadi seperti ini: Segmen 0000(hex) dimulai dari alamat absolut 00000(hex) sampai 0FFFF(hex) (alamat 0 – 65535). Segmen 0001(hex) dimulai dari alamat absolut 00010(hex) sampai 1000F(hex) (16 – 65551). Dan seterusnya sampai segmen FFFF(hex).
Cara mengubah alamat relatif ke alamat absolut: 1. Kalikan angka segmen dengan 16(dec) (= 10(hex)) 2. Kemudian jumlahkan dengan offset-nya.
Notasi untuk alamat relatif adalah [segmen]:[offset] dalam heksadesimal. Misal 0000:0001 dan FF87:550A.
Pembagian seperti tadi mengakibatkan adanya tumpang tindih (overlap) antarsegmen. Ilustrasinya:
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
0001 x x x x x x x x x x x x x x x x
0002 x x x x x x X x x x x x x x x x
0003 x x x x x x x x x x X x x x x x
0004 x x x x x x x x x x x x x x x x
0005 x x x x x x x x x x x x x x x x
Dalam tabel ini, baris adalah segmen, kolom adalah offset. Tanda x adalah byte yang saat itu ada di memori. Lihat byte yang saya tandai dengan merah (tanda x warna merah) itu. Kita boleh bilang bahwa dia terletak di segmen 0002 digeser 6 byte, bukan? Maka alamat relatifnya adalah 0002:0006. Tapi kita juga boleh bilang kalau dia terletak di segmen 0001 digeser 22 byte (= 16(hex)) bukan? Kalau begitu alamatnya menjadi 0001:0016. Baik 0002:0006 maupun 0001:0016 menunjuk ke alamat absolut yang sama, yaitu 00026(hex).
Demikian juga byte yang saya tandai dengan warna hijau. Dia bisa diakses dengan:
Alamat absolut = 0003A(hex)
Alamat relatif #1 = 0003:000A
Alamat relatif #2 = 0002:001A
Alamat relatif #3 = 0001:002A
Pada alamat relatif #1, “0003″ disimpan pada register segmen (entah itu SS, DS, CS, atau ES). Sedangkan “000A” disimpan pada register pointer (entah itu SP, IP, atau BP). Ilustrasi di atas sebenarnya kurang tepat, karena saya menggambarkan satu segmen sebesar 16 byte saja. Kenyataannya, satu segmen adalah 64 KB. Tapi mudah-mudahan ilustrasi tabel di atas bisa membantu Anda memahami soal segmentasi bertumpuk di memori ini. Untuk apa kita belajar beginian? Kelihatannya tidak penting, tapi saya percaya pasti ada gunanya. Terutama ketika Anda sudah kenal perintah assembly “LEA” (load effective address).

Bahasa Assembly x86

Akhirnya kita berkenalan dengan bahasanya setelah sekian lama berpusing-pusing dengan memori. Di bagian ini tidak semua perintah assembly saya jelaskan, hanya yang penting-penting dan sering dipakai saja. Bila ingin mendapatkan daftar perintah assembly, di internet maupun gramedia banyak.

Komentar

Komentar diawali dengan tanda titik koma (;).
; ini adalah komentar

Label

Label diakhiri dengan tanda titik dua (:).
Contoh: main: ,loop: ,proses: ,keluar:

Assembler directives

Directives adalah perintah yang ditujukan kepada assembler ketika sedang menerjemahkan program kita ke bahasa mesin. Directive dimulai dengan tanda titik. .model : memberitahu assembler berapa memori yang akan dipakai oleh program kita. Ada model tiny, model small, model compact, model medium, model large, dan model huge. .data : memberitahu assembler bahwa bagian di bawah ini adalah data program. .code : memberitahu assembler bahwa bagian di bawah ini adalah instruksi program. .stack : memberitahu assembler bahwa program kita memiliki stack. Program EXE harus punya stack. Kira-kira yang penting itu dulu. Semua directive yang dikenal assembler adalah: .186 .286 .286c .286p .287 .386 .386c .386p .387 .486 .486p .8086 .8087 .alpha .break .code .const .continue .cref .data .data? .dosseg .else .elseif .endif .endw .err .err1 .err2 .errb .errdef .errdif .errdifi .erre .erridn .erridni .errnb .errndef .errnz .exit .fardata .fardata? .if .lall .lfcond .list .listall .listif .listmacro .listmacroall .model .no87 .nocref .nolist .nolistif .nolistmacro .radix .repeat .sall .seq .sfcond .stack .startup .tfcond .type .until .untilcxz .while .xall .xcref .xlist. Pusing? Nggak usah dipikirin.

Definisi data

DB : define bytes. Membentuk data byte demi byte. Data bisa data numerik maupun teks. catatan: untuk membentuk data string, pada akhir string harus diakhiri tanda dolar ($). sintaks: {label} DB {data} contoh: teks1 db "Hello world $" DW : define words. Membentuk data word demi word (1 word = 2 byte). sintaks: {label} DW {data} contoh: kucing dw ?, ?, ? ;mendefinisikan tiga slot 16-bit yang isinya don’t care (disimbolkan dengan tanda tanya) DD : define double words. Membentuk data doubleword demi doubleword (4 byte). sintaks: {label} DD {data} EQU : equals. Membentuk konstanta. sintaks: {label} EQU {data} contoh: sepuluh EQU 10 untuk assembly yang melibatkan bilangan pecahan (floating point) saya belum belajar, jadi dalam tutorial ini saya hanya memakai bilangan bulat (integer). Sebenarnya masih ada DF (define far words), DQ (define quad words), dan DT (define ten bytes).

Perpindahan data

MOV : move. Memindahkan suatu nilai dari register ke memori, memori ke register, atau register ke register. sintaks: MOV {tujuan}, {sumber} contoh:
mov AX, 4C00h ;mengisi register AX dengan 4C00(hex). mov BX, AX ;menyalin isi AX ke BX. mov CL, [BX] ;mengisi register CL dengan data di memori yang alamatnya ditunjuk BX. mov CL, [BX] + 2 ;mengisi CL dengan data di memori yang alamatnya ditunjuk BX lalu geser maju 2 byte. mov [BX], AX ;menyimpan nilai AX pada tempat di memori yang ditunjuk BX. mov [BX] – 1, 00101110b ;menyimpan 00101110(bin) pada alamat yang ditunjuk BX lalu geser mundur 1 byte.
LEA : load effective address. Mengisi suatu register dengan alamat offset sebuah data. sintaks: LEA {register}, {sumber} contoh: lea DX, teks1 XCHG : exchange. Menukar dua buah register langsung. sintaks: XCHG {register 1}, {register 2} Kedua register harus punya ukuran yang sama. Bila sama-sama 8 bit (misalnya AH dengan BL) atau sama-sama 16 bit (misalnya CX dan DX), maka pertukaran bisa dilakukan. Sebenarnya masih banyak perintah perpindahan data, misalnya IN, OUT, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, LDS, LES, LAHF, SAHF, dan XLAT. Tapi semua ini ribet dan bikin pusing pembaca.

Operasi logika

AND : melakukan bitwise and. sintaks: AND {register}, {angka} AND {register 1}, {register 2} hasil disimpan di register 1. contoh: mov AL, 00001011b mov AH, 11001000b and AL, AH ;sekarang AL berisi 00001000(bin), sedangkan AH tidak berubah. OR : melakukan bitwise or. sintaks: OR {register}, {angka} OR {register 1}, {register 2} hasil disimpan di register 1. NOT : melakukan bitwise not (one’s complement) sintaks: NOT {register} hasil disimpan di register itu sendiri. XOR : melakukan bitwise eksklusif or. sintaks: XOR {register}, {angka} XOR {register 1}, {register 2} hasil disimpan di register 1. Tips: sebuah register yang di-XOR-kan dengan dirinya sendiri akan menjadi berisi nol. SHL : shift left. Menggeser bit ke kiri. Bit paling kanan diisi nol. sintaks: SHL {register}, {banyaknya} SHR : shift right. Menggeser bit ke kanan. Bit paling kiri diisi nol. sintaks: SHR {register}, {banyaknya} ROL : rotate left. Memutar bit ke kiri. Bit paling kiri jadi paling kanan kali ini. sintaks: ROL {register}, {banyaknya} Bila banyaknya rotasi tidak disebutkan, maka nilai yang ada di CL akan digunakan sebagai banyaknya rotasi. ROR : rotate right. Memutar bit ke kanan. Bit paling kanan jadi paling kiri. sintaks: ROR {register}, {banyaknya} Bila banyaknya rotasi tidak disebutkan, maka nilai yang ada di CL akan digunakan sebagai banyaknya rotasi. Perintah menarik yang tidak dijelaskan di sini: RCL dan RCR.

Operasi matematika

ADD : add. Menjumlahkan dua buah register. sintaks: ADD {tujuan}, {sumber} operasi yang terjadi: tujuan = tujuan + sumber. carry (bila ada) disimpan di CF. ADC : add with carry. Menjumlahkan dua register dan carry flag (CF). sintaks: ADC {tujuan}, {sumber} operasi yang terjadi: tujuan = tujuan + sumber + CF. carry (bila ada lagi) disimpan lagi di CF. INC : increment. Menjumlah isi sebuah register dengan 1. Bedanya dengan ADD, perintah INC hanya memakan 1 byte memori sedangkan ADD pakai 3 byte. sintaks: INC {register} SUB : substract. Mengurangkan dua buah register. sintaks: SUB {tujuan}. {sumber} operasi yang terjadi: tujuan = tujuan – sumber. borrow (bila terjadi) menyebabkan CF bernilai 1. SBB : substract with borrow. Mengurangkan dua register dan carry flag (CF). sintaks: SBB {tujuan}, {sumber} operasi yang terjadi: tujuan = tujuan – sumber – CF. borrow (bila terjadi lagi) menyebabkan CF dan SF (sign flag) bernilai 1. DEC : decrement. Mengurang isi sebuah register dengan 1. Jika SUB memakai 3 byte memori, DEC hanya memakai 1 byte. sintaks: DEC {register} MUL : multiply. Mengalikan register dengan AX atau AH. sintaks: MUL {sumber} Bila register sumber adalah 8 bit, maka isi register itu dikali dengan isi AL, kemudian disimpan di AX. Bila register sumber adalah 16 bit, maka isi register itu dikali dengan isi AX, kemudian hasilnya disimpan di DX:AX. Maksudnya, DX berisi high order byte-nya, AX berisi low order byte-nya. IMUL : signed multiply. Sama dengan MUL, hanya saja IMUL menganggap bit-bit yang ada di register sumber sudah dalam bentuk two’s complement. sintaks: IMUL {sumber} DIV : divide. Membagi AX atau DX:AX dengan sebuah register. sintaks: DIV {sumber} Bila register sumber adalah 8 bit (misalnya: BL), maka operasi yang terjadi: -AX dibagi BL, -hasil bagi disimpan di AL, -sisa bagi disimpan di AH. Bila register sumber adalah 16 bit (misalnya: CX), maka operasi yang terjadi: -DX:AX dibagi CX, -hasil bagi disimpan di AX, -sisa bagi disimpan di DX. IDIV : signed divide. Sama dengan DIV, hanya saja IDIV menganggap bit-bit yang ada di register sumber sudah dalam bentuk two’s complement. sintaks: IDIV {sumber} NEG : negate. Membuat isi register menjadi negatif (two’s complement). Bila mau one’s complement, gunakan perintah NOT. sintaks: NEG {register} hasil disimpan di register itu sendiri.

Pengulangan

LOOP : loop. Mengulang sebuah proses. Pertama register CX dikurangi satu. Bila CX sama dengan nol, maka looping berhenti. Bila tidak nol, maka lompat ke label tujuan. sintaks: LOOP {label tujuan} Tips: isi CX dengan nol untuk mendapat jumlah pengulangan terbanyak. Karena nol dikurang satu sama dengan -1, atau dalam notasi two’s complement menjadi FFFF(hex) yang sama dengan 65535(dec). LOOPE : loop while equal. Melakukan pengulangan selama CX ≠ 0 dan ZF = 1. CX tetap dikurangi 1 sebelum diperiksa. sintaks: LOOP {label tujuan} LOOPZ : loop while zero. Identik dengan LOOPE. LOOPNE : loop while not equal. Melakukan pengulangan selama CX ≠ 0 dan ZF = 0. CX tetap dikurangi 1 sebelum diperiksa. sintaks: LOOPNE {label tujuan} LOOPNZ : loop while not zero. Identik dengan LOOPNE. REP : repeat. Mengulang perintah sebanyak CX kali. sintaks: REP {perintah assembly} contoh:
mov CX, 05 rep inc BX ;register BX ditambah 1 sebanyak 5x.
REPE : repeat while equal. Mengulang perintah sebanyak CX kali, tetapi pengulangan segera dihentikan bila didapati ZF = 1. sintaks: REPE {perintah assembly} REPZ : repeat while zero. Identik dengan REPE. REPNE : repeat while not equal. Mengulang perintah sebanyak CX kali, tetapi pengulangan segera dihentikan bila didapati ZF = 0. sintaks: REPNE {perintah assembly} REPNZ : repeat while not zero. Identik dengan REPNE.

Perbandingan

CMP : compare. Membandingkan dua buah operand. Hasilnya mempengaruhi sejumlah flag register. sintaks: CMP {operand 1}, {operand 2}. Operand ini bisa register dengan register , register dengan isi memori, atau register dengan angka. CMP tidak bisa membandingkan isi memori dengan isi memori. Hasilnya adalah:
Kasus Bila operand 1 < operand 2 Bila operand 1 = operand 2 Bila operand 1 > operand 2
Signed binary OF = 1, SF = 1, ZF = 0 OF = 0, SF = 0, ZF = 1 OF = 0, SF = 0, ZF = 0
Unsigned binary CF = 1, ZF = 0 CF = 0, ZF = 1 CF = 0, ZF = 0

Lompat-lompat

JMP: jump. Lompat tanpa syarat. Lompat begitu saja. sintaks: JMP {label tujuan} Lompat bersyarat sintaksnya sama dengan JMP, yaitu perintah jump diikuti label tujuan.
Perintah Arti Syarat Kasus Keterangan (“op” = operand) Mengikuti CMP?
JA jump if above CF = 0 ∧ ZF = 0 unsigned lompat bila op 1 > op 2 ya
JNBE jump if not below or equal
JB jump if below CF = 1 ∧ ZF = 0 unsigned lompat bila op 1 < op 2 ya
JNAE jump if not above or equal
JAE jump if above or equal CF = 0 ∨ ZF = 1 unsigned lompat bila op 1 ≥ op 2 ya
JNB jump if not below
JBE jump if below or equal CF = 1 ∨ ZF = 1 unsigned lompat bila op 1 ≤ op 2 ya
JNA jump if not above
JG jump if greater OF = 0 ∧ ZF = 0 signed lompat bila op 1 > op 2 ya
JNLE jump if not less or equal
JGE jump if greater or equal OF = 0 ∨ ZF = 1 signed lompat bila op 1 ≥ op 2 ya
JNL jump if not less than
JL jump if less than OF = 1 ∧ ZF = 0 signed lompat bila op 1 < op 2 ya
JNGE jump if not greater or equal
JLE jump if less or equal OF = 1 ∨ ZF = 1 signed lompat bila op 1 ≤ op 2 ya
JNG jump if not greater
JE jump if equal ZF = 1 keduanya lompat bila op 1 = op 2 ya
JZ jump if zero ZF = 1 keduanya lompat bila op 1 = op 2 ya
JNE jump if not equal ZF = 0 keduanya lompat bila op 1 ≠ op 2 ya
JNZ jump if not zero ZF = 0 keduanya lompat bila op 1 ≠ op 2 ya
JC jump if carry CF = 1 N/A lompat bila carry flag = 1 tidak
JNC jump if not carry CF = 0 N/A lompat bila carry flag = 0 tidak
JP jump on parity PF = 1 N/A lompat bila parity flag = 1 tidak selalu
JPE jump on parity even lompat bila bilangan genap
JNP jump on not parity PF = 0 N/A lompat bila parity flag = 0 tidak selalu
JPO jump on parity odd lompat bila bilangan ganjil
JO jump if overflow OF = 1 N/A lompat bila overflow flag = 1 tidak
JNO jump if not overflow OF = 0 N/A lompat bila overflow flag = 0 tidak
JS jump if sign SF = 1 N/A lompat bila bilangan negatif tidak
JCXZ jump if CX is zero CX = 0000 N/A lompat bila CX berisi nol tidak

Operasi stack

PUSH : push. Menambahkan sesuatu ke stack. Sesuatu ini harus register berukuran 16 bit (pada 386+ harus 32 bit), tidak boleh angka, tidak boleh alamat memori. Maka Anda tidak bisa mem-push register 8-bit seperti AH, AL, BH, BL, dan kawan-kawannya. sintaks: push {register 16-bit sumber} contoh: push DX push AX Setelah operasi push, register SP (stack pointer) otomatis dikurangi 2 (karena datanya 2 byte). Makanya, “top” dari stack seakan-akan “tumbuh turun”. POP : pop. Mengambil sesuatu dari stack. Sesuatu ini akan disimpan di register tujuan dan harus 16-bit. Maka Anda tidak bisa mem-pop menuju AH, AL, dkk. sintaks: POP {register 16-bit tujuan} contoh: POP BX Setelah operasi pop, register SP otomatis ditambah 2 (karena 2 byte), sehingga “top” dari stack “naik” lagi. Tip: karena register segmen tidak bisa diisi langsung nilainya, Anda bisa menggunakan stack sebagai perantaranya. Contoh kodenya: mov AX, seg teks1 push AX pop DS PUSHF : push flags. Mem-push semua isi register flag ke dalam stack. Biasa dipakai untuk membackup data di register flag sebelum operasi matematika. Sintaks: PUSHF ;(saja). POPF : pop flags. Lawan dari pushf. Sintaks: POPF ;(saja).
POPA : pop all general-purpose registers. Adalah ringkasan dari sejumlah perintah dengan urutan:
pop DI pop SI pop BP pop SP pop BX pop DX pop CX pop AX
Urutan sudah ditetapkan seperti itu. sintaks: POPA ;(saja). Jauh lebih cepat mengetikkan POPA daripada mengetik POP-POP-POP yang banyak itu, bukan?
PUSHA : push all general-purpose registers. Lawan dari POPA, dimana PUSHA adalah singkatan dari sejumlah perintah dengan urutan yang sudah ditetapkan:
push AX push CX push DX push BX push SP push BP push SI push DI
Jangan tanyakan kenapa setelah urutannya AX langsung CX serta DX dan bukannya BX dulu. Bukan saya yang ngatur urutannya seperti itu.

Operasi pada register flag

CLC : clear carry flag. Menjadikan CF = 0. Sintaks: CLC ;(saja). STC : set carry flag. Menjadikan CF = 1. Sintaks: STC ;(saja). CMC : complement carry flag. Melakukan operasi NOT pada CF. Yang tadinya 0 menjadi 1, dan sebaliknya. CLD : clear direction flag. Menjadikan DF = 0. Sintaks: CLD ;(saja). STD : set direction flag. Menjadikan DF = 1. CLI : clear interrupt flag. Menjadikan IF = 0, sehingga interrupt ke CPU akan di-disable. Biasanya perintah CLI diberikan sebelum menjalankan sebuah proses penting yang riskan gagal bila diganggu. STI : set interrupt flag. Menjadikan IF = 1.

Perintah lainnya

ORG : origin. Mengatur awal dari program (bagian static data). Analoginya seperti mengatur dimana letak titik (0, 0) pada koordinat Cartesius. sintaks: ORG {alamat awal} Pada program COM (program yang berekstensi .com), harus ditulis “ORG 100h” untuk mengatur alamat mulai dari progam pada 0100(hex), karena dari alamat 0000(hex) sampai 00FF(hex) sudah dipesan oleh sistem operasi (DOS). INT : interrupt. Menginterupsi prosesor. Prosesor akan: 1. Membackup data registernya saat itu, 2. Menghentikan apa yang sedang dikerjakannya, 3. Melompat ke bagian interrupt-handler (entah dimana kita tidak tahu, sudah ditentukan BIOS dan DOS), 4. Melakukan interupsi, 5. Mengembalikan data registernya, 6. Meneruskan pekerjaan yang tadi ditunda. sintaks: INT {nomor interupsi} IRET : interrupt-handler return. Kita bisa membuat interrupt-handler sendiri lho! Ada caranya. Perintah IRET adalah perintah yang menandakan bahwa interrupt-handler kita selesai, dan prosesor boleh melanjutkan pekerjaan yang tadi tertunda. CALL : call procedure. Memanggil sebuah prosedur. Soal ini saya belum mengerti benar, jadi penjelasannya sementara tidak ada dulu. sintaks: CALL {label nama prosedur} RET : return. Tanda selesai prosedur. Setiap prosedur harus memiliki RET di ujungnya. Soal ini saya belum mengerti benar, jadi penjelasannya sementara tidak ada dulu. sintaks: RET ;(saja) HLT : halt. Membuat prosesor menjadi tidak aktif. Prosesor harus mendapat interupsi dari luar atau di-reset supaya aktif kembali. Jadi, jangan gunakan perintah HLT untuk mengakhiri program!! Sintaks: HLT ;(saja). NOP : no operation. Perintah ini memakan 1 byte di memori tetapi tidak menyuruh prosesor melakukan apa-apa selama 3 clock prosesor. Berikut contoh potongan program untuk melakukan delay selama 0,1 detik pada prosesor Intel 80386 yang berkecepatan 16 MHz.
mov ECX, 533333334d ;ini adalah bilangan desimal idle: nop loop idle

Program assembly pertama

Coba ketik kode berikut di notepad++.
.model small
.code
org 100h
main:
mov AH, 02
mov DL, 65
int 21h
int 20h
end main
Simpan sebagai ‘HurufA.asm’. Kemudian assemble file tadi dengan assembler, misalnya TASM (turbo assembler). Bila bingung cari dimana, silakan download di sini. Lebih bagus lagi bila Anda menjalankannya di sistem operasi DOS (seperti MS DOS 6.22 dalam Virtual PC). Cara assemble-nya adalah tasm namafile.asm.


E:\> tasm hurufa.asm
Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 Borland International

Assembling file:   hurufa.asm
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  405k
Kemudian link file tadi dengan cara tlink namafile.obj untuk menjadikannya EXE atau tlink /t namafile.obj untuk menjadikan COM.
E:\> tlink /t hurufa.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International
Karena program kita tidak memiliki direktif .stack dan ada tertulis org 100h, maka program kita harus menjadi COM, bukan EXE. Maka dari itu, jangan melakukan linking tanpa parameter ‘/t’. Kemudian coba jalankan program itu.
E:\> hurufa.com
A
E:\> _
Bingung? Program kita memang hanya menulis huruf A di layar. Mari kita lihat kodenya. .model small baris ini memberitahu assembler bahwa program kita boleh memakai RAM maksimal 64 KB saja. .code baris ini memberitahu assembler bahwa bagian di bawah ini adalah kode program. main: ini adalah sebuah label. mov AH, 02 register AH diisi dengan angka 02(desimal). mov DL, 65 register DL diisi dengan angka 65(desimal). Angka 65 adalah kode ASCII untuk huruf A. int 21h lakukan interupsi nomor 21(hex). Interupsi 21(hex) adalah interupsi DOS untuk melakukan fungsi DOS, dimana apa yang dilakukan oleh komputer ditentukan dari isi register AH. Kali ini, register AH berisi 02. Menurut tabel interupsi, angka 02 itu berarti “cetak karakter, dimana kode ASCII-nya harus disimpan dalam DL.” Sekarang lah, komputer mencetak huruf A di layar. int 20h lakukan interupsi nomor 20(hex). Interupsi 20(hex) adalah interupsi DOS untuk mengakhiri program. Di saat inilah, program berhenti dan kontrol dikembalikan pada sistem operasi (DOS). end main akhir dari kode program untuk label “main”. Semua kode program assembly harus diakhiri kata end. Untuk menulis satu huruf saja repot banget yah? Begitulah, dunia komputer level rendah. Tapi begitulah prosesor mengerti apa yang harus dikerjakannya. Bisa dibayangkan betapa sibuknya prosesor Anda? Dia harus menjalankan perintah satu-satu begini, dimana satu perintah bisa menghabiskan puluhan clock prosesor, itu pun baru satu program. Sistem operasi Anda multitasking bukan? Berapa ratus program yang berjalan secara simultan dalam satu waktu? Berapa juta instruksi per programnya? Bisa dibayangkan betapa sibuknya prosesor Anda?
http://indahabni.blogspot.com/2011/09/bahasa-berkenalan-dengan-bahasa.html

Computer Networking (TCP/IP Edition)

TCP/IP adalah protokol yang populer digunakan/diimplementasikan untuk saling mengkoneksikan jaringan lokal dengan metode “internet” (inget i-nya kecil… = interconnect networking). Sampai pada suatu saat, seluruh jaringan-jaringan yang ada di dunia ini telah terkoneksi, sehingga lahirlah produk hebat dari internet bernama The Internet. (Tapi sekali lagi saya tegaskan, banyak orang, termasuk saya, yang maksudnya nulis “internet” malah jadi “Internet”. Atau sebaliknya, maksudnya menulis “Internet” malah jadi “internet”. Gapapa lah, soalnya sekarang internet & Internet emang udah mengcover seluruh dunia ‘kan…). Mari kita bongkar dan berkarya wisata ke layer-layer pada TCP/IP!!!
Biar lebih jelas, pertama-tama saya kasih gambar ini nih.. Semua obrolan kita di postingan ini mengacu pada gambar ini:

Layer-Layer dan Protokolnya Pada TCP/IP
Layer-Layer dan Protokolnya Pada TCP/IP
Gambar ini diambil dari situs Wikipedia. Ini adalah 4 layer teratas (layer 5, 4, 3, dan 2) dari layer-layer TCP/IP. Sedangkan layer 1 (Layer Fisik) TCP/IP gak dimasukkan dalam gambar ini..
TCP/IP disebut juga TCP/IP Suite, atau seperangkat protokol komunikasi data. Jadi sebenernya yang disebut protokol itu siapa? Apakah “TCP/IP” nya ATAU protokol-protokol yang ada di tiap layer itu sihh? (Coba lihat gambar)
Jyah, ini mah sama aja kayak analogi begini:
Microsoft Office Suite 2010 adalah produk office dari Microsoft. Didalam Microsoft Office Suite 2010, terdapat:
  • Aplikasi word processing, menggunakan Microsoft Word
  • Aplikasi worksheet, matematik, dan matriks, menggunakan Microsoft Excel
  • Aplikasi membuat database, menggunakan Microsoft Access
  • dan seterusnya
Kalo pake analogi begini, anggap aja satu bundel Microsoft Office ini adalah “TCP/IP”-nya… sedangkan Microsoft Word, Excel, Access, Outlook, dkk sebagai protokol-protokol di tiap layernya.. Paham? Okede…
Ada pertanyaan bagus dari adik kelas, kenapa nama protokol komunikasi yang dikembangkan ARPA ini disebut “TCP/IP”? Wah, pertanyaan yang sangat fundamental (haha). Langsung aja saya jawab begini:
  1. Tanya ke ARPA, dijamin dapet jawaban yang jelas.. hehehe…
  2. Kalo kita ga bisa ke Amerika ketemu salah satu Researcher ARPA, mending kita maen tebak-tebak buah manggis… Kalo kata tebak2an.. menurut saya kenapa dinamakan “TCP/IP” adalah karena dua protokol TCP, dan IP ini (Coba lihat lagi gambarnya.. TCP ada di layer 4, dan IP ada di layer 3) adalah protokol yang paling sering digunakan dan jadi primadona dalam komunikasi data… Mungkin TCP dan IP sudah dianggap maskot dari sekumpulan geng protokol ini, sehingga dijadikan nama geng nya.. hehehe…
Oke saatnya karya wisata ke Layer 1 (Layer Fisik)………(1 jam kemudian)…..
*Sopir bisnya gak tau tempat-tempat di Layer Fisik… jadi kita langsung ke Layer 2 (Layer Data-Link) aja ya anak-anak??! Iya paaakkk…*
Layer 2 (Layer Data-Link)
Kita karya wisata ke salah satu protokol yang ada di layer ini, ARP:
ARP & RARP (Address Resolution Protocol & Reverse/Inverse Address Resolution Protocol): adalah protokol yang bertugas untuk memetakan IP Address menjadi alamat MAC (Media Access Control) juga untuk sebaliknya, memetakan MAC Address menjadi IP Address.
Untuk melihat alamat IP (Layer 3) dan alamat fisik MAC (Layer 2). Pada shell Linux, ketik perintah “ifconfig” dan untuk cmd Windows, ketik perintah “ipconfig”
root@eniac:/home/inan# ifconfig
eth0 Link encap:Ethernet  HWaddr 00:1b:24:2a:3e:e0
inetaddr:192.168.0.2 Bcast:192.168.0.255 Mask 255.255.255.0
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Interrupt:20 Base address:0xa000
wlan0 Link encap:Ethernet  HWaddr 00:19:7e:45:99:eb
inetaddr:217.0.0.7 Bcast:217.0.0.255 Mask 255.255.255.0
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Yang saya garis bawah adalah alamat MAC (alamat device) dan yang saya bold adalah alamat IP (Layer 3). Penting nih.. tiap alamat MAC (alamat device) tidak ada yang sama di dunia ini. Seperti juga contohnya alamat MAC LAN card saya (eth0) dan Wireless card saya (wlan0). Ini aja udah beda… Apalagi dengan komputer lain :P
Nah, sekarang… tugas ARP pada komputer saya adalah mengabarkan kepada seluruh node di dalam jaringan WLAN saya bahwa IP 217.0.0.7 mempunyai alamat MAC 00:19:7e:45:99:eb begitu juga untuk LAN, ARP akan membroadcast informasi ke tiap node bahwa alamat 192.168.0.2 mempunyai alamat MAC 00:1b:24:2a:3e:e0.
Sebenarnya untuk apa alamat MAC? Alamat MAC diperlukan untuk transfer data yang secara fisik dalam satu jaringan. Kalau begitu untuk apa alamat IP? Wogh… Alamat IP digunakan sebagai alamat logic tiap node untuk kebutuhan pengalamatan jaringan-jaringan karena (nanti akan dijelaskan ketika kita berkarya wisata ke Layer 3 hehehe…). Kalo peran ARP dalam komunikasi di jaringan lokal?? Jika anda pernah mengkoneksikan komputer anda ke sebuah jaringan (pake switch misalnya) maka tanpa peran ARP, mungkin komputer anda tidak akan pernah mendapatkan paket data karena “kesasar” di jaringan lokal. Hehe.. Switch bekerja pada layer 2. Sebenernya switch memiliki “database” ARP table di dalam switch tersebut. Isinya kurang lebih (contoh) seperti ini:
IP Address MAC Address Lewat port switch…
192.168.0.1 00:1b:cc:c0:bd:e0 Port 1 switch
192.168.0.2 00:1b:24:2a:3e:e0 Port 2 switch
192.168.0.3 00:1c:13:dd:a2:bb Port 3 switch
192.168.0.4 00:1c:25:1c:ae:4e Port 4 switch
Tabel ARP pada Switch 4 port yang terisi penuh menuju node-node.
Cara switch bekerja adalah dengan membaca ARP Table nya. Baris-baris pada table tersebut selalu di update oleh protokol ARP secara periodik. Misalnya ada paket datang ke switch dari IP 192.168.0.1 yang akan menuju 192.168.0.2. ARP akan me-resolv alamat 192.168.0.2 menjadi 00:1b:24:2a:3e:e0, sehingga switch mengerti maksud alamat logic (IP) tersebut maksudnya adalah alamat fisik tertentu yang berada di port mana, kemudian switch akan meneruskan paket tersebut menuju port nomer 2 pada switch (ke komputer dengan alamat MAC 00:1b:24:2a:3e:e0 atau beralamat logic 192.168.0.2). Untuk selanjutnya paket dari 192.168.0.1 tersebut di proses secara lokal oleh komputer 192.168.0.2….
Layer 3 (Layer Network)
Kita karya wisata ke salah satu protokol yang ada di layer ini, IP:
IP (Internet Protocol): adalah protokol yang bertugas untuk pengalamatan logic node. Selain pengalamatan fisik, diperlukan juga pengalamatan logic. Mungkin anda berpikir, untuk apa pengalamatan logic, kenapa kita tidak ber-internet dengan menggunakan alamat fisik (Layer 2) saja? Toh, alamat fisik tiap Network-Interface-Card berbeda-beda di dunia ini… Jadi ga kan ketuker-tuker kalo misal saya berinternet dengan alamat fisik saja…
Ok… ini karena alamat fisik tidak bisa di masking. Alamat fisik komputer 00:1b:24:2a:3e:e0 tidak bisa di masking menjadi 00:1b:24:2a:3e:XX… Karena bisa saja 00:1b:24:2a:3e:e0 tidak berada di network yang sama dengan komputer beralamat fisik 00:1b:24:2a:3e:aa misalnya… (perhatikan bagian terakhir “e0” diganti menjadi “aa”)
Jadi untuk mengetahui alamat jaringan, tidak bisa dengan menggunakan alamat fisik. Alamat fisik spesifik untuk pengalamatan langsung untuk host tertentu saja (Direct-Delivery).
Agar ngerti maksudnya, bisa saya jelaskan bersamaan dengan intro di layer 3 ini…

Routing Antar Dua Jaringan
Routing Antar Dua Jaringan
Dari gambar ini, routing table pada ROUTER bisa saya jelaskan seperti ini:
Source Network Destination Network Interface
192.168.0.X (byte terakhir terserah, asal masih berada di sub-net 192.168.0) 192.168.1.X m0
192.168.1.X 192.168.0.X m1
Sekarang, bisa anda bayangkan jika alamat fisik (host-spesific) yang harus di-handle oleh router… Butuh berapa entry baris agar router bisa mengerti jika harus ke interface 00:1b:24:2a:3e:e0 harus kemana. (Ini masih interkoneksi dua jaringan… bagaimana nanti kalo sebesar Internet??? Hadohhhhh) Ok, sudah cukup berandai-andai. Untuk itu alamat logic SANGAT diperlukan…
Layer 4 (Layer Transport)
Kita karya wisata ke salah satu protokol yang ada di layer ini, TCP dan UDP:
TCP (Transmission Control Protocol): adalah protokol yang bertugas untuk membentuk koneksi antar node. Sifat TCP adalah connection-oriented. TCP baru akan membuat koneksi jika kedua belah pihak telah setuju. Karenanya, TCP dianggap reliable (dapat diandalkan). Berbeda dengan UDP (User Datagram Protocol) yang connectionless, transmisi data yang berbasis UDP akan bersifat nothing-to-lose (hehe) karena tidak ada kesepakatan dulu antar node yang bertransmisi.
Kalau kita beranalogi, misalnya kita mau mengirimkan barang dari Bandung ke Surabaya dengan menggunakan jasa si Upin (TCP) atau Ipin (UDP) nih yah?! Untuk diketahui, Upin lebih teliti dalam mengirimkan barang. Upin suka nelpon dulu orang yang akan dikirimkan barang di Surabaya itu, apakah rumahnya di Surabaya bisa dikunjungi atau engga… Kalau bisa dikunjungi, Upin baru mulai ngirim barangnya… Selain itu, Upin juga memikirkan jalur yang akan ditempuh, apakah lewat jalur Pantura atau lewat jalur selatan. Terakhir, Upin bertanggung jawab dalam mengirimkan barang. Upin suka ngasih tau ke kita bahwa barang yang kita kirimkan udah sampai ke Surabaya dengan selamat atau engga. Kalau engga, akan dikirimkan lagi dari Bandung. Secara periodik Upin memberitahukan ke kita sebagai pengirim di Bandung… Kalau Ipin, dia sih maen berangkat-berangkat aje… Tapi secara waktu, memang Ipin lebih cepat prosesnya. Karena mungkin sewaktu Upin masi sibuk nelpon-nelpon ke Surabaya, si Ipin udah nyampe Cirebon.. Jadi Ipin mah ga mikirin orang di Surabaya-nya bisa dikunjungi atau tidak, terus ga mikirin lewat jalur mana aja, yang penting sampe Surabaya.. mo lewat Garut juga ayo-ayo ajahh.. jyahahahahah…
Pada kenyataannya, TCP digunakan untuk transmisi yang sifatnya kritikal dan tentu saja, butuh kehandalan. Sedangkan UDP digunakan untuk komunikasi antar proses yang tidak begitu memerlukan kehandalan, justeru membutuhkan kecepatan respon.
Layer 5 (Layer Application)
Kita karya wisata ke salah satu protokol yang ada di layer ini, DNS:
DNS (Domain Name Service): adalah protokol yang tugasnya memetakan nama domain yang gampang diingat manusia menjadi alamat IP yang gampang diproses komputer (sesuai dengan framework TCP/IP).
DNS Server (Node yang melakukan pemetaan alamat domain menjadi alamat IP) tentu saja mempunyai “database” nama domain ke alamat IP nya. Sesuai pada tabel berikut:
Nama Domain Alamat IP
onyon.com 117.231.21.223
gorilla.com 193.112.125.88
NB: nama domain dan alamat IP-nya ngasal… tapi ini bukan untuk tujuan menyindir atau apapun… hanya biar contohnya jelas… hehehe..
Jadi ketika kita menggunakan DNS Server yang memiliki database seperti ini, dan ketika kita browsing ke gorilla.com, sebenernya kita sama saja dengan melakukan query ke DNS Server untuk me-resolv nama gorilla.com menjadi IP 193.112.125.88 kemudian membuat koneksi HTTP ke 193.112.125.88 (ngerti kan?)
Apakah seluruh nama domain di Internet terekam di DNS Server? Jawabannya Ya, tapi tidak semua nama domain di rekam (record) di satu komputer yang segede Gaban… Tapi dimanfaatkanlah distributed system. Bisa saja ada DNS Server yang tidak tau alamat onyon.com, tapi ketika nanya ke DNS server kita, ter-resolv IP 117.231.21.223. Tiap baris DNS sebenarnya selalu di update tiap subuh waktu GMT. Ada DNS-Root di Internet yang menghandle gTLD (Top Level Domain) dan ccTLD (country-code Top Level Domain). Contoh TLD yaitu: com, net, org, edu, mil. Contoh ccTLD yaitu: co.id, go.uk, or.jp. DNS-Root ini “hanya” mengatur Top Level Domain… Untuk SLD (Second Level Domain) di TLD tersebut ada Name Server-Name Server lain yang pastinya lebih tau. Contoh SLD: google, yahoo, tibandung, detik, kaskus, dsb….
Mungkin analoginya gini aja lah ya (step by step).. Telah di query sama Mr. Lampard seseorang dari Inggris alamat sbb: Gg Mawar no. 12c, Jl. Soekarno-Hatta, Kota Bandung, Provinsi Jabar, Negara Indonesia
  • Pertama-tama yang dilakukan Mr. Lampard adalah nanya ke “Nameserver” PBB.. dimana sih negara Indonesia?? PBB kemudian ngasih jawabannya…
  • Mr. Lampard kemudian ke Indonesia dan nanya ke “Nameserver” di sana. Dimana sih provinsi Jabar? “Nameserver” Indonesia kemudian ngasih tau jawabannya… (Untuk dipahami, jika Mr. Lampard nanya ke PBB, BELUM TENTU PBB tau dimana provinsi Jabar. Betul tidak??)
  • Terus nanya ke “Nameserver” di Jabar, dimana sih Kota Bandung? Terus “Nameserver” tersebut ngasih tau jawabannya… (Untuk dipahami, jika Mr. Lampard nanya ke Indonesia, BELUM TENTU Indonesia tau dimana Kota Bandung. Betul tidak??)
  • Terus nanya ke “Nameserver” di Bandung, dimana sih Jl. Soekarno-Hatta…
  • Terus nanya ke “Nameserver” di Jl. Soekarno-Hatta, dimana sih Gang Mawar…
  • Terus nanya ke “Nameserver” warga di Jl. Mawar, dimana sih rumah no. 12c…
  • Akhirnya Mr. Lampard tau alamat tempat bakal tujuannya. Lah, ngapain Lampard nanya-nanya Bandung euy? Pengen ngabela PERSIB inih teh? Hahahah..
Protokol DNS menggunakan layanan Ipin.. eh.. maksudnya layanan UDP. Yang membutuhkan kecepatan dalam respon ketimbang masalah kehandalan. Bisa dilihat sendiri, kenapa lebih membutuhkan kecepatan respon ketimbang kehandalan. Lah, data yang diquery-in juga cuma masalah nama domain… Lagian, banyak node yang mungkin harus di lewati untuk pemecahan nama domain.. Bisa lama nungguinnya nehhh…
Contoh “DNS Client” adalah aplikasi kecil bernama “nslookup”. Ini adalah contoh ketika saya melakukan query “google.co.id” ke aplikasi ini…
inan@eniac:~$ nslookup
> server
Default server: 192.168.255.3
Address: 192.168.255.3#53
Default server: 10.88.77.6
Address: 10.88.77.6#53
> google.co.id
Server:         192.168.255.3
Address:        192.168.255.3#53
Non-authoritative answer:
Name:   google.co.id
Address: 64.233.181.104
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> google.co.id
Server:         8.8.8.8
Address:        8.8.8.8#53
Non-authoritative answer:
Name:   google.co.id
Address: 64.233.181.104
> exit
inan@eniac:~$
Sedikit keterangan:
Baris 1: saya mengetikkan perintah “nslookup”
Baris 2: saya ingin tau, siapa yang jadi default nameserver di nslookup saya…
Ternyata hasilnya adalah primary adalah 192.168.255.3 dan secondary 10.88.77.6
Ini nameserver punya provider ISP saya…
Baris 7: saya coba query “google.co.id” ke nameserver saya tersebut…
Baris 12: ada jawaban alamat IP google.co.id… yang ngasih jawaban adalah primary NS saya..
Baris 13: coba nanya pake NS yang lain 8.8.8.8 (public DNSnya Google Inc.)
Baris 16: saya coba query “google.co.id” ke nameserver saya tersebut…
Baris 21: ada jawaban alamat IP google.co.id… yang ngasih jawaban adalah 8.8.8.8
Baris 22: keluar dari program “nslookup”
Oke deh… Ini sedikit karya wisata kita ke tiap layer-layer TCP/IP. Untuk selanjutnya bisa diperdalam lagi jobdesc dari protokol dan manfaat dari jobdesc protokol tersebut untuk protokol-protokol yang lainnya. Ingat, mereka semua bekerja secara independen, tapi sesungguhnya hasil kerja mereka merupakan satu kesatuan mekanisme yang kompleks agar komunikasi data bisa berlangsung. Hebat…
http://indahabni.blogspot.com/2011/09/computer-networking-tcpip-edition-tcpip.html

Membangun Jaringan Komputer Wireless Dengan D-Link DAP-1360

D-Link DAP-1360 adalah perangkat wireless access point yang dapat dikonfigurasikan dalam berbagai operation modes seperti berikut ini:
  1. wireless access point mode
  2. wireless client mode
  3. wireless repeater mode
  4. bridge mode
  5. bridge dengan AP mode
  6. WISP client router mode
  7. WISP repeater mode
Saya tidak akan mendiskusikan semua mode operasi dari peranti D-Link DAP-1360 ini akan tetapi hanya membahas bagaimana membangun jaringan komputer wireless dengan operation mode sebagai access point atau sebagai wireless repeater untuk membentangkan jangkauan yang lebih luas dari jaringan wireless anda saat ini.
Membangun Jaringan Komputer Wireless Dengan DAP-1360 AP
Dap-1360 D-Link Spec
Klik untuk detail spec
Pada umumnya sambungan broadband internet Speedy menggunakan modem yang dilengkapi dengan fitur router atau firewall menjadi satu dalam satu pernagkat. Walau sudah banyak yang menggunakan modem wireless router, akan tetapi masih banyak yang menggunakan modem router tanpa wireless.
Instalasi DAP-1360 Sebagai Wireless AP
Default Gateway
Sebelum anda membangun jaringan komputer wireless menggunakan DAP-1360 ini, sebelumnya kita perlu mengetahui IP address dari modem-router kita yang nantinya akan digunakan sebagai Default gateway dari jaringan komputer kita. Umumnya Komputer kita terhubung kepada modem router menggunakan kabel jaringan UTP. Untuk mengetahui konfigurasi dari IP router kita paling gampang adalah menggunakan command dos “ipconfig” pada Dos prompt. Ketik tombol <Windows> dan <R> secara bersamaan dan muncul windows Open, ketik CMD pada kolom open dan klik OK. Pada command line ketik “ipconfig” sehingga muncul:
Windows IP Configuration
Ethernet adapter Local Area Connection 2:
Connection-specific DNS Suffix  . :
IP Address. . . . . . . . . . . . : 192.168.1.25
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
Anda perhatikan pada baris Default gateway, IP address 192.168.1.1 itu adalah IP address dari modem router anda. Simpan data ini untuk dipakai kemudian dalam tahapan selanjutnya.
Konfigurasi DAP-1360
Pertama kali yang perlu anda lakukan setelah mendapatkan peranti ini adalah melakukan konfigurasi untuk memilih operasion mode yang akan dipakai nantinya dan juga memberikan IP address seperlunya dan juga memberikan keamanan. Lepas kabel jaringan yang menghubungkan Komputer anda dan modem router, kemudian gunakan kabel tersebut untuk menghubungkan Komputer anda kepada DAP-1360 port ethernetnya.
Mengingat setting default dari pabrik DAP-1360 ini adalah 192.168.0.50 dan subnet mask 255.255.255.0 dan gateway 0.0.0.0.0, maka kita perlu memberikan IP address statis kepada Komputer dengan IP address uniq pada subnet yang sama antara 192.168.0.1 sampai 192.168.0.254 (selain 192.168.0.50), misalkan 192.168.0.25 dan subnet mask 255.255.255.0. hal ini untuk memudahkan komunikasi antar Komputer dan DAP1360. Lihat juga petunjuk konfigurasi tcp/ip.
Buka TCP/IP property dari komputer anda. Lakukan langkah berikut: Klick Local Area Connection => klick Properties => pilih ‘Internet Protocol (TCP/IP) kemudian klick Property. Umumnya pada tap General ini dipilih pada pilihan pertama  “Obtain an IP address automatically” pilihan dimana komputer mendapatkan IP secara automatis dari DHCP server. Pilih pililhan kedua “Use the following IP address” kemudian ketik IP address 192.168.0.25 subnet mask 255.255.255.0 dan kemudian klik OK => OK => Close.
TCP IP setting
Pada tahapan ini Komputer anda sudah bisa berkomunikasi dengan Dap1360. Selanjutnya anda perlu:
  1. Mengkonfigurasi Dap-1360 untuk berfungsi sebagai Wireless Access Point
  2. Ganti default IP address dari Dap-1360 dengan IP address yang berada dalam satu subnet dengan router anda
  3. Hubungkan Dap-1360 ke router anda
Langkah2 yang perlu dilakukan:
  • Buka browser anda dan ketik: dlinkap atau IP address 192.168.0.50 pada field address yang kemudian akan muncul Windows login. Ketik user-name dan password, default nya adalah user: admin passwork kosongin saja. Anda perlu mengubahnya demi keamanan kemudian.
  • Begitu masuk menu pilih “Launch Wireless Setup Wizard” dan beri nama dari piranti ini dengan nama yang sesuai
  • Pilih modus operasi dari piranti ini menjadi Wireless AP, ikuti instruksi lanjutan dari wizard menu ini sampai selesai. Tentunya anda perlu melihat buku manual untuk lebih detailnya.
  • Pilih konfigurais LAN setting, anda perlu mengganti IP address dari piranti ini dengan IP address yang berada pada subnet yang sama dengan yang ada pada router (sunet anda). Walau sebenarnya anda bisa memilih “Dynamic address”
  • Lepas kabel yang ke Dap-1360
  • Kembalikan konfigurasi IP address dari Komputer anda tadi menjadi pilihan pertama  “Obtain an IP address automatically”
Sampai disini jaringan komputer wireless anda sudah terbentuk dan wireless client komputer sudah bisa koneksi secara wireless ke jaringan wireless. Jika perlu memberikan password proteksi anda bisa kembali ke konfigurasi Dap-1360 dan mengaktifkan WPA/WPA2 dengan password yang kuat agar aman.
Dalam konfigurasi LAN setting anda perlu memberikan static IP address pada Dap-1360 dengan IP address pada subnet yang sama dengan router anda, dalam contoh ini berikan IP address 192.168.1.50, subnet mask 255.255.255.0 dan default gateway 192.168.1.1 (yang merupakan IP address dari router anda).
Setting DHCP
DHCP server yang ada pada router atau Dap-1360 diaktifkan untuk bisa memberikan konfigurasi IP address secara automatis kepada semua client komputer atau piranti mobile anda semua yang ada pada jaringan komputer anda. Pada Dap-1360 gunakan IP range antara 192.168.1.100 sampai 192.168.1.200. Jangan sampai overlap dengan DHCP pada router anda.
Gunakan kabel jaringan tadi dan koneksikan Dap-1360 kepada salah satu port Ethernet dari router anda. Pada tahap ini mestinya semua wireless client sudah bisa koneksi ke pada jaringan wireless yang sudah terbentuk.
LAN Setting pada dap-1360
Jika anda ingin mengaktifkan Dap-1360 sebagai wireless repeater maka langkah diatas masih berlaku sebagai acuan.
Wireless Repeater Mode
Yang paling popular dari penggunaan Dap-1360 ini adalah sebagai range extender atau wireless repeater jika anda ingin memperluas jangkauan dari router wireless anda. Yang perlu dilakukan adalah mencatat konfigurasi router anda:
  1. IP address dari router anda misal yang umum untuk beberapa router adalah 192.168.1.1 subnet mask 255.255.255.0 yang mana IP address ini dipakai sebagai default gateway dari jaringan komputer anda.
  2. IP scope dari DHCP router misal antara 192.168.1.2 sampai 192.168.1.49 (IP 192.168.1.50 sudah dipakai pada contoh ini)
Sekarang lakukan seperti langkah konfigurasi sebagai wireless AP diatas dan pilih konfigurasi wireless piranti sebagai Repeater. Gunakan Launch Wireless Setup Wizard dan pilih mode Wireless Repeater
  1. Pilih mode Repeater dengan menggunakan Site Survey dan pilih wireless SSID yang ingin anda kembangkan jangkauannya. Pada mode Repeater SSID, Channel dan setting security harus sama antara router dan Dap-1360. Site Survey memastikan semua parameter tersebut sama.
  2. Beri IP address uniq pada Dap-1360 pada subnet  yang sama dengan router anda dan pastika IP scope dari DHCP antara router dan Dap-1360 tidak saling tumpang tindih. Misal pada router adalah 192.168.1.2 sampai 192.168.1.49, maka konfigurasikan pada Dap-1360 anda pada scope 192.168.1.100 sampai 192.168.1.200 subnet mask 255.255.255.0 dan tentunya default gateway mengarah kepada IP address router anda dalam hal ini 192.168.1.1
  3. Setelah selesai, putuskan dengan Komputer anda dan letakkan pada tempat dimana signal router lemah. Pastika bahwa Dap-1360 masih mendapat signal yang lumayan dari router anda.
Sampai tahap ini wireless client mestinya sudah mendapatkan sinyal kuat dari Dap-1360 dan menerima IP address Dari repeater ini. Pastikan dengan menjalankan perintah “ipconfig” dan lihat apakah IP address berada pada scope DHCP dari Dap-1360 atau dari router.
http://indahabni.blogspot.com/2011/09/membangun-jaringan-komputer-wireless.html

Pengertian MAC Address di Jaringan Komputer

Pengertian MAC Address di Jaringan Komputer, MAC Address (Media Access Control Address) adalah sebuah alamat jaringan yang diimplementasikan pada lapisan data-link dalam tujuh lapisan model OSI, yang merepresentasikan sebuah node tertentu dalam jaringan. Dalam sebuah jaringan berbasis Ethernet, MAC address merupakan alamat yang unik yang memiliki panjang 48-bit (6 byte) yang mengidentifikasikan sebuah komputer, interface dalam sebuah router, atau node lainnya dalam jaringan. MAC Address juga sering disebut sebagai Ethernet address, physical address, atau hardware address.
MAC Address mengizinkan perangkat-perangkat dalam jaringan agar dapat berkomunikasi antara satu dengan yang lainnya. Sebagai contoh, dalam sebuah jaringan berbasis teknologi Ethernet, setiap header dalam frame Ethernet mengandung informasi mengenai MAC address dari komputer sumber (source) dan MAC address dari komputer tujuan (destination). Beberapa perangkat, seperti halnya bridge dan switch Layer-2 akan melihat pada informasi MAC address dari komputer sumber dari setiap frame yang ia terima dan menggunakan informasi MAC address ini untuk membuat “tabel routing” internal secara dinamis. Perangkat-perangkat tersebut pun kemudian menggunakan tabel yang baru dibuat itu untuk meneruskan frame yang ia terima ke sebuah port atau segmen jaringan tertentu di mana komputer atau node yang memiliki MAC address tujuan berada.
Dalam sebuah komputer, MAC address ditetapkan ke sebuah kartu jaringan (network interface card/NIC) yang digunakan untuk menghubungkan komputer yang bersangkutan ke jaringan. MAC Address umumnya tidak dapat diubah karena telah dimasukkan ke dalam ROM. Beberapa kartu jaringan menyediakan utilitas yang mengizinkan pengguna untuk mengubah MAC address, meski hal ini kurang disarankan. Jika dalam sebuah jaringan terdapat dua kartu jaringan yang memiliki MAC address yang sama, maka akan terjadi konflik alamat dan komputer pun tidak dapat saling berkomunikasi antara satu dengan lainnya. Beberapa kartu jaringan, seperti halnya kartu Token Ring mengharuskan pengguna untuk mengatur MAC address (tidak dimasukkan ke dalam ROM), sebelum dapat digunakan.
MAC address memang harus unik, dan untuk itulah, Institute of Electrical and Electronics Engineers (IEEE) mengalokasikan blok-blok dalam MAC address. 24 bit pertama dari MAC address merepresentasikan siapa pembuat kartu tersebut, dan 24 bit sisanya merepresentasikan nomor kartu tersebut. Setiap kelompok 24 bit tersebut dapat direpresentasikan dengan menggunakan enam digit bilangan heksadesimal, sehingga menjadikan total 12 digit bilangan heksadesimal yang merepresentasikan keseluruhan MAC address. Berikut merupakan tabel beberapa pembuat kartu jaringan populer dan nomor identifikasi dalam MAC Address.
Nama vendor Alamat MAC
Cisco Systems 00 00 0C
Cabletron Systems 00 00 1D
International Business Machine Corporation 00 04 AC
3Com Corporation 00 20 AF
GVC Corporation 00 C0 A8
Apple Computer 08 00 07
Hewlett-Packard Company 08 00 09
Agar antara komputer dapat saling berkomunikasi satu dengan lainnya, frame-frame jaringan harus diberi alamat dengan menggunakan alamat Layer-2 atau MAC address. Tetapi, untuk menyederhanakan komunikasi jaringan, digunakanlah alamat Layer-3 yang merupakan alamat IP yang digunakan oleh jaringan TCP/IP. Protokol dalam TCP/IP yang disebut sebagai Address Resolution Protocol (ARP) dapat menerjemahkan alamat Layer-3 menjadi alamat Layer-2, sehingga komputer pun dapat saling berkomunikasi.
Beberapa utilitas jaringan dapat menampilkan MAC Address, yakni sebagai berikut:
* IPCONFIG (dalam Windows NT, Windows 2000, Windows XP dan Windows Server 2003).
* WINIPCFG (dalam Windows 95, Windows 98, dan Windows Millennium Edition).
* /sbin/ifconfig (dalam keluarga sistem operasi
UNIX )
Berikut ini adalah contoh output dari perintah ipconfig dalam Windows XP Professional:
C:>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : karma
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter loopback:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Microsoft Loopback Adapter
Physical Address. . . . . . . . . : 02-00-4C-4F-4F-50
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.7
Fungsi MAC address
Cara memblock ip dan mac address yang berada di sebuah network merupakan hal mudah di Linux. Yang jelas, kita sudah mengetahui alamat ip dan mac adress yang dipakai oleh si target.
Scan
Untuk mengetahui alamat ip dan MAC Address target, lakukan scanning pada jaringan terlebih dahulu. Langkah pertama yang bisa dilakukan adalah melakukan scan dengan bantuan ping dan arp.
root@ahmad:~# ping -b -c 2 -W 1 10.0.2.255
root@ahmad:~# for i in $(seq 1 254) ; do ping -c 2 -W 1 10.0.2.$i >& /dev/null & done
root@ahmad:~# arp | grep eth
Hasil terakhir dari table arp akan menunjukkan alamat ip mana saya yang aktif beserta MAC Address-nya di net ip 10.0.2.x, Cara yang lain untuk scanning ip adalah dengan menggunakan tools nmap.
root@ahmad:~# nmap -sP -PI -PT 10.0.2.1/24
dengan melakukan nmap ke salah satu ip address pada sebuah jaringan, maka alamat ip lainnya (yang aktif) bisa ditemukan.
Block Ip
Untuk melakukan bloc ip, silahkan gunakan perintah iptables seperti berikut :
root@ahmad:~# iptables -I INPUT -s 10.0.2.212 -j DROP
Contoh diatas adalah perintah untuk mem-block ip 10.0.2.212 ke server. Untuk menghapus perintahnya,
root@ahmad:~# iptables -D INPUT -s 10.0.2.22 -j DROP
Block MAC Address
Untuk memblock MAC Address, sebenarnya hampir sama.
root@ahmad:~# iptables -A INPUT -m mac -mac-source 00:00:b4:aa:c1:34 -j DROP
dan untuk menghapusnya, tinggal menjalankan perintah yang sama dengan mengganti opsi -A (add) menjadi -D (delete)
root@ahmad:~# iptables -D INPUT -m mac -mac-source 00:00:b4:aa:c1:34 -j DROP
ACAK-ACAK MAC address
dapat mengacak-acak counter wireless di sekitar kota anda. Sehingga anda dapat berinternetan sepuasnya hanya dengan membeli sekali account di server. Sebenarnya trick acak-acak ini hanya menggati MAC Address Laptop anda yang digunakan, sehingga setiap MAC Address yang baru perhitungan waktu kembali ke 00.00 / semula.
Sebelumnya cara ini harus membutuhkan “Live CD Distro Linux BackTrack2″,
Jalankan Live CD Distro Linux BackTrack2, masukkan username “root”, lalu masukkan password “toor”.
Setelah muncul prompt, ketikkan “startx”.
Setelah muncul desktop environment KDE, klik tombol “K” (di pojok kiri bawah). Pilih BackTrack Radio Network Analysis -> 80211 Analyser Kismet.
Lalu muncul window “Select Network Device”, pilih “wifi0”. Klik “OK”.
Muncul tampilan Kismet, secara otomatis Kismet akan mencari wireless client yang sedang aktif. Bila ditemukan wireless client yang aktif tetapi tidak terhubung dengan jaringan, maka akan muncul pesan “ALERT: Suspicious client 00:02:6F:37:08:20 – probing networks but never participating.”
Bila Kismet berhasil menemukan Access Point yang aktif, maka akan muncul pesan “Found IP 192.168.2.1 for slamet::00:0E:2E:C2:2C:0E via ARP”.
Keterangan:
slamet -> nama SSID
Tutup Kismet, lalu buka console untuk menjalankan tools scanning yang lain, yakni airodump.
Keterangan:
Bila kita menggunakan program scanning yang lain, biasanya program pertama akan membuat driver wireless kita “rusak”. Untuk dapat digunakan pada program yang kedua, kita perlu memperbaiki driver tersebut (dimatikan lalu dihidupkan kembali).
Cara memperbaiki driver, ketik:
#airmon-ng -> untuk mengecek interface yang tersedia.
Matikan driver “ath0” dan “ath1” dengan mengetik:
#airmon-ng stop ath0
#airmon-ng stop ath1 -> bila interface ath1 ada.
Mengaktifkan driver yang baru, ketik:
#airmon-ng start wifi0
Bila diketikkan perintah #iwconfig , maka muncul informasi “ath0” sudah aktif dengan Mode=Monitor.
Berikutnya, ketik #airodump-ng ath0
Dengan demikian maka kesimpulan bahwa dengan airodump mendapatkan hasil scanning MAC Address Client yang lebih cepat dibandingkan dengan menggunakan Kismet. Tetapi Client IP Address tidak bisa didapatkan, kecuali menggunakan Kismet.
Kita juga dapat menggunakan program K-MAC(atau anda bisa merubah MAC Address melalui regedit) yang di-install pada windows untuk merubah MAC-Address Wireless kita menjadi MAC-Address salah satu client yang terdaftar pada MAC Address Filtering.
Yang perlu dilakukan adalah mencari informasi MAC-Address client dengan mengunakan Kismet atau airodump, catat MAC-Address tersebut, lalu jalankan K-MAC di windows dan ubah MAC-Addressnya.
kemdian restart komputer anda
http://indahabni.blogspot.com/2011/09/pengertian-mac-address-di-jaringan.html
 

© 2010 . - Design Google Blogs - Powered By Rias Indah Purwatiningsih