libnet网络编程资料

libnet网络编程资料

ID:18601815

大小:343.00 KB

页数:49页

时间:2018-09-19

libnet网络编程资料_第1页
libnet网络编程资料_第2页
libnet网络编程资料_第3页
libnet网络编程资料_第4页
libnet网络编程资料_第5页
资源描述:

《libnet网络编程资料》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于libnet网络编程介绍与分析基于libnet网络编程介绍与分析当前,基于socket的网络编程已成为当今不可替代的编程方法,它将网络通讯当作文件描述符进行处理,把对这个“网络文件”(即socket套接字)的操作抽象成一种类似于文件操作的方式进行。从实现细节上,这种工作方式根据TCP/IP的网络通讯模型,封装了一系列的实现,使得我们只需要使用一个指定的参数,就可以实现在基于所需协议的数据的发送和接收。但是,如果我们对那些系统自动给我们做的工作感兴趣,希望与发送的数据作“面对面”的接触,libnet则会是一个不错的选择。libnet是U

2、NIX系统同台上网络安全工具开发的重要的库,它和libpcap、libnids一起,给网络安全工具的开发人员提供了一组丰富而且完全的武器,使之得以很方便地编写出结构化强、健壮性好、可移植性高等特点的程序。libnet提供一系列的接口函数,实现和封装了数据包的构造和发送过程。利用它可以亲自构造从应用层到链路层的各层协议的数据包头,并将这些包头与有效数据有序地组合在一起发送出去。当然,它也是基于tcp/ip协议族模型的。libnet当前的版本是1.1.2,相对于1.0.*版本有比较大的变化。全部源代码包括18,000行代码,109个导出函数,

3、其中包括67个建包函数。这使得它支持现有的TCP/IP族的所有协议。此外,它支持多平台,Windows,OSX,BSD,Linux,Solaris,HPUX都能使用。下图是它支持的协议:libnet库可以被划分为4个功能部分:内存管理、地址解析、包处理、以及其他一些支持函数。★内存管理函数单数据包内存初始化及环境建立:libnet_t*libnet_init(intinjection_type,char*device,char*err_buf);资源释放:   voidlibnet_destroy(libnet_t*l);★地址解析函数地

4、址解析:char*libnet_addr2name4(u_int32_tin,u_int8_tuse_name);libnet_name2addr4(libnet_t*l,char*host_name,u_int8_tuse_name);structlibnet_in6_addrlibnet_name2addr6(libnet_t*l,char*host_name,u_int8_tuse_name);voidlibnet_addr2name6_r(structlibnet_in6_addraddr,u_int8_tuse_name,cha

5、r*host_name,inthost_name_len);获取接口设备IP地址:   u_int32_tlibnet_get_ipaddr4(libnet_t*l);   structlibnet_in6_addrlibnet_get_ipaddr6(libnet_t*l);获取接口设备硬件地址:   structlibnet_ether_addr*libnet_get_hwaddr(libnet_t*l);★数据包构造函数  (这一部分函数较多,都以libnet_build_*()的形式出现,在此略过)★数据包发送函数   intli

6、bnet_write(libnet_t*l);★相关的支持函数随机数种子生成器:   intlibnet_seed_prand(libnet_t*l);获取随机数:   u_int32_tlibnet_get_prand(intmod);端口列表链初始化:   intlibnet_plist_chain_new(libnet_t*l,libnet_plist_t**plist,char*token_list);获取端口列表链的下一项(端口范围):   intlibnet_plist_chain_next_pair(libnet_plist

7、_t*plist,u_int16_t*bport,u_int16_t*eport);端口列表链输出显示:   intlibnet_plist_chain_dump(libnet_plist_t*plist);获取端口列表链:   char*libnet_plist_chain_dump_string(libnet_plist_t*plist);端口列表链内存释放:   intlibnet_plist_chain_free(libnet_plist_t*plist);对它的使用也非常简单,只要你了解自己要做什么事情、应该把哪些参数放在什么位

8、置。利用libnet函数库开发应用程序的基本步骤非常简单:1、数据包内存初始化;2、构造数据包;3、发送数据;4、释放资源;例:libnet的发行包里提供了很多示例程序,其中/libnet/s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。