본문 바로가기

[+] Information/[-] Network

Naver 뉴스 동영상 주소 파악 프로그램 소스공개


http://maj3sty.tistory.com/594

위 주소에서 소개한 바 있는 프로그램 소스를 공개합니다.

위 글에서 알려드렸던 취약점이 패치된 듯 하여 공개하게 됬습니다.

제작언어 : C

환경 : Window XP SP3

참고사항 : 다운로드 프로그램이 아닌 주소 확인 프로그램이며, 동영상 링크가 온전한지 아닌지 판단 기능은 없습니다.

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <winsock2.h> 

#define BUFSIZE 1024 

int main(int argc, char **argv) 
{ 
    WSADATA wsaData; 

    char getHead[]={"GET http://news.naver.com/vod/mms.nhn?office_id="}; 
    char getHead2[]={"&article_id="}; 
    char getFoot[]={" HTTP/1.1\r\n"\ 
        "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n"\ 
        "Accept-Language: ko\r\n"\ 
        "UA-CPU: x86\r\n"\ 
        "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n"\ 
        "Host: news.naver.com\r\n"\ 
        "Proxy-Connection: Keep-Alive\r\n"\ 
        "Cookie: nvad_lc=LD,4215000000; NB=G4ZDQOJQGM2DGNZZ; NNB=4UV3GRHN3B7UU; npic=1AjjNYpfgvTZELF1iY62HOuQX7Kfldi8mSfFK3fdbQL5Zdd3gEDM8o6JNyN3ur2+CA==\r\n\r\n"}; 
    char recvms[BUFSIZE]=""; 

    int i, recvlen; 
    int headLen, footLen, headLen2; 
    char *test; 
    SOCKET c_socket; 
    struct hostent *host; 

    SOCKADDR_IN servAddr; 

    if(argc!=3) 
    { 
        printf("Usage : *.exe <office_id> <article_id>\n"); 
        exit(1); 
    } 

    printf("네이버 뉴스 동영상 주소 확인 프로그램\n"); 

    if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) 
        printf("WSAStartup error!!\n"); 
     
     
     
    host=gethostbyname("news.naver.com"); 

    if(!host) 
    { 
        printf("host() error\n\n"); 
        exit(1); 
    } 

    memset(&servAddr, 0, sizeof(servAddr)); 
    servAddr.sin_family=AF_INET; 
    servAddr.sin_addr.s_addr=((IN_ADDR*)host->h_addr_list[0])->s_addr; 
    servAddr.sin_port=htons(80); 

    headLen = strlen(getHead); 
    footLen = strlen(getFoot); 
    headLen2 = strlen(getHead2); 

    for(i=0; i<=0; i++) 
    { 
        c_socket=socket(PF_INET, SOCK_STREAM, 0); 
        if(c_socket == -1) 
        { 
            printf("socket() error\n\n"); 
            i--; 
            continue; 
        } 

        if(connect(c_socket, (SOCKADDR*)&servAddr, sizeof(servAddr))==-1) 
        { 
            printf("connect error()\n\n"); 
            i--; 
            continue; 
        } 

        test = (char*)malloc(headLen+footLen+headLen2+strlen(argv[1])+strlen(argv[2])+1); 
        strcpy(test,getHead); 
        strcat(test,argv[1]); 
        strcat(test,getHead2); 
        strcat(test,argv[2]); 
        strcat(test,getFoot); 

        send(c_socket, test, strlen(test), 0); 
         
        recvlen=recv(c_socket, recvms, BUFSIZE-1, 0); 
        recvms[BUFSIZE] = 0; 

        system("cls"); 
        printf("%s\n\n",recvms); 
        printf("\n\n"); 
        printf("mms주소를 복사하여 넷 트랜스포트와 같은 프로그램으로 동영상을 다운 받으시면 됩니다.\n"); 
        printf("made by MaJ3stY\n"); 
         
        free(test); 
        closesocket(c_socket); 
    } 
     
    return 0; 
} 

/* 

  네이버 뉴스 동영상 주소 확인 프로그램. 
  네이버 뉴스위에 있는 office_id, article_id 값을 프로그램에 입력해주면 그 기사에 해당하는 동영상 주소가 나온다. 
  예 : n.c 052 0000194373 
*/ 
다른곳으로 가져가실 때는 출처를 꼭 밝혀주시기 바랍니다.

'[+] Information > [-] Network' 카테고리의 다른 글

TCP 헤더 flag에 관하여..  (0) 2011.12.16
와이어샤크에서 파일 추출을 해보자!  (2) 2011.07.19
Winpcap을 처음 사용하다.  (2) 2009.12.25
UDP Foolder~  (8) 2009.11.11