NO12刘家豪1143111006Word文档格式.docx

上传人:b****1 文档编号:5804741 上传时间:2023-05-05 格式:DOCX 页数:10 大小:349.72KB
下载 相关 举报
NO12刘家豪1143111006Word文档格式.docx_第1页
第1页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第2页
第2页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第3页
第3页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第4页
第4页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第5页
第5页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第6页
第6页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第7页
第7页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第8页
第8页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第9页
第9页 / 共10页
NO12刘家豪1143111006Word文档格式.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

NO12刘家豪1143111006Word文档格式.docx

《NO12刘家豪1143111006Word文档格式.docx》由会员分享,可在线阅读,更多相关《NO12刘家豪1143111006Word文档格式.docx(10页珍藏版)》请在冰点文库上搜索。

NO12刘家豪1143111006Word文档格式.docx

实验时间

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)已经忘了很多了,果然只有在学习中进步)。

下次在练练这原始套接字玩玩吧,这次只是一个了解,还不错,很好玩。

一句话,继续学习。

指导老师评议

成绩评定:

指导教师签名:

实验报告说明

专业实验中心

实验名称要用最简练的语言反映实验的内容。

如验证某程序、定律、算法,可写成“验证×

×

”;

分析×

实验目的目的要明确,要抓住重点,可以从理论和实践两个方面考虑。

在理论上,验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。

一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。

实验环境实验用的软硬件环境(配置)。

实验内容(算法、程序、步骤和方法)这是实验报告极其重要的内容。

这部分要写明依据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤。

还应该画出流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。

数据记录和计算指从实验中测出的数据以及计算结果。

结论(结果)即根据实验过程中所见到的现象和测得的数据,作出结论。

小结 

对本次实验的体会、思考和建议。

备注或说明可写上实验成功或失败的原因,实验后的心得体会、建议等。

注意:

∙实验报告将记入实验成绩;

∙每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2