/*****************************************/
/* W.X.Y.2001-3 编译成功 */
/* 运行于SCO UNIX 系统 */
/*****************************************/
#include <stdio.h>
#include <sys/types.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;
int startport,endport;
struct sockaddr_in sa;
startport=1;
endport=700;
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++)
{
strncpy((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("Usage: portscan address|hostname [start_port end_port]\n");
printf(" default port number from %d to %d\n",startport,endport);
exit (2);
}
sa.sin_port = htons(i);
net = socket(AF_INET,SOCK_STREAM,0);
if(net<0)
{
perror("\nsocket");
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)<0)
{
perror("\nshutdown");
exit(2);
}
}
close(net);
}
printf("\r");
fflush(stdout);
return(0);
}
/*程序结束*/
/*编译方法:*/
/* $cc -o portscan portscan.c -lnsl -lsocket*/
jysww 回复于:2003-02-19 22:43:15 |
up! |
yujf 回复于:2003-08-29 10:58:19 |
怎么没有注释呀?可以提供点吗? |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/