LinuxÒÁµéÔ°ÂÛ̳'s Archiver

lost33 ·¢±íÓÚ 2004-1-2 15:23

¶Ë¿ÚɨÃèµÄÔ´Â룬ºÍ´ó¼Ò¹²Ïí¡£ :w

Æäʵ¶¼ÊǺܼòµ¥µÄ¶«Î÷£¬Ö»ÊÇÒ»¸öÊÇwindowsϵģ¬Ò»¸ölinuxÏµģ¬´ó¼Ò¿ÉÒÔ¿´¿´Çø±ð¡£

µÚÒ»¶ÎÊÇlinuxÏµģ¬´«ËµÊÇÔÚslackwareϱàÒë³É¹¦µÄ£¬µ«ÊǾÝÎÒʵ¼ù£¬ÔÚlinux9.0Ï¡£¡£¡£¡£Ò²~~¿ÉÒÔ~~!!!
µÚ¶þ¶ÎÊÇwindowsϵģ¬Ö»É¨Ãè139Ŷ~~



COMPILE: gcc -Wall ports.c -o ports

RUN IT:
1) Usage: 'ports 10.0.0.200 - -'        : will scan the remote-host from 1->1024 port
2) Usage: 'ports 10.0.0.200 20 30'        : will scan the rempte-host from 20->30 port

DESCRIPTION: Handy TCP Portscanner.-

MADE ON: SlackWare.-
/* ΪʲôÕâÀï²»ÄÜÓÃ#include <stdio.h>?? Ö»ÄÜÓÃ" ? ·ñÔò¾ÍÏÔʾ²»³ö£¿*/


#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "errno.h"
#include "unistd.h"
#include "arpa/inet.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "netinet/tcp.h"
#include "netinet/ip.h"
#include "netinet/in.h"
#include "netdb.h"
#include "unistd.h"


#define DEF_STR_PORT 1
#define DEF_STP_PORT 1024
#define OXO 1

struct sockaddr_in addr;
struct hostent *rh;
struct servent *rp;

int sock,i;
int str_ptr, stp_ptr;
int Usage(char *ARG);
int CONNECTION(int port);
                        
int main(int argc, char *argv[])
{

        if (argc != 4)
                Usage(argv[0]);
       
                str_ptr = atoi(argv[2]);
                stp_ptr = atoi(argv[3]);
        if (strcmp(argv[2],"-")==0 && strcmp(argv[3],"-")==0){
                str_ptr = DEF_STR_PORT;
                stp_ptr = DEF_STP_PORT;
        }

        if ( str_ptr > stp_ptr){
                fprintf(stderr,"DetecT ErroR !!! On PortS, <Star-Port> Can't Be Greater Than <Stop-Port>.-\n");
                Usage(argv[0]);
                exit(OXO);
        }

        if ((rh=gethostbyname(argv[1])) == NULL){               
                fprintf(stderr,"Can't Resolve Host %s .-\n",argv[1]);
                Usage(argv[0]);
                exit(OXO);
        }

        printf("ScanninG Host %s From %d TcP Port To %d .-\n",argv[1],str_ptr,stp_ptr);
        for (i=str_ptr; i <= stp_ptr; i++)
        {
                if (CONNECTION(i)==0)
                {
                        rp=getservbyport(htons(i),"tcp");
                        printf("Port %d Is Open !!! <%s> ServicE.-\n",i,(rp == NULL)?"UknowN":rp->s_name);
                }
        close(sock);
        }

return 0;
}

int CONNECTION(int port)
{

        if ((sock=socket(AF_INET,SOCK_STREAM,0)) == -1){
                perror("SockeT");
                exit(OXO);
        }
                
        addr.sin_family = AF_INET;
        addr.sin_port = htons(port);
        addr.sin_addr = *((struct in_addr *)rh->h_addr);

        if ((connect(sock,(struct sockaddr *) &addr, sizeof(addr))) == 0)
                return 0;
        else
                return 1;
}

int Usage(char *ARG)
{
        fprintf(stderr,"TCPPortS.c By ZinC_Sh(C).-\n");
        fprintf(stderr,"Usage: %s <Remote-Host> <Start-Port> <Stop-Port>.-\n",ARG);
        exit(OXO);
}

lost33 ·¢±íÓÚ 2004-1-2 15:35

ÕâÊÇwindowsϵÄ(¸ù¾ÝÉÏÃæÄǸö¸ÄµÄ£¬ºÇºÇ£©:

// linux.cpp : Defines the entry point for the console application.
//ÒòΪÊǸù¾ÝÉÏÃæµÄ¸ÄµÄ£¬ËùÒÔÓ÷¨Ò²¾Í¡£¡£¡£Ò»ÑùÁË£¬

#include "stdafx.h"

#include <string.h>
#include "winsock2.h"
#include "stdio.h"
#include "stdlib.h"
#include "shlwapi.h"
#include "windows.h"
#pragma comment (lib,"Ws2_32.lib")
/*ÕâÒ»ÐÐÊÇ´ò¿ªWs2_32.libµÄ£¬Ò»¶¨Òª¼Ó£¬·ñÔò WSAStartup Óò»ÁË*/
/* windows ºÍlinux µÄÇø±ðÆäʵ¾ÍÊÇÕâ¸ö£¬windowsÐèÒª´ò¿ªWSAStartup¡£*/


#define DEF_STR_PORT 1
#define DEF_STP_PORT 1024
#define OXO 1

struct sockaddr_in addr;
struct hostent *rh;
struct servent *rp;

int sock,i;
int str_ptr, stp_ptr;
int Usage(char *ARG);
int CONNECTION(int port);

int main(int argc, char* argv[])
{
        WSADATA        wsd;
        WSAStartup(MAKEWORD(2,2),&wsd); /*ÕâÁ½ÐÐÊÇмӵÄ*/

        if (argc != 4)
                Usage(argv[0]);
       
                str_ptr = atoi(argv[2]);
                stp_ptr = atoi(argv[3]);
        if (strcmp(argv[2],"-")==0 && strcmp(argv[3],"-")==0){
                str_ptr = DEF_STR_PORT;
                stp_ptr = DEF_STP_PORT;
        }

        if ( str_ptr > stp_ptr){
                fprintf(stderr,"DetecT ErroR !!! On PortS, <Star-Port> Can't Be Greater Than <Stop-Port>.-\n");
                Usage(argv[0]);
                exit(OXO);
        }

        if ((rh=gethostbyname(argv[1])) == NULL){               
                fprintf(stderr,"Can't Resolve Host %s .-\n",argv[1]);
                Usage(argv[0]);
                exit(OXO);
        }

        printf("ScanninG Host %s From %d TcP Port To %d .-\n",argv[1],str_ptr,stp_ptr);
        for (i=str_ptr; i <= stp_ptr; i++)
        {
                if (CONNECTION(i)==0)
                {
                        rp=getservbyport(htons(i),"tcp");
                        printf("Port %d Is Open !!! <%s> ServicE.-\n",i,(rp == NULL)?"UknowN":rp->s_name);
                }
        closesocket(sock);
        }
        WSACleanup();/*ÕâÐÐÊÇмӵÄ,´ò¿ªÁË£¬×ÔȻҪ¹ØÉϰ¡*/
        return 0;
}


int CONNECTION(int port)
{

        if ((sock=socket(AF_INET,SOCK_STREAM,0)) == -1){
                perror("SockeT");
                exit(OXO);
        }
                
        addr.sin_family = AF_INET;
        addr.sin_port = htons(port);
        addr.sin_addr = *((struct in_addr *)rh->h_addr);

        if ((connect(sock,(struct sockaddr *) &addr, sizeof(addr))) == 0)
                return 0;
        else
                return 1;
}

int Usage(char *ARG)
{
        fprintf(stderr,"TCPPortS.c By ZinC_Sh(C).-\n");
        fprintf(stderr,"Usage: %s <Remote-Host> <Start-Port> <Stop-Port>.-\n",ARG);
        exit(OXO);
}

hongs ·¢±íÓÚ 2004-1-9 03:32

ºÃ¶«Î÷£¬ÎÒ¶¥Ò»¸ö

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.