NO12刘家豪1143111006.docx
- 文档编号:9986561
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:10
- 大小:349.72KB
NO12刘家豪1143111006.docx
《NO12刘家豪1143111006.docx》由会员分享,可在线阅读,更多相关《NO12刘家豪1143111006.docx(10页珍藏版)》请在冰豆网上搜索。
NO12刘家豪1143111006
四川大学计算机学院、软件学院
实验报告
学号:
__1143111006_姓名:
_刘家豪_专业:
_软件工程_班级:
_5班_第3周
课程名称
信息安全产品开发实践
实验课时
3
实验项目
原始套接字编程
实验时间
2013.11.29
实验目的
Ø了解原始套接字原理
Ø学会简单的原始套接字编程
Ø完成一个TCPsyn洪泛攻击程序
实验环境
Windows7×64&VMWare9.0&EHEL6.0×64
实验内容(算法、程序、步骤和方法)
Ø实验题目
利用原始套接字实现一个TCPSYSflooding程序:
要求:
1.客户端不断向攻击端发送SYN连接请求;
2.客户端在发送数据时,通过随机地址的方式隐藏自己的IP地址;
检验:
在shell下通过“netstat-tn”检查syn_recv连接数检验自己的程序是否成功
Ø程序实现思路:
利用原始套接字不停的发送TCP数据包,每次发送的数据包源IP地址被伪装为任意一个随机IP,端口号不变,且设置TCP的SYN标志位为1就可以了。
Ø注意的地方:
程序难度上来说没啥,就有几个小点注意下就可以了:
创建TCP原始套接字:
sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
每次发送前调用random()函数伪装自己IP,且从新计算检验和;
计算检验和之前记得将TCPsyn标志位设置为1(ack位保持0不变,千万没事别随意改其他标志位,比如说将ack位置1就达不到效果了)。
还有检验和已经给出了示例程序就没得说了,TCP和IP头部结构体信息可直接查看头文件源码,原始套接字使用也很简单,要注意的就这些了。
Ø程序源码模块分析:
检验和模块:
检验和模块也是很简单的奇偶校验。
主函数模块:
主函数模块就不直接贴源码了,先给给伪代码的实现吧:
Intmain()
{
定义相关变量;
创建原始套接字:
if((sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0)
{
perror("Failtosocket");
exit(EXIT_FAILURE);
}
解析命令参数,初始化目标地址与端口号以及源端口号;
定义数据包:
//Datagramtorepresentthepacket
chardatagram[4096];
//IPheader
structiphdr*iph=(structiphdr*)datagram;
//TCPheader
structtcphdr*tcph=(structtcphdr*)(datagram+sizeof(structip));
然后进入循环发送数据包:
While(true)
{
设置随机源地址;
初始化数据包:
TCP与IP头->伪装发送IP、更改syn标志位;
再发送数据包就ok了。
}
源码:
。
。
一开始定义变量:
其中还有全局变量
(用来统计一共发送了多少个TCP数据包)
。
。
然后创建原始套接字并初始化:
。
。
接着解析命令行参数(目标地址与端口号,源端口号)
。
。
接着
这个是用来捕获SININT信号的(可以由Crtl+C引起),一旦程序终止,它会跳到statistice函数里去
那么再看看statistice函数吧:
现在知道之前创建的全局变量nsend的作用吧:
用来统计发送的数据包数量,在程序终止时会打印出来。
。
。
接下来进入循环发送数据包模块了:
初始化数据包:
初始化ip头:
初始化tcp头:
然后告诉内核我的数据包已经包括头部了:
利用自定义的一个结构体来计算检验和:
那么再看下自定义的那个结构体pseudo_header吧,它的作用就是用来计算检验和,只不过这样来方便一些所以才定义了这个结构体:
最后一步了:
发送数据包
然后给while循环做个结尾吧(不是重点)
每发送一次,nsend自加一次用来计数
Ø到此为止程序全部解析完成了,接下来看下结果吧。
先编译:
其中s.c程序是用来开启8900端口服务的。
开启8900端口服务:
打开攻击程序:
Netstat命令查看网络连接:
其中该命令执行后终端一直再刷新,当我的攻击程序停止后刷新停止:
刚刚那段时间一共发送了7061586个tcp数据包。
Ø结论:
程序达到了预期目的。
数据记录
和计算
详见实验内容部分
结论
(结果)
详见实验内容部分
小结
这次试验首先让我了解了除了流套接字和数据报套接字之外还有这么一个很好玩的(其实感觉它也很强大)原始套接字。
再简单了解了原始套接字的原理以及工作流程后,不用它来做点什么也可惜了,刚好这个TCPsyn扫描来试下原始套接字,程序实现起来很简单,难度不是很大,但是要完成这个实验还需要了解很多东西,要看很多头文件,了解各种结构体的内容以及需要更改哪些内容,还有就是在细节上吧。
(还有,这次试验让我看到了原来一年前学的计算机网络部分(TCP/IP)已经忘了很多了,果然只有在学习中进步)。
下次在练练这原始套接字玩玩吧,这次只是一个了解,还不错,很好玩。
一句话,继续学习。
指导老师评议
成绩评定:
指导教师签名:
实验报告说明
专业实验中心
实验名称要用最简练的语言反映实验的内容。
如验证某程序、定律、算法,可写成“验证×××”;分析×××。
实验目的目的要明确,要抓住重点,可以从理论和实践两个方面考虑。
在理论上,验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。
一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。
实验环境实验用的软硬件环境(配置)。
实验内容(算法、程序、步骤和方法)这是实验报告极其重要的内容。
这部分要写明依据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤。
还应该画出流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。
数据记录和计算指从实验中测出的数据以及计算结果。
结论(结果)即根据实验过程中所见到的现象和测得的数据,作出结论。
小结 对本次实验的体会、思考和建议。
备注或说明可写上实验成功或失败的原因,实验后的心得体会、建议等。
注意:
∙实验报告将记入实验成绩;
∙每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NO12 刘家豪 1143111006