论坛: 编程破解 标题: 谁帮我注释一下啊!!!端口扫描程序!!! 复制本贴地址    
作者: 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号