|
![]() | 作者: abc0101 [abc0101]
![]() |
登录 |
下面是一个端口扫描器的源程序,一个典型的TCP connect()扫描,但小弟我还是有些地方看不动,希望老大解释一下!!! #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <errno.h> #include <netdb.h> #include <signal.h> int main(int argc, char **argv) { int probeport = 0; struct hostent *host; int err, i, net; struct sockaddr_in sa; startport=1; endport=20000; if(argc==3) { startport=endport=atoi(argv[2]); } if (argc==4) { startport=atoi(argv[2]); endport=atoi(argv[3]); } for (i=startport;i<endport+1;i++) { starncpy((char *&sa)," ",sizeof sa); sa.sin_family=AF_INET; if (isdigit(*argv[1])) sa.sin_addr.s_addr=inet_addr(argv[1]); else if ((host=gethostbyname(argv[1]))!=0) strncpy((char *)&sa.sin_addr, (char *)host->h_addr,sizeof sa.sin_addr); else { /*pherror(argv[1]);*/ printf("Error\n"); exit(2); } sa.sin_port=host(i); net=socket(AF_INET,SOCK_STREAM,0); if (net<0) { perror("\n socket"); exit(2); } err=connect(net,(struct sockaddr *) &sa,sizeof sa ); if (err<0) { printf("%s%-5d%s\r",argv[1],I,strerror(errno)); printf("\r"); fflush(stdout); if (argc==3) printf("%s%-5d refused.\n",argv[1],i); } else { printf("%s%-5d accepted.\n",argv[1],i); if (shutdown(net ,2) { perror("\n shutdown"); exit(2); } } close(net); } printf("\r"); fflush(stdout); return(0); } |
地主 发表时间: 05/14 16:57 |
![]() | 回复: wolf520 [wolf520] ![]() |
登录 |
还想请哪位大侠告诉我们菜鸟这样的程序在windows环境如何编译???? 不胜感激!! |
B1层 发表时间: 05/14 21:49 |
![]() | 回复: dormouse [dormouse] ![]() |
登录 |
要有tc的编译器啊。 |
B2层 发表时间: 05/14 21:53 |
![]() | 回复: 286 [unique] ![]() |
登录 |
#include <winsock2.h> #pragma comment(lib,"ws2_32") int main(int argc, char **argv) { int probeport = 0; struct hostent *host; int err, i, net; struct sockaddr_in sa; startport=1; endport=20000; if(argc==3) { startport=endport=atoi(argv[2]); } if (argc==4) { startport=atoi(argv[2]); endport=atoi(argv[3]); } for (i=startport;i<endport+1;i++) { starncpy((char *&sa)," ",sizeof sa); sa.sin_family=AF_INET; if (isdigit(*argv[1])) sa.sin_addr.s_addr=inet_addr(argv[1]); else if ((host=gethostbyname(argv[1]))!=0) strncpy((char *)&sa.sin_addr, (char *)host->h_addr,sizeof sa.sin_addr); else { /*pherror(argv[1]);*/ printf("Error\n"); exit(2); } sa.sin_port=host(i); net=socket(AF_INET,SOCK_STREAM,0); if (net<0) { printf("\n socket"); exit(2); } err=connect(net,(struct sockaddr *) &sa,sizeof sa ); if (err<0) { printf("%s%-5d%s\r",argv[1],I,strerror(errno)); printf("\r"); fflush(stdout); if (argc==3) printf("%s%-5d refused.\n",argv[1],i); } else { printf("%s%-5d accepted.\n",argv[1],i); if (shutdown(net ,2) { perror("\n shutdown"); exit(2); } } close(net); } printf("\r"); fflush(stdout); return(0); } 我没看完,只是随便改了一下,如果再有错误,你看着办,不要再问。 建议你下一个Windows版的。 |
B3层 发表时间: 05/15 09:07 |
![]() | 回复: abc0101 [abc0101] ![]() |
登录 |
非常感谢各位老大的支持 ,谢谢了,!!!!! |
B4层 发表时间: 05/15 11:57 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号