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