MacOSX下简单tcp全连接扫描

原理很简单,刚答辩时也说是根据connect()函数返回值。。然后老师说,这是全连接,不能扫描udp端口吧。。嗯,后来说什么忘了。。就这样,答辩一会就问完了。。其实没问什么,,嘿嘿。。好轻松。。然后粘下我的代码,其实也是根据网上资料修改的,版权不要找我。。函数是大家的:DD,粘代码ing..

 1 #include <sys/types.h>
 2 #include <sys/socket.h>
 3 #include <netinet/in.h>
 4 #include <time.h>
 5 #include <stdio.h>
 6 
 7 #define  SP 1
 8 #define  EP 1000
 9 
10 void msg()
11 {
12     printf("Usage: Scanner [IP ADDRESS]\n");
13 }
14 
15 int main(int argc,char *argv[])
16 {  
17    float  costtime;
18    clock_t start, end;
19    
20    int p;
21    int sockfd; //返回套接字的文件描述符
22    struct sockaddr_in my_addr;
23    int renum; //定义connect()函数的返回值
24    if(2 != argc){
25        msg();
26        return 0;
27    }
28 
29     //扫描地址初始化
30     my_addr.sin_family = AF_INET;
31     my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
32     inet_pton(AF_INET, argv[1], &my_addr.sin_addr);
33     start = clock();
34     
35     for(p = SP; p < EP; p++)
36     {
37         my_addr.sin_port = htons(p);
38         sockfd = socket(AF_INET,SOCK_STREAM,0);
39         renum = connect(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));
40         if(renum == 0)
41             printf("%d 端口开放!\n", p);
42         close(sockfd);
43     }
44 
45    end = clock();
46    costtime = (float)(end - start)/10000;
47    printf("扫描时间:%f 秒\n",costtime);
48    
49    return(0);
50 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。