관리 메뉴

Heizelnut의 IT이야기

포트스캔 프로그램.(Linux 기반) 본문

IT_Engineer/C언어

포트스캔 프로그램.(Linux 기반)

Heizelnut 2007.09.13 20:44
크리에이티브 커먼즈 라이선스
Creative Commons License
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
/* 소켓을 생성하기위한 Header 파일들 */
#include <sys/types.h>
#include <sys/socket.h>

void error_handling(char *message);

int main(int argc, char **argv)
{
       int sock,start,end;

       struct sockaddr_in serv_addr;

       if(argc!=4){
               printf("Usage : %s <IP> <Start> <End>\n", argv[0]);
               exit(1);
       }
       start = atoi(argv[2]);
       end = atoi(argv[3]);
      /* start 가 end 와 같아질때까지 start를 증가시킨다. */
       for(;start<=end;start++){
        /* socket(domain, type, protocol) = (프로토콜 체계,전송타입,프로토콜) */
       sock=socket(PF_INET, SOCK_STREAM,0);
       if(sock == -1) /* socket 이 생성 실패시 -1을 return 에러메시지 출력 */
               error_handling("socket() error");
        /* 구조체 타입 지정 */
       memset(&serv_addr, 0, sizeof(serv_addr));
       serv_addr.sin_family=AF_INET;
       serv_addr.sin_addr.s_addr=inet_addr(argv[1]);
       serv_addr.sin_port=htons(start);
       /* 연결 요청시 -1을 return 하지않으면 start 에 있는 값을 출력해준다. */
        if(connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr))!=-1)

       printf("%d\n",start);
       close(sock);
       }


}

void error_handling(char *message)
{
       fputs(message, stderr);
       fputc('\n',stderr);
       exit(1);
}

후 완전히 내 힘으로 만든것은 아니지만
내 손으로 이런것을 만드니 굉장히 뿌듯하다..크흑...ㅠㅠ
신고
0 Comments
댓글쓰기 폼