文章作者:Netxfly[E.S.T论坛贵宾]
复制内容到剪贴板
代码:
/*
Name: NetxPort
Copyright: Netxfly
Author: Netxfly
Date: 12-10-04
Description: A simple Port scanner
*/
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
void usage(char *); //帮助函数
void scan(char *); //常用端口扫描
void scan1(char *,char *, char *); //自定义端口扫描
//////////////////////////////////////////////////////////////////
//主函数
//////////////////////////////////////////////////////////////////
int main(int argc,char *argv[])
{
if(argc==2)
{
scan(argv[1]); //常用端口扫描
}
else if(argc==4)
{
scan1(argv[1],argv[2],argv[3]); //自定义端口扫描
}
else
{
usage(argv[0]);
}
}
/////////////////////////////////////////////////////////////////////////
//帮助函数 void usage(char *help)
/////////////////////////////////////////////////////////////////////////
void usage(char *help)
{
printf("====================================================================\n");
printf("NetxPort Version 1.0 by Netxfly 12-10-2004 \n");
printf("Welcome to visit [url]http://netxfly.126.com[/url]\n");
printf("Usage:\n");
printf("%s <target>\t\t\t\t常用端口扫描\n",help);
printf("%s <target> <port1> <port2>\t\t自定义端口扫描\n",help);
printf("%s <target1> <target2>\t\t\t多主机常用端口扫描\n",help);
printf("%s <target1> <target2> <port1> <port2>\t多主机自定义端口扫描\n",help);
printf("====================================================================\n");
return ;
}
////////////////////////////////////////////////////////////////////////////
//常用端口扫描 void scan(char *target)
////////////////////////////////////////////////////////////////////////////
void scan(char *target)
{
WSADATA wsadata;
SOCKET netxfly;
int i;
struct sockaddr_in server;
int ports[12] = {21,23,25,53,80,110,135,139,445,1433,3306,3389};
if(WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
{
printf("Startup Winsock Failed...\n");
exit(-1);
}
for(i=0;i<12;i++)
{
if((netxfly = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
{
printf("Create Socket Err...\r\n");
exit(-1);
}
server.sin_family=AF_INET;
server.sin_addr.s_addr=inet_addr(target);
server.sin_port = htons(ports[i]);
if(connect(netxfly,(struct sockaddr*)&server,sizeof(server)) != SOCKET_ERROR)
{
printf("port %d is open at Host:%s\r\n",ports[i],target);
closesocket(netxfly);
}
else
{
closesocket(netxfly);
}
}
WSACleanup();
}
////////////////////////////////////////////////////////////////////////////
//自定义端口扫描 void scan1(char *target,char *start, char *end)
////////////////////////////////////////////////////////////////////////////
void scan1(char *target,char *start, char *end)
{
WSADATA wsadata;
SOCKET netxfly;
int i;
int port1;
int port2;
struct sockaddr_in server;
if(WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
{
printf("Startup Winsock Failed...\n");
exit(-1);
}
port1=atoi(start);
port2=atoi(end);
for(i=port1;i<=port2;i++)
{
if((netxfly = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
{
printf("Create Socket Err...\r\n");
exit(-1);
}
server.sin_family=AF_INET;
server.sin_addr.s_addr=inet_addr(target);
server.sin_port = htons(i);
if(connect(netxfly,(struct sockaddr*)&server,sizeof(server)) != SOCKET_ERROR)
{
printf("port %d is open at Host:%s\r\n",i,target);
closesocket(netxfly);
}
else
{
closesocket(netxfly);
}
}
WSACleanup();
}