• Tidak ada hasil yang ditemukan

III. PERANCANGAN SISTEM

3.4 Perancangan Perangkat Lunak

Pada perancangan perangkat lunak ini penulis membuat program untuk meng-capture data chatting dalam Yahoo Messenger dengan diberi nama snifit. Program snifit ini terdapat beberapa program yang saling berkaitan.

Snifit adalah suatu program untuk meng-capture data yang dikirimkan sebagai bagian dari koneksi TCP (arus), dan menyimpan data dengan cara yang tepat untuk analisa protokol atau debugging. Suatu program seperti “tcpdump” yang menunjukkan ringkasan dari paket-paket di atas jaringan, tetapi biasanya tidak menyimpan data.

Snifit menyimpan semua data yang ditangkap dan menyimpannya di dalam file-file dan mempunyai nama-nama dari form

128.129.130.131.02345-010.011.012.013.45103

di mana isi-isi dari file akan menjadi data tersebut dikirimkan dari host

128.129.131.131 port 2345, kepada host 10.11.12.13 port

45103.

3.4.1. Sistem Utama

Perancangan program Snifit ini mengontrol 4 proses yang ada didalam sistem utama. Empat proses tersebut meliputi :

1. Proses 1 adalah main.c 2. Proses 2 adalah flow.c 3. Proses 3 adalah datalink.c 4. Proses 4 adalah tcpip.c

Pada sistem utama ini, keyboard akan menginputkan karakter. Lalu program akan melihat interface. Setelah pengecekan interface selesai maka program akan melihat paket data yang melewati jaringan, pada proses ini program akan membedakan apakah paket berupa IP atau paket berupa data. Setelah paket data ter-capture maka proses selanjutnya adalah membuat struktur arus data dari hasil capture file.

Compile program akan menghasilkan file berextension .exe, seperti halnya pada program installan dalam windows. Program Snifit terbuat dari beberapa file sumber, maka harus menjalankan utility "make". Maka harus menulis sesuatu yang dinamakan makefile, yang mana memberitahu kompiler tentang keterkaitan/ketergantungan antara file sumber(source

Gambar 3.4. Flowchart Sistem Utama.

3.4.2. Proses pada Sistem Utama

1. Proses 1 adalah main.c

Program ini berfungsi untuk menginputkan masukan dari keyboard yang kemudian dari inputan tersebut akan muncul sebuah statement yang sesuai dengan apa yang diinputkan.

Dalam program main.c ini terdapat fungsi print usage, yang berfungsi untuk menampilkan data yang dapat diinputkan melalui keyboard serta penjelasan fungsi masing-masing inputan tersebut. Terdapat pernyataan switch dalam proses main.c. Pernyataan switch ini digunakan untuk menjalankan salah satu pernyataan dari beberapa kemungkinan pernyataan, berdasarkan nilai dari sebuah ungkapan dan nilai penyeleksi.

2. Proses 2 adalah flow.c

Program ini berfungsi untuk membuat struktur arus data. Dalam program ini terdapat 3 fungsi, yaitu :

a. Create flow state, fungsi ini befungsi untuk menentukan letak tiap paket data.

b. Open file, fungsi ini berfungsi untuk membuka file yang sudah tercapture. Termasuk membuka paket data ataukah membuka paket IP. Open file tidak seharusnya dipanggil jika file sudah terbuka. c. Close file, fungsi ini berfungsi untuk menutup file pada struktur

3. Proses 3 adalah datalink.c

Program ini berfungsi untuk melihat/ mengecek interface pada sistem ini. DLT_PPP untuk modem, DLT_ETHERNET untuk wirelles ataupun ethernet, dan DLT_NULL jika tidak terdapat interface. 4. Proses 4 adalah tcpip.c

Program ini berfungsi untuk melihat paket-paket yang sedang melewati jaringan, khususnya paket pada saat aktivitas chatting Yahoo Messenger berlangsung.

Dalam program ini terdapat 4 fungsi yaitu :

a. Proses IP, fungsi ini dipanggil ketika menerima suatu IP datagram. Kita memeriksa paket untuk meyakinkan bahwa ada beberapa data yang lewat. Kita meyakinkan bahwa berisi suatu TCP, jika demikian maka pengolahan data yang lewat akan diproses oleh proses_tcp(). Dalam proses ini menggunakan ip_total_len, karena mungkin dalam memproses paket kita akan menangkap byte didalam lapisan ethernet.

b. Proses TCP, fungsi ini hanya mencari TCP, selain itu akan dibuang. Jika tidak mempunyai data apapun maka kembalikan paket. Setelah mendapat sebuah TCP maka mengkalkulasi total panjangnya TCP header. Mengisi struktur arus dengan info yang mengidentifikasikan arus ini. Serta mengkonversi data yang tidak terbaca menjadi karakter titik(.).

c. Store paket, fungsi ini untuk menyimpan paket data ke dalam file. Sebelumnya kita melihat dulu apakah paket ini mempunyai arus struktur, jika belum maka akan diciptakan dulu struktur arus untuk paket tersebut.

d. Print paket, fungsi ini mencetak muatan paket kedalam console.

3.4.3. Flowchart Proses Yang Berjalan Pada Sistem Utama

3.4.3.1. Flowchart Proses 1 main.c

Start Switch (arg) Case ‘b’ ; If Byte_per_flow-atoi(optarg)<0 Debug “capturing max of byte per

traffic” Debung” warning:invalid

value used with -b ignored “

Break True

False

Case ‘c’

Console only=1 Debug “ printing packet to

console only”

Case ‘s’

Strip_nonprint=1 Debug “concerting non printable character to ’.’ “

Break

1 Case ‘h’ Print usage Exit Break Default Debug “ error : unrecognized switch” Need_usage=1 Break End Gambar 3.7 Switch

3.4.3.2. Flowchart Proses 2 “ Flow.c “

End Start

If flow_state->fp

Debug “ …. Trying to open already open file”

Return flow_state->fp

If flow state, filename!=NULL

Open file succeeded

Open failed sebab terlalu banyak file yang sedang

dibuka True False True False While (!done) True If flow_state->fp==NULL

Set finished, dan jangan mencoba untuk membuka

file kembali Mengurutkan arus dari yang

lama ke yang baru

Close file

False

True False

Return NULL

Start

If flow_state->==NULL

Return 0

Debug “closing file “

Menutup file

Return 1

End True

False

3.4.3.3. Flowchart Proses 3 “ Tcpip.c “ Start If Panjang paket<TCP header Debug "received truncated TCP segment!" Return Mengkalkulasi total panjangnya TCP header If tidak mempunyai data Debug “got TCP segment with no data: Return

Mengisi struktur flow dengan info yang mengidentifikasi arus

Mengkalkulasi lagi permukaan data dan panjangnya TCP header

If Strip nonprint

If (console only)

Mencetak output Menyimpan output

End True False True False True False True False Data=(data, panjangnya)

3.4.3.4. Proses 4 “ Datalink.c “

Start

If (length!=caplen)

Debug “warning : only captured byte of byte

ether frame” If (caplen<sizeof(struct ether_header) Return if (ntohs(eth_header->ether_type) != ETHERTYPE_IP) Debug “warning : received

incomplete ethernet frame”

Debug “ warning received ethernet frame with unknown type”

Return Proses IP End True True False False True False

Start

If (length!=caplen)

Debug “warning : only captured byte of byte null

frame“

If (caplen < NULL_HDRLEN)

Debug “warning : received incomplete null frame “

Return Proses IP end True True False If (fammily!+AF_INET)

Debug “warning :received non AF_INET null frame “

return

Dokumen terkait