freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)數(shù)據(jù)包分析工具的設(shè)計與開發(fā)—免費計算機(編輯修改稿)

2025-01-11 03:23 本頁面
 

【文章內(nèi)容簡介】 模塊 BPF,采用與伯克利 BPF 相一致 的概念。但在 ioctl 操作上, SCO 的 BPF 并不完全提供伯克利 BPF 的所有功能。 libpcap 的結(jié)構(gòu)是簡單的。分析其結(jié)構(gòu)能使我們對稍大的程序的編寫基本思路有一定了解。首先,為了提供跨平臺兼容性,源碼中并沒有 Makefile ,而是要運行一個 configure 腳本來自動生成 Makefile, congfigure 腳本一方面檢測系統(tǒng)特征,以確定當前系統(tǒng)及一些相關(guān)配置;另一方面讀取已寫好的 文件,以此為藍本,生成一個適用于當前平臺的 Makefile。 [4] 數(shù)據(jù)包解析及存儲模塊解決方案 數(shù)據(jù)包解析完全采用自己寫的數(shù)據(jù)結(jié)構(gòu)進行數(shù)據(jù)的轉(zhuǎn)換,運用結(jié)構(gòu)體的成員進行數(shù)據(jù)的讀取,此處涉及到 Ether 包頭, LLC, ARP/RARP, IP, TCP, UDP,DHCP, DNS, ICMP 的包頭格式,以及機構(gòu)體的定義。 數(shù)據(jù)包信息的存儲采用 mysql 數(shù)據(jù)庫。 Mysql 的特點如下: (1) MYSQL 支持 5000 萬條記錄的數(shù)據(jù)倉庫 。 第 8 頁 共 26 頁 (2) MYSQL 適應(yīng)所有平臺 這個優(yōu)點跟選擇 PHP 的理由一樣。 (3) MYSQL 是 開源軟件,在版本更新上也會遇到一些從商業(yè)角度出發(fā)所做出的結(jié)論的影響。而開源的東西似乎總是比較實在一點,不會有太多商業(yè)化的考慮。 (4) 學(xué)起來簡單,或許不能這樣說,因為大多數(shù)數(shù)據(jù)庫都是用的 SQL 語句。 (5) MYSQL 因為是開源的,所以支持任意修改,也就是說你可以去除你不需要的功能,從而簡化 MYSQL,提高速度。不得不能說這是一個非常好的功能,任何商業(yè)數(shù)據(jù)庫都做不到。 數(shù)據(jù)包信息分析模塊解決方案 數(shù)據(jù)包信息分析模塊運用 C語言與 mysql數(shù)據(jù)庫的連接進行數(shù)據(jù)庫數(shù)據(jù)的查詢和統(tǒng)計。數(shù)據(jù)統(tǒng)計結(jié)果與入侵特征的對比運用 C 語言完成。因為 C語言有如下特點: C 語言 允許對位、字節(jié)和地址這些計算機功能中的基本成分進行操作。 C 語言程序非常容易移植。可移植性表示為某種計算機寫的軟件可以用到另一種機器上去。所有的高級語言都支持數(shù)據(jù)類型的概念。一個數(shù)據(jù)類型定義了一個變量的取值范圍和可在其上操作的一組運算。常見的數(shù)據(jù)類型是整型、字符型和實數(shù)型。 C程序允許幾乎所有的類型轉(zhuǎn)換。例如,字符型和整型數(shù)據(jù)能夠自由地混合在大多數(shù)表達式中進行運算。這在強類型高級語言中是不 允許的。 C語言的另一個重要特點是它僅有 3 2 個關(guān)鍵字,這些關(guān)鍵字就是構(gòu)成 C語言的命令。 C語言是結(jié)構(gòu)化語言 雖然從嚴格的 學(xué)術(shù)觀點上看, C語言是塊結(jié)構(gòu)( blockstructured)語言,但是它還是常被稱為結(jié)構(gòu)化語言。 [6] 數(shù)據(jù)顯示模塊解決方案 數(shù)據(jù)包信息的顯示采用 Apache+php 的技術(shù)來實現(xiàn), PHP 是一種腳本語言,可以編寫包含嵌入式代碼的 Web 頁面,只要訪問頁面就能執(zhí)行這些代碼,并且這些代碼還能生成動態(tài)的內(nèi)容作為輸出的一部分發(fā)送到客戶機的 Web 瀏覽器。 (1) 安全性高 , 專業(yè)的 mysql 數(shù)據(jù)庫安全性也遠遠高于 其它數(shù)據(jù)庫。 (2) 制作風(fēng)格簡單 , 只要你會基本的 HTML 語言和一定的設(shè)計技術(shù)就能很方便的制作 一整套屬于自己的論壇風(fēng)格 。 (3) 速度快 ,當然這一點會被其他很多因素影響 , 并不是絕對的 。 5 網(wǎng)絡(luò)數(shù)據(jù)包分析系統(tǒng)的實現(xiàn) 在系統(tǒng)實現(xiàn)的過程中,開發(fā)平臺選用: Ubuntu( ) +Libpcap( ) +Apache( ) +Mysql+Php5,編輯器使用的是 Emacs,編譯器是 gcc,調(diào)試工具是 gdb。選用的這些從操作系統(tǒng)到開發(fā)包再到編輯,編譯工具全部是免費的正版開源工具,為系統(tǒng)的開發(fā)成功提供了有利的保障,同時也降低了開發(fā)的成本。這也是本系統(tǒng)與其它系統(tǒng)不同的地方之一。 第 9 頁 共 26 頁 系統(tǒng)控制模塊實現(xiàn) 在 第四章敘述了模塊化設(shè)計的優(yōu)點,但是如何劃分模塊仍然是一個重要的問題。如果模塊劃分的不合理,實現(xiàn)起來就十分的麻煩!本系統(tǒng)是按功能劃分的,有四個模塊:一是 數(shù)據(jù)包的捕獲,二是 數(shù)據(jù)包的解析,三是 捕獲信息的分析,四是 顯示捕獲數(shù)據(jù)包的信息。捕獲模塊實現(xiàn)用 libpcap,數(shù)據(jù)包解析及存儲用 C和 mysql,數(shù)據(jù)包信息分析用 C 語言,數(shù)據(jù)包信息顯示用 php。四個模塊之間的調(diào)用關(guān)系如圖 4。 在模塊之間銜接運用到了線程的操作,還有幾個重要的全局變量。操作流程如圖 5。 線程操作的核心代碼如下: 打開一個線程并執(zhí)行程序。 //建立一個線程運行數(shù)據(jù)包捕獲函數(shù) void p_click(GtkWidget * widget,gpointer data) { pthread_mutex_lock(amp。mutex)。 stop=1。//捕獲條件 pthread_mutex_unlock(amp。mutex)。 pthread_create(amp。p_thread,NULL,panalyzer,NULL)。//建立線程 } //設(shè)置 stop,停止運行指定線程。 void pexit(GtkWidget * widget,gpointer data) { pthread_mutex_lock(amp。mutex)。 stop=0。//捕獲條件 pthread_mutex_unlock(amp。mutex)。} 數(shù)據(jù)包抓捕 libpcap 數(shù)據(jù)包信息顯示 php 數(shù)據(jù)包解析及存儲 C 和 TCP/IP 數(shù)據(jù)包信息分析 C 語言 圖 4 系統(tǒng)模塊 劃分 第 10 頁 共 26 頁 數(shù)據(jù)包捕獲模塊實現(xiàn) 數(shù)據(jù)包捕獲是有 Libpcap 開發(fā)包中的函數(shù)實現(xiàn)的,使用的函數(shù)有以下幾個。 pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf) 獲得用于捕獲網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)據(jù)包捕獲描述字。 device 參數(shù)為指定打開 的網(wǎng)絡(luò)設(shè)備名。 snaplen 參數(shù)定義捕獲數(shù)據(jù)的最大字節(jié)數(shù)。 promisc 指定 是否將網(wǎng)絡(luò)接口置于混雜模式。 to_ms 參數(shù)指定超時時間(毫秒)。 ebuf 參數(shù)則僅在pcap_open_live()函數(shù)出錯返回 NULL 時用于傳遞錯誤消息。 char *pcap_lookupdev(char *errbuf) 用于返回可被 pcap_open_live()或 pcap_lookup()函數(shù)調(diào)用的網(wǎng) 絡(luò) 設(shè)備名指針。如果函數(shù)出錯,則返回 NULL,同時 errbuf 中存放相關(guān)的 錯誤消息。 int pcap_lookup(char *device, bpf_u_int32 *p, bpf_u_int32 *maskp, char *errbuf) 設(shè)置 stop stopop Stop==1 結(jié)束線程 Stop==0 開始分析數(shù)據(jù)包信息 結(jié)果輸出到頁面 查看數(shù)據(jù)信息及結(jié)果 清除數(shù) 據(jù) 結(jié)束 圖 5 系統(tǒng)操作流程圖 設(shè)置分析信息 打開捕獲解析線程 數(shù)據(jù)包的捕獲與解析 數(shù)據(jù)包的分析與顯示 第 11 頁 共 26 頁 獲得指定網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)號和掩碼。 p 參數(shù)和 maskp 參數(shù)都是 bpf_u_int32 指針。如果函數(shù)出錯,則返回 1,同時 errbuf 中存放相 關(guān)的錯誤消息。 int pcap_loop(pcap_t *p, int t,pcap_handler callback, u_char *user) 功能基本與 pcap_dispatch()函數(shù)相同,只不過此函數(shù)在 t 個數(shù)據(jù)包 被處理或出現(xiàn)錯誤時才返回,但讀取超時不會返回。而如果 為 pcap_open_live()函數(shù)指定了一個非零值的超時設(shè)置,然后調(diào)用 int pcap_pile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 mask) 將 str 參數(shù)指定的字符串編譯到過濾程序中 。 fp 是一個 bpf_program 結(jié)構(gòu)的指針,在 pcap_pile()函數(shù)中被賦值。 optimize 參數(shù)控制結(jié)果代碼的優(yōu)化。mask 參數(shù)指定本地網(wǎng)絡(luò)的網(wǎng)絡(luò)掩碼。 [4] 捕獲數(shù)據(jù)包核心代碼: void panalyzer() { ?????? char *device=pcap_lookupdev(ebuf)。//獲取網(wǎng)卡 void catch_packet(u_char *args,const struct pcap_pkthdr *header,u_char *packet)。 pcap_lookup(device,amp。local,amp。mask,ebuf)。//讀取網(wǎng)絡(luò)信息 ?????? pcap_t *pd=pcap_open_live(device,BUFSIZ,0,1000,ebuf)。//打開網(wǎng)絡(luò)設(shè)備 starttime()。 while(stop==1) { pcap_loop(pd,packet_number,catch_packet,NULL)。//捕獲數(shù)據(jù)包 } endtime()。 struct pcap_stat stat。 pcap_stats(pd,amp。stat)。//統(tǒng)計捕獲數(shù)據(jù)包 ?????? pcap_close(pd)。 第 12 頁 共 26 頁 return。} 函數(shù)調(diào)用關(guān)系如圖 6。 數(shù)據(jù)包解析及存儲模塊實現(xiàn) 解析與數(shù)據(jù)存儲模塊使用 C 語言完成數(shù)據(jù)包的解析和數(shù)據(jù)庫的連接??山馕龅膮f(xié)議報頭有: Ether 包頭, LLC, ARP/RARP, IP, TCP, UDP, DHCP, DNS,ICMP 的包頭格式。同時存儲模塊連接 mysql 數(shù)據(jù)庫,把解析得到的數(shù)據(jù)放入到數(shù)據(jù)庫當中 。數(shù)據(jù)庫設(shè)計到表的建立問題。 整個報頭解析的基本過程如圖 7。 以太網(wǎng)包頭解析 IP 包頭解析 RARP 包頭解析 UDP 包頭解析 ARP 包頭解析 ICMP 包頭解析 TCP 包頭解析 類型 =0x0806 類型 =0x0835 類型 =0x0800 類型 =1 類型 =17 類型 =6 圖 7 包頭解析過程 p_click() Pthread_create() panalyer() Pcap_lookyp() Pcap_open_live() Pcap_loop() Catch_packet() Pcap_close() P_exit() 圖 6 函數(shù)調(diào)用關(guān)系 第 13 頁 共 26 頁 DHCP 包頭數(shù)據(jù)結(jié)構(gòu)的定義: typedef struct _DHCPHdr { if defined(WORD_BIGENDIAN) U_int8_t hops。 U_int8_t hlen。 u_int8_t htype。 u_int8_t op。 else U_int8_t op。 u_int8_t htype。 u_int8_t hlen。 u_int8_t hops。 endif u_int32_t xid。 u_int16_t secs。 u_int16_t flags。 u_int32_t ciaddr。 u_int32_t yiaddr。 u_int32_t siaddr。 u_int32_t giaddr。 unsigned char chaddr[16]。 char sname[64]。 char file[128]。 }DHCPHdr。 連接 mysql 數(shù)據(jù)庫的關(guān)鍵語句: ?????? MYSQL mysql。 char str[1024]。 mysql_init(amp。mysql)。//初始化數(shù)據(jù)庫 if(!(mysql_real_connect(amp。mysql,localhost,root,159753,packet,0 第 14 頁 共 26 頁 ,NULL,0))) //連接數(shù)據(jù)庫 printf(ERROR!\n)。 ?????? if(mysql_query(amp。mysql,str)) printf(Dhcp insert error!\n)。 //執(zhí)行插入語句 mysql_close(amp。mysql)。 //關(guān)閉數(shù)據(jù)庫 ?????? 數(shù)據(jù)包信息分析模塊實現(xiàn) 數(shù)據(jù)包信息分析模塊主要是對數(shù)據(jù)包
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1