Linux多线程端口扫描

Linux多线程端口扫描

ID:44172198

大小:454.00 KB

页数:10页

时间:2019-10-19

Linux多线程端口扫描_第1页
Linux多线程端口扫描_第2页
Linux多线程端口扫描_第3页
Linux多线程端口扫描_第4页
Linux多线程端口扫描_第5页
资源描述:

《Linux多线程端口扫描》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、四川大学计算机学院、软件学院实验报告学号:__1143111006_姓名:_刘家豪_专业:_软件工程_班级:_5班_第8周课程名称信息安全产品开发实践实验课时3实验项目并发服务器II——多线程实验时间2013.10.2515:00--2013.10.2516:00实验目的Ø修改远程控制程序服务器程序,将其从循环模式或多进程模式修改为多线程模式Ø实现一个多线程端口扫描程序:要求:1.能同时扫描5个IP地址;2.针对每个iP地址,开设100个线程对其进行扫描;3.如果端口打开,使用函数getservbyport获取其服务名,在屏幕上打印:IPportservername,如果是未

2、知服务,则屏幕显示:ipportunkonown实验环境 Windows764-bitVMware9.0RedHatEnterpriseLinux6.0实验内容(算法、程序、步骤和方法)第一个实验:修改远程控制程序服务器程序,将其从循环模式或多进程模式修改为多线程模式。这个实现起来比较简单,就是在上次TCPC/S架构通讯的基础上稍加修改就可以了,上次的tcp通讯程序了,在server端,每当有客户端发起连接后都由服务器直接在一个while循环里与其建立服务,现在,我们改为:每当有客户端发起连接时,就创建一个线程来为其服务:这里使用的是分离线程,因为这里也不可能用到pthrea

3、d_join函数来等待子线程,所以,子线程是自己释放空间的。第二个实验:多线程端口扫描。我这里就把程序结构和我的思路联合起来讲吧:为了方便调试,我自己定义了一个错误信息输出函数,内容如下:_LINE_是C程序自定义的一个宏,_FILE_也是,作用分别是发生错误的代码行数和文件。(很好用的)然后定义一个结构体来存放要扫描的主机信息:因为我们要同时扫描5个主机,所以待会可能就是直接声明一个Port数组了。既然要实现端口扫描,那么,我也可以将任务分解下,可以分解为扫描一个固定主机的一个范围的端口,在此分解下,又可以分为扫描一个固定主机的固定端口,当然,实际上我也是这么做的。那么首先

4、看下怎么实现扫描一个固定主机的一个端口:原理很简单,就是直接对该主机的某一端口号发起TCP连接,看返回值就行了。代码上也有注释,我就不细说了。那么再过来就是实现扫描某一主机的一个范围的端口了:这个就先讲下原理吧:也很简单,就是用一个循环来给一个sockaddr_in的结构体的端口号依次赋不同的值,然后再执行扫描该主机该端口号就行了,而这个上面已经实现了。下面是扫描一个主机的一个范围的端口号,原理上面已经解释了,而且下面代码里也有部分注释,所以这个函数应该很清晰了:接下来就直接看主函数了:主函数的开始部分没啥说的了,声明相关变量下面要用,因为我的这个程序是可以实现多主机多端口扫

5、描的,所以在执行程序时要输入相关变量:比如说要扫描哪些主机,要扫描的端口号的范围,以及想要并发多少线程扫描,这些信息都是通过输入来确定的,主函数的开始部分代码为:当然,输入参数不正确会有提示信息的。下一步也很清楚了,既然输入了参数,肯定是要解析这些参数并初始化相关变量吧:要解析的参数也不用说了吧,就IP地址,端口号和并发的线程数。上面代码中最后一行语句是为线程分配地址空间。接下来就是主要部分了,实现并发扫描:代码中第一行输出语句是提示信息,后面则是通过两个循环来实现多主机一个范围端口的扫描,这里用的是联合线程,我们通过pthread_join函数来实现等待子线程结束,但最后要

6、记得释放线程空间,否则造成内存泄露就不好了。总而言之,就是这样实现了。下面就是编译运行了。首先是第一个实验:编译运行文件如下(POSIX线程库不是Linux的默认库,所以编译时要加上-lpthread)从程序运行结果来看,完成了预期功能。第二个实验编译与运行结果:当然,输入时可以输入多个IP地址(限制5个),我这里演示只输入了两个。从程序运行结果来看,达到了预期目标。数据记录和计算无结论(结果)见实验内容部分小结怎么说呢,这次试验加深了对多线程的理解,第一个实验并不难,也就注意两点就行了:第一就是注意释放空间或使用分离线程,第二是注意使用线程,因为有可能结果是两个客户端的通信

7、会出问题。反正加很小一段代码就可以实现。第二个实验稍加难一点,因为在使用多线程的基础上,还要考虑并发扫描多主机多端口以及对线程空间的释放。也许这个实验里除了多线程,本身Linux编程也占一部分吧。但这只能说让我加深了对Linux编程的理解吧。端口扫描,上次实现过两次,这次又用多线程实现了还不是很有趣么。指导老师评议 成绩评定:指导教师签名:实验报告说明专业实验中心实验名称要用最简练的语言反映实验的内容。如验证某程序、定律、算法,可写成“验证×××”;分析×××。实验目的目的要明确,要抓住重点,可以从理论

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

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

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