Sendip源代码分析技术文档

Sendip源代码分析技术文档

ID:39468142

大小:279.00 KB

页数:31页

时间:2019-07-04

Sendip源代码分析技术文档_第1页
Sendip源代码分析技术文档_第2页
Sendip源代码分析技术文档_第3页
Sendip源代码分析技术文档_第4页
Sendip源代码分析技术文档_第5页
资源描述:

《Sendip源代码分析技术文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Sendip源代码分析技术文档Sendip是Linux下的IP数据包发送软件,它允许用户构造任意的甚至是不合法的IP数据包,并自动选择一个正确接口把它发送出去。sendip工作的基本原理是利用原始套接口编程技术,创建一个原始套接口,然后设置该套接口的IP_HDRINCL选项,从而可以由程序使用者代替操作系统任意构造IP数据报首部、上层协议首部和数据。然后利用sendto()系统调用,发送这个数据报。sendip目前的最新版本是2.1,本文挡讨论的版本是2.0。本文档首先介绍了sendip主函数的工作流程,然后介绍了一些sendip主函数调用的附加函数,系

2、统调用的功能和使用方法。最后介绍了sendip不完全移植到FreeBSD下遇到的一些问题及解决办法。第一节程序工作流程及主函数分析1.1主函数流程图介绍sendip主函数位于sendip.c里,主要完成命令行输入的解析处理,模块加载,初始化,模块函数调用,拼接数据报,发送数据报等功能。其流程图如下:1.2主函数的代码分析intmain(intargc,char*constargv[]){inti;定义一个option结构的数组名(指针),用于保存所有的模块下的子选项。structoption*opts;longindex变量用于指出getopt-long

3、-only返回的一个子选项是所有子选项列表里的第几个。intlongindex=0;charrbuff[15];usage用于指示是否要显示帮助信息,verbosity用于指示是否要显示详细信息。boolusage=FALSE,verbosity=FALSE;char*data=NULL;intdatafile=-1;定义要从文件里读数据要用的一些变量。intdatalen=0;用于遍历链表所用的临时sendip-module类型变量。sendip_module*mod;用于接受getopt返回的选项特征字符的临时变量。intoptc;用于保存最后的连头

4、带数据的整个数据分组的结构体,sendto函数最后发送的就是这个变量里的data字符串。sendip_datapacket;num-modules用于记录所加载的模块数,遍历链表时要用作循环变量。intnum_modules=0;记录总共有的选项数(包括模块下的所有子选项)。num_opts=0;指向模块结构链表头,尾的指针。first=last=NULL;程序名及路径,显示辅助信息时用。progname=argv[0];用于初始化随机数种子。srand(time(NULL));两变量在getopt.*里定义,用于记住参数列表里已经分析到什么位置了opt

5、err=0;optind=0;while(optind

6、ak;显示帮助信息case'h':usage=TRUE;break;从文件读取将要发送的数据case'f':datafile=open(optarg,O_RDONLY);if(datafile==-1){perror("Couldn'topendatafile");fprintf(stderr,"Nodatawillbeincluded");}else{datalen=lseek(datafile,0,SEEK_END);if(datalen==-1){perror("Errorreadingdatafile:lseek()");fprintf(st

7、derr,"Nodatawillbeincluded");datalen=0;}elseif(datalen==0){fprintf(stderr,"DatafileisemptyNodatawillbeincluded");}else{data=mmap(NULL,datalen,PROT_READ,MAP_SHARED,datafile,0);if(data==MAP_FAILED){perror("Couldn'treaddatafile:mmap()");fprintf(stderr,"Nodatawillbeincluded")

8、;data=NULL;datalen=0;}以上一段是文件操作}}break;返

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

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

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