2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、,信息安全產(chǎn)品開發(fā)實踐-數(shù)據(jù)包的構(gòu)造,Gujianjun (ruth)zjfriends@vip.sina.com, 13880804340Dec 2007,Libnet介紹,Libnet介紹,Mike D. Schiffmanhttp://www.packetfactory.net/libnet/專業(yè)的網(wǎng)絡(luò)數(shù)據(jù)包構(gòu)造和發(fā)送開發(fā)包包含了多路技術(shù)、緩沖區(qū)管理、網(wǎng)絡(luò)數(shù)據(jù)包頭信息、字節(jié)流順序、操作系統(tǒng)兼容性、校驗和計算等提供了

2、在IP層和鏈路層構(gòu)造數(shù)據(jù)包的功能應(yīng)用廣泛:ettercap、firewalk、snort、,Libnet作用,構(gòu)造任意數(shù)據(jù)內(nèi)容構(gòu)造各種不同協(xié)議的數(shù)據(jù)包支持從鏈路層到IP層數(shù)據(jù)包構(gòu)造支持跨平臺、自動計算校驗和,Libnet函數(shù),核心函數(shù)地址函數(shù)數(shù)據(jù)包構(gòu)造函數(shù)數(shù)據(jù)包發(fā)送函數(shù)高級處理函數(shù)Libnet句柄隊列操作函數(shù)輔助函數(shù)   具體見libnet_functions.h,Libnet支持協(xié)議類型,具體見libnet-str

3、uctures.h,Libnet的開發(fā)流程,初始化libnet_init(),構(gòu)造TCP協(xié)議塊Libnet_build_tcp_options(),構(gòu)造IP頭Libnet_build_ipv4(),,,發(fā)送數(shù)據(jù)包libnet_write(),銷毀libnet_destroy(),,構(gòu)造TCP頭Libnet_build_tcp(),,構(gòu)造以太網(wǎng)頭libnet_build_ethernet(),,初始化,由libnet_init

4、(int injection_type,char *device,char *err_buf)完成Injection_type:表示構(gòu)造的類型Device:表示網(wǎng)絡(luò)接口Err_buf:表示存放出錯的信息,初始化-確定libnet類型,6種類型LIBNET_LINK:表示構(gòu)造鏈路層開始的數(shù)據(jù)包,比IP層的更豐富;LIBNET_RAW4:表示構(gòu)造IPV4原始套接字接口類型的數(shù)據(jù)包;LIBNET_RAW6:表示構(gòu)造IPV6原始套接

5、字接口類型的數(shù)據(jù)包;,初始化-確定網(wǎng)絡(luò)接口,數(shù)據(jù)包發(fā)送的接口一種是自己指定,可以是網(wǎng)絡(luò)接口的名字,如以太網(wǎng)接口”eth0”等,也可以是IP地址;一種是由libnet自動查詢搜索,只要在函數(shù)libnet_init()的參數(shù)device賦值null即可,此時libnet會從系統(tǒng)中搜索可用的網(wǎng)絡(luò)接口.,初始化-獲取libnet的句柄,執(zhí)行完后返回一個libnet句柄,在這個句柄里面包含了重要的信息.不直接打交道struct libnet

6、_context{#if ((__WIN32__) && !(__CYGWIN__)) SOCKET fd; LPADAPTER lpAdapter;#else int fd; /* file descriptor of packet device */#endif,int injection_type;

7、 /* raw (ipv4 or ipv6) or link */#define LIBNET_LINK 0x00 /* link-layer interface */#define LIBNET_RAW4 0x01 /* raw socket interface (ipv4) */#define LIBNET_RAW6 0x02 /*

8、 raw socket interface (ipv6) *//* the following should actually set a flag in the flags variable above */#define LIBNET_LINK_ADV 0x08 /* advanced mode link-layer */#define LIBNET_RAW4_ADV 0x09 /*

9、 advanced mode raw socket (ipv4) */#define LIBNET_RAW6_ADV 0x0a /* advanced mode raw socket (ipv6) */#define LIBNET_ADV_MASK 0x08 /* mask to determine adv mode */,libnet_pblock_t *protocol_blocks;

10、 /* protocol headers / data */ libnet_pblock_t *pblock_end; /* last node in list */ u_int32_t n_pblocks; /* number of pblocks */ int link_type; /* link-layer type

11、 */ int link_offset; /* link-layer header size */ int aligner; /* used to align packets */ char *device; /* device name */,struct libnet_stats s

12、tats; /* statistics */ libnet_ptag_t ptag_state; /* state holder for pblock tag */ char label[LIBNET_LABEL_SIZE]; /* textual label for cq interface */ char err_buf[LIBNET_ERRBUF_SIZE]

13、; /* error buffer */ u_int32_t total_size; /* total size */};typedef struct libnet_context libnet_t;,構(gòu)造數(shù)據(jù)包,構(gòu)造一個數(shù)據(jù)包就是構(gòu)造一系列協(xié)議塊.一個數(shù)據(jù)包是由一個協(xié)議塊構(gòu)成的.例如:構(gòu)造一個tcp數(shù)據(jù)包,1、構(gòu)造一個tcp協(xié)議塊,然后插入?yún)f(xié)議塊鏈表;2、在構(gòu)造一個ip協(xié)議塊,插入到t

14、cp協(xié)議塊后面;3、最后構(gòu)造一個以太網(wǎng)協(xié)議塊,插入到ip協(xié)議塊后面.,數(shù)據(jù)包檢測,數(shù)據(jù)包的檢測最主要的是計算校驗和,如果不想自己計算校驗和,只需要將校驗和的參數(shù)賦值為0即可,libnet就會自動計算校驗和.,數(shù)據(jù)包發(fā)送,非常簡單,只需要由函數(shù)libnet_write()函數(shù)完成的.,構(gòu)造arp數(shù)據(jù)包的流程,過程說明,1、利用函數(shù)libnet_init()進(jìn)行初始化操作,因為arp協(xié)議在網(wǎng)絡(luò)層,所以必須先構(gòu)造arp協(xié)議塊,也就是利用函數(shù)

15、libnet_build_arp()來構(gòu)造arp協(xié)議塊;2、利用函數(shù)libnet_autobuild_ethernet()或者libnet_build_ethernet()來構(gòu)造以太網(wǎng)協(xié)議塊;3、利用函數(shù)libnet_write()發(fā)送數(shù)據(jù)包;,初始化libnet_init(),構(gòu)造ARP協(xié)議塊Libnet_build_arp()Libnet_autobuild_arp(),構(gòu)造以太網(wǎng)協(xié)議塊Libnet_build_ether

16、net()Libnet_autobuild_ethernet(),,,發(fā)送數(shù)據(jù)包libnet_write(),銷毀libnet_destroy(),,數(shù)據(jù)包的構(gòu)造及設(shè)計,過程簡單說明,1、對內(nèi)存進(jìn)行初試化;2、對網(wǎng)絡(luò)進(jìn)行初始化;3、構(gòu)造各種網(wǎng)絡(luò)數(shù)據(jù)包;4、對數(shù)據(jù)包進(jìn)行合法性檢查5、發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包,初始化函數(shù),由libnet_init(int injection_type,char *device,char *err_buf

17、)完成函數(shù)返回值:如果成功就返回一個libnet句柄,如果失敗,則返回null參數(shù)描述:Injection_type:表示構(gòu)造的類型,Device:表示網(wǎng)絡(luò)接口,Err_buf:表示存放出錯的信息,地址函數(shù),由char * libnet_addr2name4(u_init32_t,u_int8_t usr_name)完成函數(shù)返回值:返回IPV4地址的文字面熟字符串格式參數(shù)描述:參數(shù)in表示網(wǎng)絡(luò)字節(jié)順序的ipv4地址,參數(shù)use

18、_name表示是否需要進(jìn)行名字.,構(gòu)造函數(shù),由u_int32_t libnet_name2addr4(libnet_t *l,char * host_name,u_int8_t use_name)完成函數(shù)返回值:返回網(wǎng)絡(luò)字節(jié)順序IPV4地址參數(shù)描述:參數(shù)l表示libnet句柄,參數(shù)host_name表示主機(jī)名字,參數(shù)use_name表示是否要進(jìn)行域名解析.destination_ip=libnet_name2addr4(1,de

19、stination_ip_str,LIBNET_RESOLVE),構(gòu)造函數(shù),libnet_build_arp()函數(shù)返回值:返回一個協(xié)議標(biāo)志,失敗返回-1,構(gòu)造函數(shù),libnet_autobuild_ethernet(u_int8_t *dst, u_int16_t type, libnet_t *l)函數(shù)返回值:返回一個協(xié)議標(biāo)志,失敗返回-1;參數(shù)描述:參數(shù)dst表示目的以太網(wǎng)地址,參數(shù)type表示協(xié)議類型,參數(shù)l表示libne

20、t句柄libnet_autobuild_ethernet(hardware_destination,ETHERTYPE_ARP,l),數(shù)據(jù)包構(gòu)造,ARP數(shù)據(jù)包構(gòu)造IP數(shù)據(jù)包構(gòu)造Tcp數(shù)據(jù)包構(gòu)造Synflood數(shù)據(jù)包構(gòu)造Ping of death數(shù)據(jù)包構(gòu)造gcc -o xxx arp.c -lnet,數(shù)據(jù)包構(gòu)造,tar -zxvf libnetxxxx.tar.gzcd libnet./configurema

溫馨提示

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

評論

0/150

提交評論