網(wǎng)絡(luò)安全課程設(shè)計(jì)-網(wǎng)絡(luò)嗅探器的制作.doc

上傳人:good****022 文檔編號(hào):116538345 上傳時(shí)間:2022-07-05 格式:DOC 頁數(shù):27 大?。?03KB
收藏 版權(quán)申訴 舉報(bào) 下載
網(wǎng)絡(luò)安全課程設(shè)計(jì)-網(wǎng)絡(luò)嗅探器的制作.doc_第1頁
第1頁 / 共27頁
網(wǎng)絡(luò)安全課程設(shè)計(jì)-網(wǎng)絡(luò)嗅探器的制作.doc_第2頁
第2頁 / 共27頁
網(wǎng)絡(luò)安全課程設(shè)計(jì)-網(wǎng)絡(luò)嗅探器的制作.doc_第3頁
第3頁 / 共27頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《網(wǎng)絡(luò)安全課程設(shè)計(jì)-網(wǎng)絡(luò)嗅探器的制作.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《網(wǎng)絡(luò)安全課程設(shè)計(jì)-網(wǎng)絡(luò)嗅探器的制作.doc(27頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、南昌航空大學(xué)信息工程學(xué)院信息安全課程設(shè)計(jì)學(xué) 院 信息工程學(xué)院 專 業(yè) 網(wǎng)絡(luò)工程 班 級(jí) 130461班 課題名稱 網(wǎng)絡(luò)嗅探器的制作 開課時(shí)間 2015至 2016 學(xué)年 第 二 學(xué)期 地點(diǎn) D405 目錄目錄1一、選題背景與意義2二、需求分析32.1需求分析32.2功能分析3三、概要設(shè)計(jì)43.1功能圖43.2設(shè)計(jì)界面4四、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)64.1文字介紹實(shí)現(xiàn)的方法64.1.1程序流程圖74.1.2 關(guān)鍵技術(shù)7(1)socket創(chuàng)建7(2)數(shù)據(jù)類型分析84.2具體界面展示及運(yùn)行結(jié)果94.3關(guān)鍵代碼13(1)數(shù)據(jù)包的捕獲13(2)數(shù)據(jù)包的顯示16(3)日志文件的保存23(4)抓包信息的過濾23五、課

2、設(shè)小結(jié)25六、參考文獻(xiàn)26一、選題背景與意義隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,網(wǎng)絡(luò)己成為人們生活中的必備工具,計(jì)算機(jī)網(wǎng)絡(luò)在政治、經(jīng)濟(jì)、軍事、社會(huì)生活等各個(gè)領(lǐng)域正發(fā)揮著日益重要的作用,人們對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的依賴性也大大增強(qiáng),一些網(wǎng)絡(luò)新業(yè)務(wù)如電子商務(wù)、移動(dòng)支付等,這些都對(duì)網(wǎng)絡(luò)安全 提出了較高的要求。但是由于計(jì)算機(jī)網(wǎng)絡(luò)具有連接形式多樣性、開放性、互聯(lián)性等特點(diǎn),而且多數(shù)都采用TCP/TP協(xié)議,而TCP/TP在設(shè)計(jì)上力求運(yùn)行效率,并建立在相互信任的基礎(chǔ)上,其本身就是造成網(wǎng)絡(luò)不安全的主要因素,這也是TCP/TP協(xié)議在設(shè)計(jì)上的缺陷,從而導(dǎo)致針對(duì)網(wǎng)絡(luò)系統(tǒng)的攻擊事件頻繁發(fā)生,所以網(wǎng)絡(luò)安全已成為網(wǎng)絡(luò)建設(shè)的一個(gè)非常重要的方

3、面?,F(xiàn)在人們對(duì)計(jì)算機(jī)信息安全要求越來越高,隨著計(jì)算機(jī)網(wǎng)絡(luò)的資源共享進(jìn)一步加強(qiáng),隨之而來的網(wǎng)絡(luò)安全問題使得計(jì)算機(jī)網(wǎng)絡(luò)安全保護(hù)將會(huì)變得越來越重要。所以當(dāng)我們?cè)谙硎芫W(wǎng)絡(luò)所帶來的方便和快捷的同時(shí)也要認(rèn)識(shí)到網(wǎng)絡(luò)安全所面臨的嚴(yán)峻考驗(yàn)。在防范網(wǎng)絡(luò)攻擊方面,通過數(shù)據(jù)截取及分析輸出結(jié)果可以捕獲到透過防火墻而進(jìn)入網(wǎng)絡(luò)的非法數(shù)據(jù),成功的監(jiān)視記錄黑客的入侵過程,保障網(wǎng)絡(luò)的安全。而且數(shù)據(jù)截取和協(xié)議分析是入侵檢測(cè)系統(tǒng)的重要部分,是入侵檢測(cè)系統(tǒng)的最基礎(chǔ)的環(huán)節(jié)。二、需求分析2.1需求分析實(shí)現(xiàn)Sniffer的基本功能。Sniffer是一種用于監(jiān)測(cè)網(wǎng)絡(luò)性能、使用情況的工具。能夠偵聽所有進(jìn)出本主機(jī)的數(shù)據(jù)包,完整顯示數(shù)據(jù)包網(wǎng)絡(luò)層和傳

4、輸層(ICMP、IP、TCP和UDP)的頭信息。比如,對(duì)IP頭而言,需要顯示版本、頭長(zhǎng)度、服務(wù)類型、數(shù)據(jù)包長(zhǎng)度、標(biāo)識(shí)、DF/MF標(biāo)志、段內(nèi)偏移、生存期、協(xié)議類型、源目的IP地址、選項(xiàng)內(nèi)容。要求顯示數(shù)據(jù)的實(shí)際含義;偵聽來源于指定IP地址的數(shù)據(jù),顯示接收到的TCP數(shù)據(jù)包的全部實(shí)際內(nèi)容。需要考慮一個(gè)TCP包劃分為多個(gè)IP包傳輸?shù)那闆r;功能驗(yàn)證手段:在運(yùn)行Sniffer的同時(shí),執(zhí)行標(biāo)準(zhǔn)的Ping、Telnet和瀏覽網(wǎng)頁等操作,檢查Sniffier能否返回預(yù)期的結(jié)果。2.2功能分析有于水平有限,不可能實(shí)現(xiàn)Sniffer或者wireshark那樣復(fù)雜的設(shè)置和分析,所以我們只對(duì)抓取到的本機(jī)在網(wǎng)絡(luò)中的通信數(shù)據(jù)

5、(如協(xié)議類型,源、目的地址和端口、數(shù)據(jù)包的大小等)加以分析,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)嗅探器。一個(gè)窗體顯示主頁面,另一個(gè)頁面顯示詳細(xì)的包信息。詳細(xì)信息頁面,我們顯示一下信息:開始時(shí)間:嗅探器抓取數(shù)據(jù)包的時(shí)間;源端口:源目的IP地址+端口號(hào);目的端口:目的IP地址+端口號(hào);協(xié)議類型:只分析一下類型,GPG,ICMP,IDP,IGMP,IP,ND,PUP,TCP,UDP,其他的不再分析;抓包時(shí)間:;報(bào)頭大?。簣?bào)文報(bào)首部大小;報(bào)文總長(zhǎng):整個(gè)數(shù)據(jù)報(bào)的大小;三、概要設(shè)計(jì)網(wǎng)絡(luò)嗅探器3.1功能圖數(shù)據(jù)包的顯示混雜模式的開啟及套接字的調(diào)用網(wǎng)卡信息的獲取及本機(jī)IP的獲取數(shù)據(jù)包的過濾及顯示數(shù)據(jù)包的日志文件保存數(shù)據(jù)包的捕獲圖

6、1 網(wǎng)絡(luò)嗅探器的功能結(jié)構(gòu)圖3.2設(shè)計(jì)界面工具:Visual studio 2013使用編程語言:C#窗體編程Button類實(shí)現(xiàn)的功能有:開始,暫停,清除信息,顯示所有信息,保存日志文件、過濾抓包信息Textbox:顯示本機(jī)IP地址、輸入IP地址用來過濾出所需的抓包信息Listview:顯示抓包的詳細(xì)信息,包括源IP,源端口,目的IP,目的端口,傳輸協(xié)議類型,時(shí)間,總長(zhǎng)度,抓包信息顯示Richtextbox:顯示抓包的具體內(nèi)容Lable標(biāo)簽:解釋信息,顯示具體的接收信息和抓包長(zhǎng)度,做注釋用具體控件的定義private System.Windows.Forms.CheckBox filterChe

7、ckBox; private System.Windows.Forms.Button startButton; private System.Windows.Forms.Button stopButton; private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.TextBox ipTextBox; private System.Windows.Forms.Label hintLabel; private MyButton clearButton; private System.Windows.Fo

8、rms.BindingSource packetBindingSource; private System.Windows.Forms.ListView listView; private ColumnHeader header; private ColumnHeader columnHeader1; private ColumnHeader columnHeader2; private ColumnHeader columnHeader3; private ColumnHeader columnHeader4; private ColumnHeader columnHeader5; priv

9、ate ColumnHeader columnHeader6; private ColumnHeader columnHeader7; private ColumnHeader columnHeader8; private ComboBox typeComboBox; private MyRichTextBox hexTextBox; private MyRichTextBox charTextBox; private Button allButton; private Button filterButton; private ToolTip toolTip2; private ToolTip

10、 toolTip3; private Label label1; private Label label2; private TextBox textBox1; private RichTextBox richTextBox1; private Button button1; private Label label3; private Button ToolStripMenuItem;四、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1文字介紹實(shí)現(xiàn)的方法具體到編程實(shí)現(xiàn)上,這種對(duì)網(wǎng)卡混雜模式的設(shè)置是通過原始套接字(raw socket)來實(shí)現(xiàn)的,這也有別于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報(bào)套接字。在創(chuàng)建了原始套接字后,需要

11、通過setsockopt()函數(shù)來設(shè)置IP頭操作選項(xiàng),然后再通過bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過ioctlsocket()來進(jìn)行設(shè)置,對(duì)數(shù)據(jù)包的獲取仍象流式套接字或數(shù)據(jù)報(bào)套接字那樣通過recv()函數(shù)來完成。但是與其他兩種套接字不同的是,原始套接字此時(shí)捕獲到的數(shù)據(jù)包并不僅僅是單純的數(shù)據(jù)信息,而是包含有 IP頭、 TCP頭等信息頭的最原始的數(shù)據(jù)信息,這些信息保留了它在網(wǎng)絡(luò)傳輸時(shí)的原貌。通過對(duì)這些在低層傳輸?shù)脑夹畔⒌姆治隹梢缘玫接嘘P(guān)網(wǎng)絡(luò)的一些信息。由于這些數(shù)據(jù)經(jīng)過了網(wǎng)絡(luò)層和傳輸層的打包,因此需要根據(jù)其附加的幀頭對(duì)數(shù)據(jù)包進(jìn)行分析。4.1.1程

12、序流程圖關(guān)閉套接字是開始建立套接字綁定套接字設(shè)置網(wǎng)卡為混雜模式初始化數(shù)據(jù)包接收結(jié)構(gòu)停止接收分析處理數(shù)據(jù)包否開始捕獲顯示分析結(jié)果圖2 嗅探器工作流程如圖2所示,在利用套接字開發(fā)網(wǎng)絡(luò)嗅探器程序時(shí)的一般步驟是:首先,創(chuàng)建原始套接字,并設(shè)置其操作選項(xiàng);其次將原始套接字綁定到本地網(wǎng)卡地址上;設(shè)置網(wǎng)卡為混雜模式,這樣網(wǎng)卡就可以收到任何在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包;在以上條件下開始對(duì)數(shù)據(jù)包進(jìn)行捕獲、分析。4.1.2 關(guān)鍵技術(shù)(1)socket創(chuàng)建網(wǎng)絡(luò)嗅探器作為一種網(wǎng)絡(luò)通訊程序,是通過對(duì)網(wǎng)卡的編對(duì)網(wǎng)卡的編程是使用Socket函數(shù)來實(shí)現(xiàn)的。是引用網(wǎng)絡(luò)連接的特殊的文件描述符,是在客戶和服務(wù)器之間通信的實(shí)體。當(dāng)客戶連接到服

13、務(wù)器時(shí),就會(huì)有兩socket:客戶方socket和對(duì)應(yīng)的服務(wù)器端的套接字,這里將它們稱作CLIENTSOCK 和 SERVERSOCK。當(dāng)客戶方在 CLIENTSOCK 使用 send()函數(shù)時(shí),服務(wù)器方可以在 SERVERSOCK 上使用 recv()函數(shù)來獲取客戶方發(fā)送的數(shù)據(jù)。反之亦然。socket由三個(gè)基本要素組成:網(wǎng)絡(luò)類型、數(shù)據(jù)傳輸類型、采用的網(wǎng)絡(luò)協(xié)議。socket編程是網(wǎng)絡(luò)編程的核心。以下是創(chuàng)建socket的代碼:SOCKETconn;Conn=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(conn=INVAILD_SOCKET);return

14、;原始socket是允許訪問底層傳輸協(xié)議的一種socket 類型。使用原始socket操作 IP 數(shù)據(jù)報(bào),可以進(jìn)行路由跟蹤、Ping等。另外,使用原始socket需要知道許多下層協(xié)議結(jié)構(gòu)的知識(shí)。原始socket有兩種類型,第一種類型是在 IP 頭中使用預(yù)定義的協(xié)議, ICMP;如第二種類型是在 IP 頭中使用自定義的協(xié)議1718。(2)數(shù)據(jù)類型分析套接字程序接收到 IP 數(shù)據(jù)包之后,調(diào)用自定義函數(shù) DecodeIPPacket 進(jìn)行解析。這個(gè)函數(shù)萃取出數(shù)據(jù)包中的協(xié)議頭,向用戶輸出協(xié)議信息。即在設(shè)置SIO_RCVALLioctl 之后,在原始套接字上對(duì) recv/WSARecv的調(diào)用將返回 IP

15、 數(shù)據(jù)報(bào),其中包含了完整的 IP 頭, 頭后面IP可能是 UDP 頭,也可能是 TCP 頭,這要看發(fā)送封包用戶所使用的協(xié)議了。數(shù)據(jù)從應(yīng)用層到達(dá)傳輸層時(shí),將添加 TCP 數(shù)據(jù)段頭或者是 UDP 數(shù)據(jù)段頭。下面分別給出 TCP 數(shù)據(jù)包結(jié)構(gòu)和 UDP 數(shù)據(jù)包結(jié)構(gòu)。其中 TCP 數(shù)據(jù)頭比較麻煩,它以 20 個(gè)固定字節(jié)開 而始,在固定頭后面還可以有一些長(zhǎng)度不固定的可選項(xiàng)。 UDP的數(shù)據(jù)段頭相對(duì)來講比較簡(jiǎn)單,它由 8 字節(jié)的頭和數(shù)據(jù)部分組成。此外,從封包中萃取出 TCPHeader 或 UDPHeader 之后,還可以根據(jù)目的端口號(hào)進(jìn)一步分析用戶在應(yīng)用層使用協(xié)議類型,例如目的的端口號(hào)為 25,則說明使用的

16、是 SMTP,端口號(hào)為 110,則說明使用的是 POP3。4.2具體界面展示及運(yùn)行結(jié)果圖3 網(wǎng)絡(luò)嗅探器的整體界面圖4 開始抓包圖5 雙擊鼠標(biāo)顯示抓包詳細(xì)信息圖6 通過源IP過濾抓包圖7 通過目的IP抓包圖8 清除所有抓包信息圖9 保存抓包日志文件圖10 打開抓包日志文件4.3關(guān)鍵代碼(1)數(shù)據(jù)包的捕獲class Monitor/記錄 private const int SECURITY_BUILTIN_DOMAIN_RID = 0 x20; private const int DOMAIN_ALIAS_RID_ADMINS = 0 x220; private const int IOC_VEN

17、DOR = 0 x18000000; private const int IOC_IN = -2147483648; /0 x80000000; private const int SIO_RCVALL = IOC_IN | IOC_VENDOR | 1; private const int BUF_SIZE = 1024 * 1024;/設(shè)置緩沖區(qū)大小保存抓包文件 private Socket monitor_Socket;/監(jiān)控函數(shù)套接字 private IPAddress ipAddress;/獲取IP private byte buffer;/緩沖區(qū) public Monitor(IP

18、Address ip) this.ipAddress = ip;this.buffer = new byteBUF_SIZE;/緩沖區(qū)的大小Monitor() stop(); public void start()/定義的開始基類 if (monitor_Socket = null) try if (ipAddress.AddressFamily = AddressFamily.InterNetwork) monitor_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, System.Net.Sockets.Prot

19、ocolType.IP); else monitor_Socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Raw, System.Net.Sockets.ProtocolType.IP); monitor_Socket.Bind(new IPEndPoint(ipAddress, 0); monitor_Socket.IOControl(SIO_RCVALL, BitConverter.GetBytes(int)1), null); monitor_Socket.BeginReceive(buffer, 0, buffer.

20、Length, SocketFlags.None, new AsyncCallback(this.OnReceive), null); catch(Exception e) monitor_Socket.Close(); monitor_Socket = null; Console.WriteLine(e.ToString(); public void stop() if(monitor_Socket != null) monitor_Socket.Close(); monitor_Socket = null; private void OnReceive(IAsyncResult ar)/返

21、回值處理 try int len = monitor_Socket.EndReceive(ar); if (monitor_Socket != null) byte receivedBuffer = new bytelen; Array.Copy(buffer, 0, receivedBuffer, 0, len); try Packet packet = new Packet(receivedBuffer); OnNewPacket(packet); catch (ArgumentNullException ane) Console.WriteLine(ane.ToString(); cat

22、ch (ArgumentException ae) Console.WriteLine(ae.ToString(); monitor_Socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(this.OnReceive), null); catch stop(); protected void OnNewPacket(Packet p) if (newPacketEventHandler != null) newPacketEventHandler(this, p); public ev

23、ent NewPacketEventHandler newPacketEventHandler; public delegate void NewPacketEventHandler(Monitor monitor, Packet p); / / 檢查當(dāng)前用戶是否是管理員; / / private bool IsUserAnAdmin() WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); return prin

24、cipal.IsInRole(WindowsBuiltInRole.Administrator); DllImport(advapi32.dll) private extern static int AllocateAndInitializeSid(byte pIdentifierAuthority, byte nSubAuthorityCount, int dwSubAuthority0, int dwSubAuthority1, int dwSubAuthority2, int dwSubAuthority3, int dwSubAuthority4, int dwSubAuthority

25、5, int dwSubAuthority6, int dwSubAuthority7, out IntPtr pSid); DllImport(advapi32.dll) private extern static int CheckTokenMembership(IntPtr TokenHandle, IntPtr SidToCheck, ref int IsMember); DllImport(advapi32.dll) private extern static IntPtr FreeSid(IntPtr pSid); (2)數(shù)據(jù)包的顯示在richtextbox中顯示抓包信息:priv

26、ate void allButton_Click(object sender, EventArgs e) this.listView.Items.Clear(); pList.Clear(); Packet p; for (int i = 0; i allList.Count; i+) p = allListi; pList.Add(p); this.listView.Items.Add(new ListViewItem(new string p.Src_IP, p.Src_PORT,p.Des_IP, p.Des_PORT, p.Type, p.Time, p.TotalLength.ToS

27、tring(), p.getCharString(); clearDetail(); MessageBox.Show(已重新加載信息!); 在listview中顯示抓包的情況:private void listView_SelectedIndexChanged(object sender, EventArgs e)/抓包信息顯示部分 ListView listView = sender as ListView; if (listView.SelectedItems != null & listView.SelectedItems.Count != 0) Packet p = pListlist

28、View.SelectedItems0.Index; /MessageBox.Show(charLength: + p.getCharString().Length + n + hexLength: + p.getHexString().Length); this.hexTextBox.Text = p.getHexString(); this.charTextBox.Text = p.getCharString(); public class Packet/定義抓包的類型,包括抓包的協(xié)議類型,總長(zhǎng)度,抓包的信息 private const int LineCount = 30; / / 使用

29、枚舉來標(biāo)識(shí)協(xié)議類型; / enum ProtocolType GGP = 3, ICMP = 1, IDP = 22, IGMP = 2, IP = 4, ND = 77, PUP = 12, TCP = 6, UDP = 17, OTHERS = -1 / / 原始數(shù)據(jù)包對(duì)底層; / private byte raw_Packet; / / 嗅探的時(shí)間; / private DateTime dateTime; / / 抓包的協(xié)議類型; / private ProtocolType protocolType;/抓包的協(xié)議類型 private IPAddress src_IPAddress;/

30、源IP地址 private IPAddress des_IPAddress;/目的IP地址 private int src_Port;/源端口 private int des_Port;/目的端口 private int totalLength;/包的總長(zhǎng)度 private int headLength;/頭的長(zhǎng)度 /盡用于測(cè)試 public int HeadLength get return headLength; / / 使用原始的和當(dāng)前的系統(tǒng)時(shí)間來初始化數(shù)據(jù)包; / / / public Packet(byte raw) /調(diào)用此構(gòu)造函數(shù)時(shí),應(yīng)捕獲所有下列異常; if (raw = nu

31、ll) throw new ArgumentNullException(); /當(dāng)原長(zhǎng)度小于20,它一定是錯(cuò)的; if (raw.Length 20) throw new ArgumentException(); raw_Packet = raw; dateTime = DateTime.Now;/抓包時(shí)間; /獲取包的頭長(zhǎng); headLength = (raw0 & 0 x0F) * 4; if (raw0 & 0 x0F) 5) throw new ArgumentException(); / 頭是錯(cuò)誤的,長(zhǎng)度是不正確的; /實(shí)際長(zhǎng)度與頭長(zhǎng)度指示器相同嗎? if (raw2 * 256 +

32、 raw3) != raw.Length) throw new ArgumentException(); / 長(zhǎng)度不正確; /獲取包的類型; if (Enum.IsDefined(typeof(ProtocolType), (int)raw9) protocolType = (ProtocolType)raw9; else protocolType = ProtocolType.OTHERS; src_IPAddress = new IPAddress(BitConverter.ToUInt32(raw, 12); des_IPAddress = new IPAddress(BitConver

33、ter.ToUInt32(raw, 16); totalLength = raw2 * 256 + raw3; /處理特定方法的TCP或UDP; if (protocolType = ProtocolType.TCP | protocolType = ProtocolType.UDP) src_Port = rawheadLength * 256 + rawheadLength + 1; des_Port = rawheadLength + 2 * 256 + rawheadLength + 3; if (protocolType = ProtocolType.TCP) headLength

34、+= 20; else if (protocolType = ProtocolType.UDP) headLength += 8; else src_Port = -1; des_Port = -1; / / 可訪問的源IP地址; / public string Src_IP get return src_IPAddress.ToString(); /返回 127.0.0.1; / / 可訪問的源端口,并把源端口的值返回; / public string Src_PORT get if (src_Port != -1) return src_Port.ToString(); else retu

35、rn ; / / 可訪問的IP地址,并把IP地址的值返回; / public string Des_IP get return des_IPAddress.ToString(); / / 可訪問的目標(biāo)端口; / public string Des_PORT get if (des_Port != -1) return des_Port.ToString(); else return ; / / 包的類型; / public string Type get return protocolType.ToString(); / / 包的總長(zhǎng)度; / public int TotalLength ge

36、t return totalLength; / / 實(shí)際的抓包時(shí)間; / public string Time get return dateTime.ToLongTimeString(); / / 返回的數(shù)據(jù)包在基本層忽略標(biāo)題十六進(jìn)制的進(jìn)制格式; / / public string getHexString() StringBuilder sb = new StringBuilder(raw_Packet.Length); for (int i = headLength; i TotalLength; i += LineCount) for (int j = i; j TotalLength

37、 & j i + LineCount; j+) sb.Append(raw_Packetj.ToString(X2) + ); sb.Append(n); return sb.ToString(); / / 返回忽略底層層中的標(biāo)題的數(shù)據(jù)包的字符格式; / / public string getCharString() StringBuilder sb = new StringBuilder(); for(int i = this.HeadLength; i TotalLength; i += LineCount) for (int j = i; j TotalLength & j 31 & r

38、aw_Packetj 128) sb.Append(char)raw_Packetj); else sb.Append(.); sb.Append(n); return sb.ToString(); (3)日志文件的保存private void ToolStripMenuItem_Click(object sender, EventArgs e) SaveFileDialog dlg = new SaveFileDialog(); dlg.DefaultExt = .text; /獲取或設(shè)置默認(rèn)文件擴(kuò)展名 dlg.Filter = (.txt)|*.txt; / 獲取或設(shè)置當(dāng)前文件名篩選器字符

39、串,該字符串決定對(duì)話框的“另存為文件類型”或“文件類型”框中出現(xiàn)的選擇內(nèi)容 DialogResult result = dlg.ShowDialog(); if (result = DialogResult.OK) string filename = dlg.FileName; /獲取保存文件的完整路徑,包括文件名 try using (StreamWriter sw = new StreamWriter(filename) sw.Write(this.hexTextBox.Text.Replace(n, rn); / sw.WriteLine(this.richTextBox1.Text);

40、 catch (Exception) (4)抓包信息的過濾private void filterButton_Click(object sender, EventArgs e) if (this.listView.Items.Count 1) MessageBox.Show(請(qǐng)嗅探和現(xiàn)實(shí)所有嗅包優(yōu)先!); showIPPackets(getFilterCondition(); clearDetail(); / / 根據(jù)iptextbox和typecombobox得到過濾條件,包括IP、端口和類型; / default value ; / / private string getFilterCo

41、ndition()/獲取抓包的情況 string conditions = , , ; string tmpString = this.ipTextBox.Text; int port = 0; if (this.typeComboBox.SelectedIndex -1) conditions2 = this.typeComboBox.SelectedItem.ToString(); if (tmpString.Contains(/) | tmpString.Contains(:)/IP:PORT OR IP/PORT顯示端口 string arr = null, null ; if (tm

42、pString.Contains(/) arr = tmpString.Split(new char / ); else arr = tmpString.Split(new char : ); conditions0 = arr0; conditions1 = arr1; else if (int.TryParse(tmpString, out port)/just port;僅顯示端口 conditions1 = port.ToString(); else/just IP; conditions0 = tmpString; /Console.WriteLine(conditions); return conditions; private void showIPPackets(string conditions) string ipString = conditions0; string

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!