Chinaunix首页 | 论坛 | 博客
  • 博客访问: 324399
  • 博文数量: 106
  • 博客积分: 3081
  • 博客等级: 中校
  • 技术积分: 1090
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-15 14:07
文章分类

全部博文(106)

文章存档

2009年(1)

2007年(34)

2006年(71)

我的朋友

分类: C/C++

2006-03-21 09:47:45

/*****************************************/
/* W.X.Y.2001-3 编译成功                 */
/* 运行于SCO UNIX 系统                   */
/*****************************************/
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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{
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*/
阅读(879) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~