α׷

 3206, 10/161 ȸ  α  
   jhsama
   ȳϼ Winsock մϴ.

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=1249 []


̰ ִ ڽ Ʈ ϴ 쿡 ѹ

ϰ; ߽ϴ. ƹ͵ ȶ߱淹

ethereal Ŷ ĸغ ° , ׷ ޼ ȮϿ ϱ

10049 ϴ(Ʒ ּҸ ҴҼ ..̶..)

http://www.smon.co.kr/solomon_webhelp/LibraryNmicmp/Reference/WinsockErrMsg.htm

 ذҼ ̷ øϴ.

Ʒ ҽ ִ Ž ˿ Դϴ.










// ʿ

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <windows.h>
#include <WS2TCPIP.H>


//#include <unistd.h>
#include <string.h>
//#include <sys/socket.h>
//#include <sys/types.h>
//#include <arpa/inet.h>
//#include <netinet/in.h>
//#include <linux/ip.h>
//#include <linux/tcp.h>
//#include <netdb.h>

// ߽ IP ּ, ϼ.

#define LOCAL_IP "127.0.0.1"

struct iphdr{
        unsigned int ihl;
        unsigned int version:4;
        unsigned char tos;
        unsigned short tot_len;
        unsigned short id;
        unsigned short frag_and_flag;
        unsigned char ttl;
        unsigned char protocol;
        unsigned short check;
        unsigned int saddr;
        unsigned int daddr;
};

struct tcphdr {
         unsigned short   source;
         unsigned short   dest;
         unsigned int   seq;
         unsigned  ack_seq;
//  #if defined(__LITTLE_ENDIAN_BITFIELD)
         unsigned short   res1:4,
                 doff:4,
                 fin:1,
                 syn:1,
                 rst:1,
                 psh:1,
                 ack:1,
                 urg:1,
                ece:1,
                 cwr:1;
//  #elif defined(__BIG_ENDIAN_BITFIELD)
//           unsigned short   doff:4,
//                   res1:4,
//                  cwr:1,
//                  ece:1,
//                  urg:1,
//                  ack:1,
//                  psh:1,
//                  rst:1,
//                  syn:1,
//                  fin:1;
// #endif  
         unsigned short   window;
         unsigned short   check;
         unsigned short   urg_ptr;
};





// üũ ϴ Լ /.

unsigned short in_cksum(u_short *addr, int len)

{

        int         sum=0;
        int         nleft=len;
        u_short     *w=addr;  
        u_short     answer=0;  

        while (nleft > 1){          
        sum += *w++;                  
        nleft -= 2;                          
        }                                          

        if (nleft == 1){

        *(u_char *)(&answer) = *(u_char *)w ;
        sum += answer;

        }

        sum = (sum >> 16) + (sum & 0xffff);
        sum += (sum >> 16);

        answer = ~sum;
        return(answer);
}



// ü

struct pseudohdr {          

        int   saddr;

        int   daddr;

        char    useless;

        char    protocol;

        short int   tcplength;

};



int main( int argc, char **argv )

{

        char packet[40];

        int raw_socket, recv_socket;

        int on=1, len ;

        char recv_packet[100], compare[100];

        struct iphdr *iphdr;

        struct tcphdr *tcphdr;

        struct in_addr source_address, dest_address;

        struct sockaddr_in address, target_addr;

        struct pseudohdr *pseudo_header;

        struct in_addr ip;

        struct hostent *target;

        int port;

                WORD wver;

                WSADATA wsadata;

                wver=MAKEWORD(2,2);
                WSAStartup(wver,&wsadata);
                
        

                



//         if( argc < 2 ){
//
//                 fprintf( stderr, "Usage : %s Target\n", argv[0] );
//                 exit(1);                                                                                  
//         }

                

                
                strcpy( compare, "127.0.0.1" );

        source_address.s_addr = inet_addr( LOCAL_IP );                                          
        dest_address.s_addr = inet_addr( compare );                                  
                
                
                

//      strcpy( compare, argv[1] );




        // ڷ ־ IP ȯ.

        if( dest_address.s_addr == -1 ){                
                if( (target = gethostbyname( compare )) == NULL ){
                        fprintf( stderr, " ּҰ ùٸ ʽϴ.\n" );
                        exit( 1 );                                                                                                                                                                
                }
                //bcopy( target->h_addr, (char *)&ip.s_addr, target->h_length );
                                memcpy( target->h_addr, (char *)&ip.s_addr, target->h_length );

                dest_address.s_addr = ip.s_addr;
                strcpy( compare, inet_ntoa( dest_address ) );
        }

                                                                                                                        
        printf( "\n[Wise Scanner Started.]\n\n" );                          

        // 1 500 ĵ

        for( port=1; port<500; port++ ){

                // raw socket

                                raw_socket = socket( AF_INET, SOCK_RAW, IPPROTO_RAW );

                                setsockopt( raw_socket, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on));


                // TCP, IP ʱȭ

                iphdr = (struct iphdr *)packet;
                
                                memset( (char *)iphdr, 0, 20 );

                tcphdr = (struct tcphdr *)(packet + 20 );

                memset( (char *)tcphdr, 0, 20 );



                // TCP

                tcphdr->source = htons( 777 );

                tcphdr->dest = htons( port );

                tcphdr->seq = htonl( 92929292 );

                tcphdr->ack_seq = htonl( 12121212 );

                tcphdr->doff = 5;

                tcphdr->syn = 1;

                tcphdr->window = htons( 512 );


                // .

                pseudo_header =  (struct pseudohdr *)((char*)tcphdr-sizeof(struct pseudohdr));

                pseudo_header->saddr = source_address.s_addr;

                pseudo_header->daddr = dest_address.s_addr;

                pseudo_header->protocol = IPPROTO_TCP;

                pseudo_header->tcplength = htons( sizeof(struct tcphdr) );



                // TCP üũ .

                tcphdr->check = in_cksum( (u_short *)pseudo_header,

                                sizeof(struct pseudohdr) + sizeof(struct tcphdr) );



                // IP

                iphdr->version = 4;

                iphdr->ihl = 5;

                iphdr->protocol = IPPROTO_TCP;

                iphdr->tot_len = 40;

                iphdr->id = htons( 12345 );

                iphdr->ttl = 60;

                iphdr->saddr = source_address.s_addr;

                iphdr->daddr = dest_address.s_addr;

                // IP üũ .

                iphdr->check = in_cksum( (u_short *)iphdr, sizeof(struct iphdr));

                address.sin_family = AF_INET;

                address.sin_port = htons( port );

                address.sin_addr.s_addr = dest_address.s_addr;



                // Ŷ
                if(sendto( raw_socket, &(packet[0]), sizeof(packet), 0x0,(struct sockaddr *)&address, sizeof(address)) == SOCKET_ERROR) {

                                        printf("%d",WSAGetLastError());
                                        
                                        printf("۽\n");
                                        switch(WSAGetLastError()){
                                        case  WSANOTINITIALISED :
                                                           printf("1");
                                        case  WSAENETDOWN           :
                                                           printf("2");
                                        case  WSAEACCES :
                                                           printf("3");
                                        case  WSAEINVAL                 :
                                                           printf("4");
                                        case  WSAEINTR :
                                                           printf("5");
                                        case  WSAEINPROGRESS :
                                                           printf("6");
                                        case  WSAEFAULT :
                                                           printf("7");
                                        case  WSAENETRESET :
                                                           printf("8");
                                        case  WSAENOBUFS :
                                                           printf("9");
                                        case  WSAENOTCONN :
                                                           printf("10");
                                        case  WSAENOTSOCK :
                                                           printf("11");
                                        case  WSAEOPNOTSUPP :
                                                           printf("12");
                                        case  WSAESHUTDOWN :
                                                           printf("13");
                                        case  WSAEWOULDBLOCK :
                                                           printf("14");
                                        case  WSAEMSGSIZE :
                                                           printf("15");
                                        case  WSAEHOSTUNREACH :
                                                           printf("16");
                                        case  WSAECONNABORTED :
                                                           printf("17");
                                        case  WSAECONNRESET :
                                                           printf("18");
                                        case  WSAEADDRNOTAVAIL :
                                                           printf("19");                                        
                                        case  WSAEAFNOSUPPORT :
                                                           printf("20");                                        
                                        case  WSAEDESTADDRREQ :
                                                           printf("21");
                                        case  WSAENETUNREACH :
                                                           printf("22");
                                        case  WSAETIMEDOUT :
                                                           printf("23");
                                        }                                                                                        

                                        exit(0);
                                }
                                


                // Ŷ ʱȭ.

                iphdr = (struct iphdr *)recv_packet;

                tcphdr = (struct tcphdr *)(recv_packet + 20);

                                memset( (char *)iphdr, 0, 20 );

                                memset( (char *)tcphdr, 0, 20 );

        

                // ſ Ŷ

                recv_socket = socket( AF_INET, SOCK_RAW, IPPROTO_TCP );

                len = sizeof( target_addr );



                // Ŷ

                while(1){

                      recvfrom( recv_socket, recv_packet, 100, 0, (struct sockaddr *)&target_addr, &len );

                      if( strcmp( inet_ntoa(target_addr.sin_addr), compare ) == 0 ){

                           if( ntohs(tcphdr->dest) == 777 ){
                                     // syn ÷ Ȯ
                                     if( tcphdr->syn == 1 )                
                                             printf( "%d Port is open.\n", port );
                                     break;                                                  
                             }                                                                          
                      }                                                                                          
              }                                          
                                
              closesocket( recv_socket );
              closesocket( raw_socket );

        }

        printf( "\n[Scan ended.]\n\n" );

                return 0;

}




  Hit : 4143     Date : 2006/12/26 04:20



    
出会い系 <a href="http://www.deai-megami.net/">出会い系</a><a href="http://www.deai-megami.net/">出会い系サイト</a><a href="http://www.deai-megami.net/">出会いサイト</a><a href="http://www.deai-megami.net/">無料 出会い</a><a href="http://www.sweet-park.com/">出会い系</a><a href="http://www.sweet-park.com/">出会い系サイト</a><a href="http://www.sweet-park.com/">出会いサイト</a><a href="http://www.sweet-park.com/">無料 出会い</a><a href="http://m.sweet-park.com/">出会い系</a><a href="http://m.sweet-park.com/">出会い系サイト</a><a href="http://m.sweet-park.com/">出会いサイト</a><a href="http://m.sweet-park.com/">無料 出会い</a><a href="http://www.nkb3.net/">出会い</a><a href="http://www.nkb3.net/">出会い系</a><a href="http://www.nkb3.net/">出会い系サイト</a><a href="http://www.nkb3.net/">出会いサイト</a><a href="http://www.nkb3.net/">無料 出会い</a> 2008/10/13
3026   ȳϼ? 鵵 .;[11]     Դϸ
06/02 4393
3025   ȳϼ? ƾ̶ ӿ ũ ǵ帳ϴ.[6]     ƾĿ
06/30 7028
3024   ȳϼ.C ε...[2]     sagelord
09/13 4842
3023   ȳϼ... 庼.[2]     kcwlove
03/25 2410
3022   ȳϼ... Ҽ ?[6]     Roland
09/07 2522
3021   ȳϼ. cmd ŷ¿ Դϴ.[6]     godqhrwhddls
08/10 2806
3020   ȳϼ.[15]     zorozzang7
09/16 2711
3019   ȳϼ! ʺԴϴ^^ ڵ ̳ ֽǺ~     suwongon
09/12 2834
3018   ȳϼ! ʺԴϴ... ѹ ּſ [5]     tmdrn9212
06/28 2945
3017   ȳϼ![2]     psb227
11/22 2494
  ȳϼ Winsock մϴ.[1]     jhsama
12/26 4142
3015   ȳϼ C for !![4]     ̰
01/16 4128
3014   ȳϼ c ʺ ּ(4)() [C][1]     lawsoul
01/16 2919
3013   ȳϼ c ʺ ּ(3) [C][1]     lawsoul
01/15 3059
3012   ȳϼ c ʺ ּ(2) [C] [ذϷ:sohun5013][3]     lawsoul
01/15 5275
3011   ȳϼ c ʺ ּ [C] [ذϷ:Z2ong2][4]     lawsoul
01/15 2949
3010   ȳϼ α׷ؼ ʺ ֽϴ[4]     pmoil
12/15 3000
3009   ȳϼ c++ лԴϴ[3]     axio93
03/19 3832
3008   ȳϼ ó ӽϴٸ[1]     yongchun87
12/30 3024
3007   ȳϼ ó ޴µ ڵ ϳ ɱ??     shh9547
05/14 4881
[1][2][3][4][5][6][7][8][9] 10 ..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org