BAB III PERANCANGAN SISTEM
3.1.
ANALISIS SISTEM Pada tahap ini, penulis melakukan perancangan aplikasi berupa analisa
input, analisa proses, analisa output, analisa design interface / antarmuka aplikasi dan algoritma program. Analisa Input dan Mekanisme Sistem Aplikasi ini menggunakan komponen library WinPCap di dalam pembuatannya. Oleh karena itu, pada komputer yang ingin menjalankan aplikasi ini, sebelumnya harus sudah memilki komponen library WinPCap. Untuk menjalankan proses tersebut, maka penulis membuat suatu alur program, yang menjelaskan perincian proses pada saat fungsi capture dijalankan. Seperti terlihat pada Gambar 3.1 berikut ini, yang memperlihatkan mekanisme fungsi capture tersebut :
Gambar 3.1 Arsitektur fungsi menu capture aplikasi NetCap
31
Secara rinci, bagan – bagan tersebut dapat dijelaskan sebagai berikut : 1. Aplikasi NetCap terdiri dari dua fungi utama, yaitu Start dan Stop, yang ada dalam menu Capture. 2. Menu Start berfungsi untuk memulai proses penangkapan paket. Bila paket–paket
tersebut
sudah
tertangkap,
program
akan
langsung
melaporkan statistik datanya secara real time pada saat proses dijalankan. Statistik data ini berupa persentasi data, tipe protokol dan lama waktunya. 3. Menu Stop berfungsi untuk menghentikan proses penangkapan paket, yang kemudian akan melaporkan paket – paket apa saja yang ditangkap, informasi protokolnya, informasi format data tiap – tiap protokol, dan total byte yang diterima. Analisa Proses yang terjadi pada sistem Proses yang terjadi dalam aplikasi packet – capture ini secara garis besar diantaranya adalah : 1. Menangkap paket mentah TCP/IP, baik yang ditujukan kepada komputer yang bersangkutan, maupun dari pertukaran data pada jaringan lokalnya. 2. Menyaring / filtering paket berdasarkan spesifikasi user, sebelum dikirimkan ke dalam aplikasi. 3. Meneruskan paket mentah ke dalam jaringan komputer. 4. Mengumpulkan informasi statistik pada lalu lintas jaringan komputer. Paket–paket tersebut terdiri atas beberapa field yang sesuai dengan bentuk protokolnya, di mana telah dijelaskan sebelumnya di dalam bab II. Protokol yang dapat digunakan ialah protokol TCP, UDP, ARP, IP, ICMP, HTTP, LOOPBACK, dan ETHERNET. Analisa Output Didalam analisa output, penulis membuat agar pada penggunaan dan hasil capture paket-nya memiliki fitur seperti :
Dapat membatasi ukuran paket yang ditangkap.
32
Dapat menghentikan proses penangkapan bila jumlah paket yang dibatasi telah tercapai.
Dapat pula menghentikan proses penangkapan bila waktu dan jumlah byte yang dibatasi telah tercapai. Ataupun bisa menghentikan dengan kapan saja.
Proses penangkapan secara mode real time dan dapat melihat melalui scroll mouse secara real time pula.
Melihat statistik dari paket yang ditangkap, persentase dari total paket, waktu yang digunakan, dan total bytenya.
Memberikan tampilan highlight pada tulisan di dalam data protokol, bila node root protokol di klik di dalam TreeView, ataupun bila tampilan data heksa di klik di dalam area display.
Meyimpan semua atau hanya sebagian paket yang dipilih saja ke dalam file.
Membuka file paket yang telah disimpan untuk dianalisis kembali.
Mengurutkan paket sesuai keinginan.
Melihat statistik paket bila diinginkan / View Statistic. Bila tidak bisa dipilih mode Hide Statistic
3.2.
DESIGN INTERFACE PROGRAM Dalam membuat suatu program yang visual atau berbasiskan windows
forms, hal – hal yang perlu dilakukan pertama ialah mendesain bentuk tampilan yang diinginkan, dan mengatur beberapa objek control dan propertisnya. Kemudian dilanjutkan dengan bagian yang sangat penting, yaitu penulisan kode program. Gambar 3.2 berikut akan menjelaskan tentang IDE pada Visual C#.NET.
33
Gambar 3.2.
IDE Forms pada Visual C#. NET
Aplikasi NetCap ini memiliki 4 form yaitu form menu utama / form NetCap, form Options, Display Totals dan From About. Form menu utama / Form NetCap, terdiri atas : a. Menu bar b. Jendela rincian paket yang diterima atau ReceivedPacket / menggunakan kontrol ListView c. Jendela paket detail atau PacketDetail / menggunakan kontrol TreeView d. Jendela format paket data atau PacketData
/ menggunakan kontrol
RichTextBox Berikut ini adalah perincian dari bagian – bagian yang ada pada form utama tersebut :
Di dalam menu bar, terdapat 3 menu yang terdiri dari beberapa item sub menu, yaitu :
34
Menu File berisi Open, Close, Save, Save Selected Packet, Save As, Reload dan Exit. Menu Capture berisi Start, Stop, Options, Show Statistic dan Hide Statistic. Menu Help berisi About.
Jendela rincian paket / ReceivedPacket, akan menampilkan informasi paket yang diterima ke dalam tabel / DataGrid. Tabel ini berisi field – field yaitu : No Time Source Address Destination Address Protocol Info
Jendela paket atau PacketDetail, akan menampilkan ringkasan paket dari tiap lapisan di dalam tumpukan protokol. Tampilan ini berupa control TreeView yang memiliki node root dan node child (seperti di dalam Windows Explorer). Sehingga user dapat melakukan eksplorasi lebih dalam mengenai informasi paket atau tipe protokol yang didapatkan.
Jendela format paket data atau PacketData, akan menampilkan paket mentah data yang dicetak ke dalam format ASCII dan heksadesismal. Form Options, berada di dalam menu Capture. Form ini berisi sejumlah
fitur pilihan yang mendukung kerja aplikasi. Beberapa fitur ini antara lain seperti : pembatasan jumlah bytes tiap paket, menghentikan penangkapan dengan kondisi – kondisi tertentu serta fitur untuk meng-update paket secara real time, melakukan scrolling secara otomatis, dan memilih mode penangkapan pada mode promiscuous Form Display Totals, akan muncul pada saat perintah Stop dijalankan didalam submenu Capture. Program akan melaporkan hasil penangkapan paket dengan ringkas dan cepat yang berupa tabel berisi field Source (alamat IP asal) ,
35
Destination (alamat IP tujuan) dan Bytes (total ukuran paket yang dikirim dalam satuan byte). Form About, akan tampil, bila menu about dijalankan. Program akan menampilkan informasi singkat mengenai aplikasi NetCap. 3.2.1 Struktur Menu Gambar 3.3 berikut ini akan memperlihatkan struktur interface menu pada aplikasi NetCap.
Gambar 3.3 Struktur menu aplikasi NetCap Secara rinci, bagan – bagan diatas memiliki fungsi yaitu sebagai berikut : Menu File
Open, digunakan untuk membuka file yang telah disimpan sebelumnya. Format file yang digunakan hanya dapat dibuka pada aplikasi ini.
Close, digunakan untuk menutup file yang telah dibuka.
Save, digunakan untuk menyimpan hasil capture paket yang telah dijalankan.
Save Selected Packet, digunakan untuk menyimpan paket yang telah ditentukan saja, di dalam tampilan informasi paket.
36
Save As, digunakan bila ingin menyimpan nama file yang telah disimpan sebelumnya.
Reload, sama seperti fungsi Refresh.
Exit, keluar dari aplikasi NetCap
Menu Capture
Start, digunakan untuk memulai proses penangkapan paket.
Stop, digunakan untuk menghentikan proses penangkapan paket.
Options, digunakan untuk memilih beberapa fitur pilihan.
Show Statistic, untuk menampilkan statisk data
Hide Statistic, untuk menghilangkan tampilan form statistik data
Menu Help
About, berisi informasi singkat mengenai aplikasi NetCap.
3.2.2 Komponen – komponen pada program Aplikasi NetCap ini membutuhkan beberapa komponen baik itu berupa kontrol yang ada didalam lingkungan .NET Framework, ataupun library khusus yang harus dibuka terlebih dahulu sebelum memulai proses compile. Untuk komponen kontrol yang telah tersedia di dalam .NET Framework, caranya ialah hanya mengambil kontrol yang diperlukan di dalam Toolbox Component. Sedangkan untuk komponen library yang berada di luar .NET Framework, caranya ialah dengan menambah referensi baru / add new reference, dan akan muncul tampilan untuk memilih komponen. Dalam aplikasi ini penulis menggunakan komponen library MyClass.dll yang berasal dari turunan library WinPCap sebagai packet-capture driver-nya. Komponen – komponen pada aplikasi NetCap dapat digunakan sesuai dengan fungsi pada masing – masing form itu sendiri. Komponen – komponen itu, antara lain ialah :
CaptureTimer. Digunakan untuk melakukan penghitungan waktu pada saat proses penangkapan paket dimulai. Bila pemakai menghentikan capture paket ini, maka waktu yang berjalan akan berhenti dan program akan menampilkan total waktu yang diperoleh.
37
DataSet. Digunakan untuk membuat tabel DataGrid dan DataColumn pada form DisplayTotals. Tabel DataSet ini berisi field Source, Destination, dan Bytes.
3.3
DESIGN FORM Seperti telah dijelaskan sebelumnya, Aplikasi NetCap ini memiliki 4 form
yaitu form menu utama / Form NetCap, form Display Totals , form Options dan Form About. Pada bagian berikut ini akan dijelaskan mengenai perancangan visual keempat form tersebut. Untuk kode programnya akan dijelaskan pada sub bab Algoritma Program. Pembuatan desain form dapat dilakukan dengan mengambil beberapa object control pada Windows Forms ataupun komponen lainnya di dalam Toolbox. Kemudian mengatur kontrol - kontrol tersebut pada Properties yang disediakan. Untuk menulis kode program, disediakan tombol untuk melihat kode di belakang forms yang telah dibuat, yaitu tombol Code View pada Solution Explorer. 3.3.1 Form NetCap Berikut ini akan dijelaskan pembuatan desain form untuk aplikasi NetCap yang dimulai dengan form FormNetCap.
Gambar 3.4 Design Form NetCap
38
Seperti telah disebutkan sebelumnya, di dalam form ini tersedia menu utama / main menu yang terdiri atas beberapa menu item. Pembuatan menu item itu dapat dilihat pada gambar 3.5 berikut ini.
Gambar 3.5 Menu item pada formNetCap Untuk pengaturan properti dan penjelasan dari beberapa object control dan komponen tersebut, dapat dilihat pada tabel 3.1. berikut ini : Tabel 3.1 Objek Properti Form NetCap Object Control
Property
Penjelasan
MenuItem
Name
MenuFile
Text
&File
Name
MenuFileOpen
Text
&Open
Name
MenuFileClose
Text
&Close
Name
MenuFileSave
Text
&Save
Name
MenuFileSaveSelectedPacket
Text
Save Selected &Packet
Name
MenuFileSaveAs
Text
Save &As ...
Name
MenuFileReload
Text
&Reload
Name
MenuFileExit
Text
E&xit
MenuItem MenuItem MenuItem MenuItem MenuItem MenuItem MenuItem
39
MenuItem
Name
MenuCapture
Text
&Capture
Name
MenuCapture
Text
&Capture
Name
MenuCaptureStart
Text
&Start
Name
MenuCaptureStop
Text
S&top
Name
MenuCaptureOptions
Text
Options
Name
MenuViewMenuShowStatistic
Text
S&how Statistic
Name
MenuViewMenuHideStatistic
Text
H&ide Statistic
Name
MenuHelp
Text
He&lp
Name
MenuAbout
Text
A&bout
ListView
Name
LVwStatistics
ListView
Name
LVwReceivedPackets
RichTextBox
Name
RtxPacketData
TreeView
Name
TVwPacketDetails
ColumnHeader
Name
ClmnProtocolName
ColumnHeader
Name
ClmnCount
ColumnHeader
Name
ClmnPercentage
ColumnHeader
Name
ClmnNo
ColumnHeader
Name
ClmnTime
ColumnHeader
Name
ClmnSource
ColumnHeader
Name
ClmnSourcePort
ColumnHeader
Name
ClmnDestination
ColumnHeader
Name
ClmnDestinationPort
ColumnHeader
Name
ClmnProtocol
ColumnHeader
Name
ClmnInfo
StatusBarPanel
Name
PnlFileName
StatusBarPanel
Name
PnlLocation
StatusBarPanel
Name
PnlGlobal
StatusBar
Name
StatusBar
MenuItem MenuItem MenuItem MenuItem MenuItem MenuItem MenuItem MenuItem
40
3.3.2 Form Display Totals Untuk menambah form baru dilakukan dengan memilih Add New Items pada menu File, kemudian pilih tipe templates Windows Forms. Setelah itu dilakukan kembali pendesainan form dan mengatur properti dari objek kontrol yang dibuat. Agar lebih jelasnya perhatikan Gambar 3.6. Form dengan nama DisplayTotals ini akan tampil saat menu Stop di jalankan yang berarti proses penangkapan paket akan berhenti, dan program akan menampilkan informasi berupa tabel berisi field Source, Destination dan Bytes di dalam tabel DataGrid.
Gambar 3.6 Design Form DisplayTotals Pengaturan properti dan penjelasan dari beberapa object control dan komponen tersebut, terlihat pada tabel 3.2. berikut ini : Tabel 3.2 Objek Properti Form DisplayTotals Object Control
Property
Penjelasan
MainMenu
Name
MainMenu
MenuItem1
Name
MenuItem1
Text
Copy
DataSet
Name
DataSet1
DataGrid
Name
DataGrid1
DataTable
Name
DataTable1
DataColumn
Name
DataColumn1
DataColumn
Name
DataColumn2
DataColumn
Name
DataColumn3
41
3.3.3 Form Capture Options Sama halnya dengan form DisplayTotals, perlu dilakukan pula penambahan form baru dengan memilih Add New Items pada menu File, kemudian pilih tipe templates Windows Forms. Setelah itu dilakukan kembali pendesainan form dan mengatur properti dari objek kontrol yang dibuat. Agar lebih jelasnya perhatikan Gambar 3.7. Form ini akan dijalankan saat menu item Option dipilih di dalam menu Capture, dan akan keluar ke form utama jika button Batal di klik.
Gambar 3.7 Design Form Capture Options 3.3.4 Form About Form ini berisi informasi umum mengenai aplikasi NetCap.
Gambar 3.8 Design Form About
42
3.4
ALGORITMA PROGRAM Bahasa C# (baca : c sharp) adalah salah satu bahasa pemrograman yang
lebih modern dan merupakan bagian dari inisiatif Microsoft yang dinamakan dengan teknologi .NET. .NET ini memberikan kerangka dan class library yang sangat luas sehingga dapat mempercepat dalam pembuatan aplikasi. Aplikasi NetCap merupakan project file utama yang memungkinkan untuk berkomunikasi dengan kelas – kelas yang lain dan untuk menampilkan paket yang ditangkap. Berikut ini akan dijelaskan kelas–kelas yang digunakan, di antaranya ialah :
ColumnSorter
Kelas ini digunakan untuk mengurutkan isi dari control ListView. Kelas ini memliki anggota dengan syntax sebagai berikut : public int CurrentColumn = 0; //indeks kolom yang diurut public int Direction = 0; //0:Ascending, 1 : Descending public int ColumnType = 0;//0:Integer, 1:Double, 2:String public bool CaseSensitivity = true; public bool Enabled = true; CurrentColumn
mendefinisikan kolom mana yang digunakan untuk
diurut pada control ListView. Direction digunakan untuk mengurutkan data dari bawah ke atas atau dari atas ke bawah. ColumnType mendefinisikan format apa yang ada pada kolom. CaseSenitivity digunakan untuk mengurutkan data tipe string dengan case order dan Enabled
memungkinkan untuk mengurutkan data bila telah dijalankan.
Const
Kelas ini berisi protokol yang berhubungan dengan nilai tetap /constant dan dengan sebuah fungsi.
Function
Kelas ini berisi semua fungsi dari kegunaan yang ada. Seperti variabel fungsi baca, fungsi bit decode, fungsi tampilan node, fungsi Win32 API functions, fungsi format data dan lain – lain.
43
Packet32
Digunakan untuk membungkus kelas Packet32H. Kelas ini berisi fungsi utama seperti untuk memulai dan menghentikan proses penangkapan paket, membuka dan menyimpan paket yang ditangkap, membaca dan menulis parameter paket, dan lain – lain.
Packet32h
Kelas ini berisi semua fungsi yang ada di dalam library WinPCap, yaitu file library PacketNt.dll. Di kelas ini juga ditambahkan beberapa fungsi untuk mendukung jalannya aplikasi pada sistem operasi yang berbeda .
PacketParser
Kelas ini berisi fungsi utama parser
PacketARP
Digunakan untuk fungsi parser protokol Address Resolution Protocol.
PacketETHERNET
Digunakan untuk fungsi parser protokol Ethernet.
PacketHTTP
Digunakan untuk fungsi parser protokol Hyper Text Transfer Protocol.
PacketICMP
Digunakan untuk fungsi parser protokol Internet Control Message Protocol.
PacketINTERNET
Digunakan untuk fungsi parser protokol Internet.
PacketLOOPBACK
Digunakan untuk fungsi parser protokol Loopback
PacketTCP
Digunakan untuk fungsi parser protokol Transmission Control Protocol.
PacketUDP
Digunakan untuk fungsi parser protokol Unary Datagram Protocol Kelas–kelas tersebut merupakan prosedur utama dalam melakukan fungsi capture packet. Untuk itu penulis membuat suatu komponen library yang berisikan kelas–kelas di atas dengan nama library MyClasses.dll. dimana pada saat aplikasi
44
dijalankan, program akan mencari komponen kelas tersebut. Bila belum dimasukkan ke dalam project, maka program tidak akan berjalan dengan baik. Sebelum memulai penulisan program, terlebih dahulu dideklarasikan namespace kelas – kelas yang digunakan, diantaranya ialah : using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using MyClasses;
Untuk cara kerja aplikasi packet capture, dapat dilihat pada Gambar 3.9 dibawah ini.
Gambar 3.9 Flowchart packet capture
45
Dalam flowchart diatas, pertama – tama program akan menentukan dahulu adapter kartu jaringan yang digunakan, setelah itu adapter tersebut diaktifkan mode promiscuous, agar adapter dapat menerima setiap paket yang melewatinya. Kemudian program akan membaca paket di dalam kelas P32, yang berisi parser terhadap protokol dan format paket yang terjadi. Setelah itu, memilih Hardware Filter yang dibagi berdasarkan paket Broadcast atau Promiscuous.. Bila filter yang ada sesuai dengan paket yang melewati, maka program akan menampilkan informasi hasil penangkapan paket tersebut dan statistik protokol yang ada. Bila tidak program akan menghentikan proses penangkapan tersebut. Pada bagian berikutnya akan dijelaskan mengenai pembahasan kode program pada bahasa C# .NET, yang dimulai dari prosedur untuk memulai proses capture packet, hingga beberapa prosedur fungsi yang ada pada menu utama. Agar lebih jelas, pembahasan program ini dibagi berdasarkan pada form – form yang telah dibuat. Pada aplikasi ini form yang merupakan inti ialah form NetCap, form Options dan formDisplayTotals, sedangkan formAbout hanya menampilkan label – label biasa yang tidak perlu dijelaskan secara rinci. Untuk itu pembahasan ini hanya
dijelaskan
pada
form
NetCap,
form
Capture
Options
dan
formDisplayTotals 3.5
ALGORITMA PROGRAM FORM NETCAP Pada saat aplikasi baru pertama kali dijalankan, program akan
menjalankan method load, yang isinya menampilkan paket – paket yang diterima. Paket – paket yang telah diterima tersebut nantinya akan ditampilkan ke dalam bentuk tabel di dalam kontrol ListView. Tabel tersebut mempunyai data field kolom seperti No, Time, Source IP Addr, Source Port, Destination IP Addr, Destination Port dan Info. Pembuatan program di dalam formNetCap ini dibagi menjadi beberapa prosedur utama, diantaranya ialah prosedur membuka file, menutup file, menyimpan file, menerima paket, update statistik, start capture dan stop capture.
46
Berikut ini akan dijelaskan pembuatan prosedur – prosedur tersebut disertai dengan pembahasan kode programnya. 3.5.1 Prosedur Membuka File Prosedur berikut digunakan untuk membuka file paket yang telah disimpan sebelumya. Program akan memanggil fungsi Win32 API OpenDialog untuk memilih nama file dengan format file yang bisa dibuka oleh aplikasi ini. Setelah file tersebut dibuka, program akan menampilkannya ke dalam tabel ListView. Berikut ini penulisan kode pada prosedur MenuFileOpen. private void MenuFileOpen_Click(object sender, System.EventArgs e) { LVwReceivedPackets.Items.Clear(); DlgOpen.ShowDialog(this); if( DlgOpen.FileName != "" ) { ((Form)this).Text = "NetCap v1.0 ( " + DlgOpen.FileName + " )"; TheColumnSorter.Enabled = false; LVwReceivedPackets.Sorting = SortOrder.None; CurrentFileNameForLoad = DlgOpen.FileName; P32.LoadFromFile( CurrentFileNameForLoad ); P32.PParser.LVw = LVwReceivedPackets; P32.PParser.Rtx = RtxPacketData; P32.PParser.mNode = TVwPacketDetails.Nodes; P32.PParser.PacketOnOff = false; P32.PParser.PreviousHttpSequence = 0; P32.PParser.LastTftpPort = 0xffff; P32.PParser.Parse(); LVwReceivedPackets.Sorting = SortOrder.Ascending; TheColumnSorter.Enabled = true; } }
47
Fungsi utama pada prosedur ini ialah program memanggil objek kelas P32 untuk melakukan fungsi parser terhadap paket dan tipe protokolnya. Setelah itu, program akan memanggil prosedur ReceivedPaket. kode 3.5.2 Prosedur Menutup File Untuk menutup file yang telah dibuka, digunakan prosedur MenuFileClose ini yang akan dipanggil setelah event mouse klik dijalankan. Paket – paket yang berada di dalam tabel kontrol ListLiew akan dihilangkan dan juga informasi detail protokol yang berada di dalam kontrol TreeView. Berikut ini penulisan program pada prosedur tersebut. CurrentFileNameForLoad = ""; CurrentFileNameForSave = ""; RtxPacketData.Text = ""; TVwPacketDetails.Nodes.Clear(); LVwReceivedPackets.Items.Clear(); P32.PParser.PacketCollection.Clear(); P32.P32h.CapturedPacketArray.Clear();
Untuk mengosongkan item di dalam tabel ListView dan TreeView digunakan perintah dibawah ini. TVwPacketDetails.Nodes.Clear(); LVwReceivedPackets.Items.Clear();
Setelah
itu
kumpulan
paket
yang
disimpan
di
dalam
array
CapturedPacketArray, akan dikosongkan. Sintaks untuk menghilangkan kumpulan paket tersebut, dapat dilihat pada perintah berikut. P32.PParser.PacketCollection.Clear(); P32.P32h.CapturedPacketArray.Clear();
3.5.3 Prosedur MenyimpanFile Pada aplikasi NetCap ini, terdapat tiga fungsi menu penyimpanan file, diantaranya menyimpan file yang belum pernah disimpan, menyimpan paket pada
48
baris yang dipilih di dalam tabel, dan menyimpan file yang telah disimpan sebelumnya. Sama seperti prosedur membuka file, pada prosedur menyimpan ini juga menggunakan fungsi Windows 32 API, yaitu fungsi SaveDialog. Di bawah ini ialah prosedur untuk menyimpan file. private void MenuFileSave_Click(object sender, System.EventArgs e) { if( CurrentFileNameForSave != "" ) { P32.SaveToFile( CurrentFileNameForSave ); } else { DlgSave.ShowDialog(this); if( DlgSave.FileName != "" ) { CurrentFileNameForSave = DlgSave.FileName; P32.SaveToFile( CurrentFileNameForSave ) } } }
Pada prosedur FileSave, digunakan objek kelas P32 untuk memanggil variabel SaveToFile sebagai variabel untuk meminta nama file yang akan disimpan, seperti terlihat dibawah ini. P32.SaveToFile( CurrentFileNameForSave )
Untuk prosedur menyimpan file hanya pada paket yang dipilih di dalam tabel, digunakan objek kelas P32 untuk memanggil variabel SaveSelectedPacket sebagai variabel dengan parameternya PacketFile sebagai nama paket dan variabel index Array. Berikut ini perintah yang digunakan P32.SaveSelectedPacket( PacketFile , indexArray );
Sedangkan untuk prosedur SaveAs digunakan fungsi objek kelas P32 yaitu P32.SaveToFile( CurrentFileNameForSave );
49
3.5.4 Prosedur Start Capture Berikut ini adalah fungsi utama pada method start capture yang digunakan untuk memulai proses penangkapan paket yang nantinya akan diberikan statistik paket data di dalam tabel ListView, informasi protokol pada TreeView dan paket data di dalam kontol RichTextBox. P32.Start( LVwReceivedPackets , TVwPacketDetails.Nodes , RtxPacketData ); LVwReceivedPackets.Sorting = SortOrder.Ascending;
Objek kelas P32 akan memanggil variabel Start untuk membaca paket pada suatu adapter, dan menampilkan hasil paket tersebut dengan menggunakan prosedur ReceivedPacket , PacketDetail dan PacketData. 3.5.5 Prosedur Menerima Paket Method ini akan dijalankan bila tabel pada kontrol ListView ini diklik. Di dalam data kolom ListView terdapat informasi berupa paket data di dalam kolom header, seperti source ip address, destination ip address dan lain sebagainya. bila data di dalam tabel ini di klik, program akan memberikan informasi paket tersebut secara detail seperti format data frame dan format tipe protokol yang digunakan. Informasi inilah yang akan dianalisa oleh network admin dalam mengelola jaringannnya. Pembuatan prosedur ini akan dijelaskan sebagai berikut. private void LVwReceivedPackets_Click(object sender, System.EventArgs e) { ListViewItem LItem; if( LVwReceivedPackets.SelectedItems == null ) return; if( LVwReceivedPackets.SelectedItems.Count == 0 ) return; try { LItem = LVwReceivedPackets.SelectedItems[ LVwReceivedPackets.SelectedItems.Count - 1 ]; P32.PParser.mDisplayOptions = P32.DisplayOptio ns;
50
P32.PParser.mCaptureOptions = P32.CaptureOptions; P32.PParser.ParseSingle( ref LItem
);
} catch ( Exception Ex ) { MessageBox.Show( Function.ReturnErrorMessage( Ex ) ); } }
Pada program tersebut, terdapat kode untuk memanggil objek kelas P32 agar membaca paket dari adapter, dan menampilkannya sebagai item dari tabel ListView. Perintahnya ialah P32.PParser.ParseSingle(
ref LItem
);.
3.5.6 Prosedur Update Statistik Method atau prosedur ini digunakan untuk menampilkan statistik paket data secar real time saat proses capture masih dijalankan. Secara langsung program akan melaporkan di dalam tabel ListView. Variabel yang digunakan untuk memanggil fungsi objek kelas P32 ialah variabel CaptureStatus. Berikut ini penulisan kode program pada prosedur update statistik ini. Function.UpdateStatisticsItem( LVwStatistics , "Total" , P32.CaptureStatus.Total.CountStr , P32.CaptureStatus.Total.PctStr , Color.Red , Color.Blue ); Application.DoEvents(); Function.UpdateStatisticsItem( LVwStatistics , "TCP" , P32.CaptureStatus.TCP.CountStr , P32.CaptureStatus.TCP.PctStr , Color.Red , Color.Blue ); Application.DoEvents(); Function.UpdateStatisticsItem( LVwStatistics , "UDP" , P32.CaptureStatus.UDP.CountStr , P32.CaptureStatus.UDP.PctStr ,
Color.Red , Color.Blue );
Application.DoEvents(); Function.UpdateStatisticsItem( LVwStatistics , "ICMP" , P32.CaptureStatus.ICMP.CountStr ,P32.CaptureStatus.ICMP.PctStr ,Color.Red , Color.Blue ); Application.DoEvents();
51
Function.UpdateStatisticsItem( LVwStatistics , "ARP" , P32.CaptureStatus.ARP.CountStr , P32.CaptureStatus.ARP.PctStr ,Color.Red , Color.Blue ); Application.DoEvents(); Function.UpdateStatisticsItem( LVwStatistics , "Other" , P32.CaptureStatus.Other.CountStr , P32.CaptureStatus.Other.PctStr , Color.Red , Color.Blue ); Application.DoEvents(); Function.UpdateStatisticsItem( LVwStatistics , "Bytes" , P32.CaptureStatus.KilobytesStr , "" , Color.Red , Color.Blue ); Application.DoEvents(); Function.UpdateStatisticsItem( LVwStatistics , "Time" , P32.CaptureStatus.SecondsStr , "" , Color.Red , Color.Blue ); Application.DoEvents(); }
Pada
kode
tersebut,
paket
capture
akan
menampilkan
status
penngkapannya dari tiap – tiap protokol yang diterimanya. Selain memberikan status penangkapan paket dan protokol, program juga akan menghitung waktu yang digunakan dan total byte yang dikirim dalam ukuran kilobytes. Pada saat proses penangkapan ini terjadi, program akan memberikan warna merah pada tipe protokol yang diterima dan warna biru pada total paket yang ditangkap. 3.5.7 Prosedur Stop Capture Prosedur ini berfungsi untuk menghentikan proses capture dan program akan menampilkan form DisplayTotals yang disimpan pada variabel dt, dengan menggunakan fungsi dt.Show();
.
private void MenuCaptureStop_Click(object sender, System.EventArgs e) { P32.StopCapture = true; LVwStatistics.Visible = false;
52
// Tampilkan byte total // DisplayTotals dt = new DisplayTotals(); // dt.Show(this); dt.Show(); }
3.6
ALGORITMA PROGRAM FORM DISPLAY TOTALS Pada form ini digunakan komponen DataSet sebagai tabel untuk
menampilkan informasi ringkas mengenai Source IP Address, Destination IP Address dan total bytes yang dikirim. Pada saat program stop capture dijalankan, form ini akan memanggil method load untuk menampilkan data tabel yang disimpan pada variabel dataTable1.Rows.Add(row);
.untuk selengkapnya berikut ini diberikan penulisan
kode program pada prosedur load. private void DisplayTotals_Load(object sender, System.EventArgs e) { foreach (DictionaryEntry de in mach2mach.Stats) { object[] row = {mach2mach.GetSourceIP((string)de.Key), mach2mach.GetDestinationIP((string)de.Key), de.Value.ToString()}; dataTable1.Rows.Add(row); } }
Pada kode diatas, digunakan kelas mach2mach yang berfungsi untuk mengambil informasi alamat IP di dalam tabel, dan membuat penambahan baris dengan menggunakan variabel dataTable1.Rows.Add(row); Untuk menutup tabel dataTable 1 digunakan fungsi clear pada kelas mach2mach, dengan menuliskan perintah mach2mach.Clear();
53
3.7
ALGORITMA PROGRAM FORM CAPTURE OPTIONS Pada form Capture Options digunakan event Activated. Event activated ini
akan dijalankan pada saat program memanggil form Capture Options. Berikut ini akan penulisan progam pada method event Activated tersebut.
Event Activated private void CaptureOptions_Activated(object sender, System.EventArgs e) { int i = 0; if( ! ParamsLoaded ) { P32.ReadSettings(); thisCaptureLimits = P32.CaptureLimits; thisCaptureOptions = P32.CaptureOptions; Adapters = P32.InstalledAdapters; CmbAdapter.Items.Clear(); if( Adapters != null ) { if( Adapters.Length != 0 ) { for( i = 0; i < Adapters.GetLength(0); i ++ ) { if( Adapters[i] != "" ) CmbAdapter.Items.Add( Adapters[i] ); } } } if( CmbAdapter.Items.Count > 0 ) CmbAdapter.SelectedIndex = 0; TxtEachPacketSize.Text = thisCaptureOptions.PacketSize.ToString(); ChkCaptureLimit.Checked = thisCaptureOptions.LimitPackets; TxtEachPacketSize.Enabled = thisCaptureOptions.LimitPackets;
54
ChkCaptureMode.Checked = thisCaptureOptions.PromiscuousMode; TxtFilter.Text = thisCaptureOptions.Filter; if( thisCaptureOptions.CaptureMode == Packet32h.PACKET_MODE_CAPT ) CmbCaptureMode.SelectedIndex = 0; else if( thisCaptureOptions.CaptureMode == Packet32h.PACKET_MODE_STAT ) CmbCaptureMode.SelectedIndex = 1; ChkDisplayOptionsRealTime.Checked = thisDisplayOptions.UpdateListInRealTime; ChkDisplayOptionsAutomaticScroll.Checked = thisDisplayOptions.AutomaticScrollInLiveCapture; ChkCaptureLimitsPackets.Checked = thisCaptureLimits.LimitToPackets; ChkCaptureLimitsKiloBytes.Checked = thisCaptureLimits.LimitToKiloBytes; ChkCaptureLimitsSeconds.Checked = thisCaptureLimits.LimitToSeconds; TxtCaptureLimitsPackets.Text = thisCaptureLimits.PacketSize.ToString(); TxtCaptureLimitsKiloBytes.Text = thisCaptureLimits.KilobyteSize.ToString(); TxtCaptureLimitsSeconds.Text = thisCaptureLimits.SecondSize.ToString(); TxtCaptureLimitsPackets.Enabled = ChkCaptureLimitsPackets.Checked; TxtCaptureLimitsKiloBytes.Enabled = ChkCaptureLimitsKiloBytes.Checked; TxtCaptureLimitsSeconds.Enabled = ChkCaptureLimitsSeconds.Checked; ParamsLoaded = true; } }
55
Program ini akan membuat fitur pilihan secara default di dalam menu Options , diantaranya ialah pilihan di dalam pembatasan ukuran besar paket, jumlah kilobytes dan total waktu.
56