欢迎来到天天文库
浏览记录
ID:8406407
大小:227.50 KB
页数:31页
时间:2018-03-20
《信息安全产品开发实践 -数据包的构造》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、信息安全产品开发实践-数据包的构造Gujianjun(ruth)zjfriends@vip.sina.com,13880804340Dec2007Libnet介绍Libnet介绍MikeD.Schiffmanhttp://www.packetfactory.net/libnet/专业的网络数据包构造和发送开发包包含了多路技术、缓冲区管理、网络数据包头信息、字节流顺序、操作系统兼容性、校验和计算等提供了在IP层和链路层构造数据包的功能应用广泛:ettercap、firewalk、snort、Libnet作用构造任意数据内容构造各种不同协议的数据包支持从链路层到IP层数据包构造支持跨
2、平台、自动计算校验和Libnet函数核心函数地址函数数据包构造函数数据包发送函数高级处理函数Libnet句柄队列操作函数辅助函数 具体见libnet_functions.hLibnet支持协议类型具体见libnet-structures.hLibnet的开发流程初始化libnet_init()构造TCP协议块Libnet_build_tcp_options()构造IP头Libnet_build_ipv4()发送数据包libnet_write()销毁libnet_destroy()构造TCP头Libnet_build_tcp()构造以太网头libnet_build_ethern
3、et()初始化由libnet_init(intinjection_type,char*device,char*err_buf)完成Injection_type:表示构造的类型Device:表示网络接口Err_buf:表示存放出错的信息初始化-确定libnet类型6种类型LIBNET_LINK:表示构造链路层开始的数据包,比IP层的更丰富;LIBNET_RAW4:表示构造IPV4原始套接字接口类型的数据包;LIBNET_RAW6:表示构造IPV6原始套接字接口类型的数据包;初始化-确定网络接口数据包发送的接口一种是自己指定,可以是网络接口的名字,如以太网接口”eth0”等,也可以是
4、IP地址;一种是由libnet自动查询搜索,只要在函数libnet_init()的参数device赋值null即可,此时libnet会从系统中搜索可用的网络接口.初始化-获取libnet的句柄执行完后返回一个libnet句柄,在这个句柄里面包含了重要的信息.不直接打交道structlibnet_context{#if((__WIN32__)&&!(__CYGWIN__))SOCKETfd;LPADAPTERlpAdapter;#elseintfd;/*filedescriptorofpacketdevice*/#endifintinjection_type;/*raw(ipv4o
5、ripv6)orlink*/#defineLIBNET_LINK0x00/*link-layerinterface*/#defineLIBNET_RAW40x01/*rawsocketinterface(ipv4)*/#defineLIBNET_RAW60x02/*rawsocketinterface(ipv6)*//*thefollowingshouldactuallysetaflagintheflagsvariableabove*/#defineLIBNET_LINK_ADV0x08/*advancedmodelink-layer*/#defineLIBNET_RAW4_AD
6、V0x09/*advancedmoderawsocket(ipv4)*/#defineLIBNET_RAW6_ADV0x0a/*advancedmoderawsocket(ipv6)*/#defineLIBNET_ADV_MASK0x08/*masktodetermineadvmode*/libnet_pblock_t*protocol_blocks;/*protocolheaders/data*/libnet_pblock_t*pblock_end;/*lastnodeinlist*/u_int32_tn_pblocks;/*numberofpblocks*/intlink_t
7、ype;/*link-layertype*/intlink_offset;/*link-layerheadersize*/intaligner;/*usedtoalignpackets*/char*device;/*devicename*/structlibnet_statsstats;/*statistics*/libnet_ptag_tptag_state;/*stateholderforpblocktag*/charlabel[LIBNET_LABEL_SIZE];/*te
此文档下载收益归作者所有