2014 년정보보호졸업작품보고서 파일유출방지시스템 지도교수님 : 양환석교수님 팀명 : LKC Security 팀원 : 이호영, 김상우, 최유택 중부대학교정보보호학과

Size: px
Start display at page:

Download "2014 년정보보호졸업작품보고서 파일유출방지시스템 지도교수님 : 양환석교수님 팀명 : LKC Security 팀원 : 이호영, 김상우, 최유택 중부대학교정보보호학과"

Transcription

1 2014 년정보보호졸업작품보고서 파일유출방지시스템 지도교수님 : 양환석교수님 팀명 : LKC Security 팀원 : 이호영, 김상우, 최유택 중부대학교정보보호학과

2 목 차 1. 프로젝트설명 1 2. 연구계획 연구목적 연구방법 연구개요 연구구성도 3 3. 연구프로그램구축 주요소스 실행결과 8 4. 연구결과 전체소스 결론 참고문헌 Program PPT 30

3 1. 프로젝트설명 Program 은 API로구현한다. Program 은사용자 Login 시 Log가 Server 에자동저장이되고, 파일암호화, 복호화할수있는프로그램이실행된다. 프로그램은일반사용자와관리자로나뉘는데일반사용자는자신을인증할수있는아이디와비밀번호를만들어암호화복호화를할수있다. 이와반면관리자는프로그램에서암호화또는복호화된문서에대한권한을가질수없고, 관리자는사용자가 Login 하였을때의 IP와시간이저장되는 Log 기록관리와사용자아이디와패스워드를생성하여주고, 암 복호화기록을관리한다. 일반사용자는자신이암호화, 또는복호화할텍스트문서를불러와일을처리하고자신이편집한문서를저장한다. 이때중앙의서버로파일을암호화하였을때, 파일을복호화하였을때사용기록을저장하여혹여중요한파일이유출이되었을때어떤사용자가사용중일때파일이유출되었는지파악하는데시간을줄일수있습니다. 2. 연구계획 2.1 연구목적 최근들어, 정보통신의비약적발달로비밀수준의정보들이컴퓨터에저장되어네트워크혹은저장매체를통하여불법적으로정보를탈취, 변조또는소유자의실수에의하여비밀정보가누출되는등의보안문제가심각해지고있다. 따라서컴퓨터보안을위하여운영체제상에서의보안을강화할시제작비용과, 새로운파일암호시스템을개발해야하는복잡한단계를거쳐야한다. 이러한점을착안하여보안성이강화된암호화운영체재를개발하지않고도컴퓨터시스템에서사용자가비밀정보를사용할때프로그램을사용하여쉽게암 복호화하여비밀정보가누출이되더라도유출된정보를해독하는데많은시간과어려움을갖게하여정보를보호하는데의의를두었습니다. 또한관리자를두어일반사용자가 Log 기록에쉽게접근할수없도록하고, 일반사용자의아이디와패스워드를생성, 관리한다

4 2.2 연구방법 암호기법을사용하여사용자가자신이작성한파일이유출되더라도복호화를하기어렵게 한다. 그리고사용자의정보와파일의암 & 복호화된정보를서버에기록함으로써유출에대한 추적및관리를강화한다. API : 프로그램또는애플리케이션이운영체제에어떤처리를위해서호출할수있는서브루틴또는함수의집합이다. 윈도우 API의경우 C, C++, 파스칼등과같은언어에서윈도우를만들고, 파일을여는것과같은처리를할수있도록 1,000여개이상의함수로구성되어있다. 명령어의집합으로애플리케이션프로그램에서오퍼레이팅시스템의기본적인기능을사용할필요가있을때에여기에서명령어를호출한다. 이명령어는 MS-DOS 에서말하면시스템콜에해당한다. 이 API를확실히정하고범용성을갖게하면주변기기의인터페이스를용이하게사용할수있으며, 애플리케이션프로그램의개발이나호환성의면에서개선된다. MYSQL : 표준데이터베이스질의언어인 SQL(Structured Query Language) 을사용하는개방소스의관계형데이터베이스관리시스템 (RDBMS). 매우빠르고, 유연하며, 사용하기쉬운특징이있다. 다중사용자, 다중쓰레드를지원하고, C, C++, Eiffel, 자바, 펄, PHP, Python 스크립트등을위한응용프로그램인터페이스 (API) 를제공한다. 유닉스나리눅스, 윈도운영체제등에서사용할수있다. 상호연동이잘되면서도오픈소스로개발되는무료프로그램이어서홈페이지나쇼핑몰등일반적인웹개발에널리이용되고있다. 2.3 연구개요 이번프로젝트의목적은 Application Program Interface(API) 의동작원리를이해하고, API를구현하는것이다. 사용자와 Log 기록을저장하는 Server 를 MYSQL 을사용하여 API와 MYSQL 사이에연동하는관계를배우고익히는데목적을두었다. 또한 Complier 는 Microsoft VIsual Studio 2010 프로그램을사용하였다. 프로그램은일반사용자와관리자 Mod로나뉘어실행되고, 사용자가프로그램에로그인또는프로그램실행시 Server 에저장하기로한다

5 2.4 연구구성도 전체 Program 구성 - 3 -

6 File 암호화 Program 설계 File 복호화 Program 설계 - 4 -

7 3. 연구프로그램구축 3.1 주요소스 로그인부분 // 로그인함수 BOOL CALLBACK login(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { int i=0,num; char qstr[500]=""; switch(imessage) { case WM_COMMAND: switch(wparam) { case IDOK: strcmp(row[1],row_pw))==0) { query_stat = mysql_query(conn, "select *from login"); RES = mysql_store_result(conn); num = mysql_num_fields(res); GetDlgItemText(hDlg,IDC_ID,row_id,sizeof(row_id)); GetDlgItemText(hDlg,IDC_PW,row_pw,sizeof(row_pw)); while(row = mysql_fetch_row(res)) { if(i==0) { if((strcmp(row[0],row_id) MessageBox(hDlg," 로그인성공 "," 로그인성공 ",MB_OK); i=1; MessageBox(hDlg," 로그인실패 "," 로그인실패 ",MB_OK); return 2; EndDialog(hDlg,IDOK); case IDCANCEL: EndDialog(hDlg,IDCANCEL); exit(1); - 5 -

8 암호화부분 // 암호화버튼 case ID_BUT1: bsave = TRUE; if(bstart == TRUE) { // 그래도 NULL 문자이면 for(i=0;i<lstrlen(encry);i++) { if(encry[i] + EnterKey + i == NULL) Encry[i] = Encry[i] - EnterKey; else Encry[i] = Encry[i] + EnterKey + i; if(encry[i] == NULL) Encry[i] += count; //count( 사용자정의 ) 로더해버림 (250 미만의수 ) //for 문. SetWindowText(c4,Encry); MessageBox(hWnd," 정상적으로암호화되었습니다. Save 할파일명을입력하세요."," 알림 ",MB_OK); if(bsave == TRUE) { DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,File_Name); hfile1=createfile(savefile,generic_write,0,null,create_always,file_attribute_ NORMAL,NULL); WriteFile(hFile1,Encry,lstrlen(Encry),&dwWrite,NULL); CloseHandle(hFile1); strcpy(enc,"insert into enc values ('"); strcat(enc,ip); strcat(enc,"','"); strcat(enc,time); strcat(enc,"','"); strcat(enc,savefile); strcat(enc,"')"); mysql_query(conn,enc); else MessageBox(hWnd," 암호문이없습니다."," 오류 ",MB_OK); else MessageBox(hWnd," 암호화할파일을열어주세요."," 오류 ",MB_OK); bstart = FALSE; - 6 -

9 복호화부분 // 복호화버튼 // 암호화텍스트얻어옴 // 복호화작업시작 case ID_BUT2: GetWindowText(c4,Arr,30000); for(i=lstrlen(encry) -1;i>-1;i--) { if((2*(enterkey)) + i + Encry[i] == NULL) Arr[i] += EnterKey; else Arr[i] = Encry[i]-i-EnterKey; // 문자열출력 if(encry[i]-count==null && Arr[i] -i -(2*EnterKey) == NULL) { Arr[i] -= count; //Encry 에서 count 을빼면 NULL 이되는문자를 SetWindowText(c3,Arr); MessageBox(hWnd," 정상적으로복호화되었습니다. Save 할파일명 을입력하세요."," 알림 ",MB_OK); if(bsave == TRUE) { DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,File_Name); hfile2=createfile(savefile,generic_write,0,null,create_always,file_attribute_ NORMAL,NULL); WriteFile(hFile2,Arr,lstrlen(Arr),&dwWrite,NULL); CloseHandle(hFile2); strcpy(enc,"insert into ddec values ('"); strcat(enc,ip); strcat(enc,"','"); strcat(enc,time); strcat(enc,"','"); strcat(enc,savefile); strcat(enc,"')"); mysql_query(conn,enc); else MessageBox(hWnd," 복호화할파일을열어주세요."," 오류 ",MB_OK); bstart = FALSE; - 7 -

10 3.2 실행결과 로그인화면 - 사용자는자신의 ID 와패스워드로접속이가능하다. 암 & 복호화화면 - 사용자는파일을선택하여암 & 복호화를진행할수있다

11 관리자화면 - 관리자는사용자관리및로그기록을볼수있다. 사용자추가화면 - 관리자가일반사용자를추가할수있다

12 사용자삭제화면 - 사용하지않는사용자를삭제할수있다. 로그인기록화면 - 모든사용자의로그인한 IP 와시간, ID 를확인이가능하다

13 복호화로그화면 - 복호화를한사용자의 IP 와시간, 저장한파일이름을확인이가능하다. 암호화로그화면 - 암호화를한사용자의 IP 와시간, 저장한파일이름을확인이가능하다

14 4. 연구결과 4.1 전체소스 Password code.cpp #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") #include <windows.h> #include <mysql.h> #include "resource.h" #include <time.h> #define MYSQL_HOST " " #define MYSQL_ID "root" #define MYSQL_PW "12345" #define MYSQL_DB "lkc" LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hinst; HWND hwndmain; HWND c1,c2,c3,c4,c5,c6,c7,c12; LPCTSTR lpszclass=text("lkc"); HBRUSH hbrushedit; HFONT hfontedit,hfonteditt; enum {ID_BUT1 = 20, ID_BUT2,ID_BUT3; // 암 & 복호화 static int EnterKey=1; static int count=1; TCHAR str[300]=" 암호화, 복호화할파일을열어주세요."; TCHAR Encry[30000]; // 암호화텍스트 TCHAR Arr[30000]=""; // 복호화텍스트 TCHAR SaveFile[200]=""; // 저장파일이름 BOOL bstart = FALSE; BOOL bsave = FALSE; // 서버 MYSQL mysql,*conn; MYSQL_RES* RES;

15 MYSQL_ROW ROW; int query_stat; char row_id[40]={null; char row_pw[40]={null; char *ip=""; // 윈도우프로그램의시작점 ( 윈도우메인 ) int APIENTRY WinMain(HINSTANCE hinstance,hinstance hprevinstance,lpstr lpszcmdparam, int ncmdshow) { HWND hwnd; MSG Message; WNDCLASS WndClass; g_hinst=hinstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=CreateSolidBrush(RGB(121,170,255)); WndClass.hCursor=LoadCursor(hInstance,IDC_ARROW); WndClass.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1)); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName=lpszClass; WndClass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1); WndClass.style=CS_HREDRAW CS_VREDRAW; RegisterClass(&WndClass); // 등록된윈도우클래스로윈도우를생성한다. h W n d = C r e a t e W i n d o w ( l p s z C l a s s, l p s z C l a s s, W S _ S Y S M E N U WS_MINIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,800,550, NULL,(HMENU)NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); // 메세지루프 while(getmessage(&message,null,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); return (int)message.wparam; // 사용방법부분 BOOL CALLBACK ProgramInfo(HWND hdlg,uint imessage,wparam wparam,lparam lparam) { switch(imessage) {

16 case WM_INITDIALOG: case WM_COMMAND: switch(loword(wparam)) { case IDOK: EndDialog(hDlg,IDOK); case IDCANCEL: EndDialog(hDlg,IDCANCEL); // 만든이부분 BOOL CALLBACK Maker(HWND hdlg,uint imessage,wparam wparam,lparam lparam) { switch(imessage) { case WM_INITDIALOG: case WM_COMMAND: switch(loword(wparam)) { case IDOK: EndDialog(hDlg,IDOK); case IDCANCEL: EndDialog(hDlg,IDCANCEL); //IP 부분 char *GetIPGET() { WSADATA wdata; WSAStartup(MAKEWORD(2,2), &wdata); char hostname[255],ipaddr[50]; struct in_addr addr; PHOSTENT h;

17 memset(hostname,0,sizeof(hostname)); memset(ipaddr,0,sizeof(ipaddr)); h = gethostbyname(hostname); //memcpy(&addr, h->h_addr_list[0], sizeof(struct in_addr)); memcpy(&addr, h -> h_addr, sizeof(struct in_addr)); return inet_ntoa(addr); // 파일이름설정부분 BOOL CALLBACK File_Name(HWND hdlg,uint imessage,wparam wparam,lparam lparam) { switch(imessage) { case WM_INITDIALOG: case WM_COMMAND: switch(wparam) { case IDOK: GetDlgItemText(hDlg,IDC_EDIT1,SaveFile,sizeof(SaveFile)); bsave = FALSE; EndDialog(hDlg,IDOK); case IDCANCEL: EndDialog(hDlg,IDCANCEL); bsave = TRUE; // 로그인함수 BOOL CALLBACK login(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { int i=0,num; char qstr[500]=""; switch(imessage) { case WM_COMMAND: switch(wparam) { case IDOK: query_stat = mysql_query(conn, "select *from login"); RES = mysql_store_result(conn); num = mysql_num_fields(res); GetDlgItemText(hDlg,IDC_ID,row_id,sizeof(row_id)); GetDlgItemText(hDlg,IDC_PW,row_pw,sizeof(row_pw));

18 while(row = mysql_fetch_row(res)) { if((strcmp(row[0],row_id) strcmp(row[1],row_pw))==0) { MessageBox(hDlg," 로그인성공 "," 로그인성공 ",MB_OK); i=1; if(i==0) { MessageBox(hDlg," 로그인실패 "," 로그인실패 ",MB_OK); return 2; EndDialog(hDlg,IDOK); case IDCANCEL: EndDialog(hDlg,IDCANCEL); exit(1); LRESULT CALLBACK WndProc(HWND hwnd, UINT imessage, WPARAM wparam, LPARAM lparam) { //HDC hdc; //PAINTSTRUCT ps; OPENFILENAME OFN; TCHAR lpstrfile[max_path]=""; TCHAR *staticword1=" 원문텍스트 "; TCHAR *staticword2=" 암호화텍스트 "; HWND hmdlg1 = NULL, hmdlg2 = NULL; DWORD dwread,dwwrite; HANDLE hfile1 = NULL; HANDLE hfile2 = NULL; TCHAR buf[30000] =""; int i=0; char enc[200]="", dec[200]="", log[200]=""; time_t etime; time(&etime); char *time; time=ctime(&etime); static HWND help;

19 switch(imessage) { case WM_CREATE: ip=getipget(); //MessageBox(hWnd,ip," 알림 ",MB_OK); mysql_init(&mysql); conn = mysql_real_connect(&mysql, MYSQL_HOST, MYSQL_ID, MYSQL_PW, MYSQL_DB, 0, 0, 0); hwndmain = hwnd; ShowWindow(c12,SW_SHOW); start : i = DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,login); if(i==2) goto start; else { strcpy(log,"insert into login_log values ('"); strcat(log,ip); strcat(log,"','"); strcat(log,time); strcat(log,"','"); strcat(log,row_id); strcat(log,"')"); mysql_query(conn,log); if((strcmp(row_id,"root") strcmp(row_pw,"12345"))==0) { ::ShellExecute(::GetDesktopWindow(), "open", "admin.exe", 0, 0, SW_SHOWNORMAL); //exe파일실행 exit(1); // 버튼 c1 = CreateWindow(TEXT("button"),TEXT(" 암호화 (Encryption)"), WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 214,10,150,40,hWnd,(HMENU)ID_BUT1,g_hInst,NULL); c2 = CreateWindow(TEXT("button"),TEXT(" 복호화 (Decryption)"), WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 600,10,150,40,hWnd,(HMENU)ID_BUT2,g_hInst,NULL); // 에디터창 c3 = CreateWindow(TEXT("edit"),str, WS_CHILD ES_MULTILINE WS_VISIBLE WS_VSCROLL WS_HSCROLL WS_BORDER,11,60,370,380,hWnd,(HMENU)0,g_hInst,NULL); c4 = CreateWindow(TEXT("edit"),NULL, WS_CHILD ES_MULTILINE WS_VISIBLE WS_HSCROLL WS_VSCROLL WS_BORDER,400,60,370,380,hWnd,(HMENU)3,g_hInst,NULL); // 텍스트이름 c5 = CreateWindow(TEXT("static"),staticWord1,WS_CHILD WS_BORDER WS_VISIBLE,11,43,76,17,hWnd,(HMENU)-1,g_hInst,NULL); c6 = CreateWindow(TEXT("static"),staticWord2,WS_CHILD WS_BORDER

20 WS_VISIBLE,400,43,88,17,hWnd,(HMENU)-1,g_hInst,NULL); c7 = CreateWindow(TEXT("button"),TEXT(" 화면초기화 "), WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 600,450,150,30,hWnd,(HMENU)ID_BUT3,g_hInst,NULL); hbrushedit = CreateSolidBrush(RGB(0,0,0)); hfontedit = CreateFont(13,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH,TEXT(" 평문 ")); hfonteditt = CreateFont(10,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH,TEXT(" 궁서 ")); SendMessage(c5,WM_SETFONT,(WPARAM)hFontEdit,MAKELPARAM(FALSE,0)); SendMessage(c6,WM_SETFONT,(WPARAM)hFontEdit,MAKELPARAM(FALSE,0)); SendMessage(c7,WM_SETFONT,(WPARAM)hFontEdit,MAKELPARAM(FALSE,0)); SetFocus(c3); case WM_COMMAND: switch(loword(wparam)) { // 암호화할파일열기 case ID_MENU_1: SetWindowText (GetDlgItem (hwnd, 0),""); // 화면초기화 SetWindowText (GetDlgItem (hwnd, 3),""); // 화면초기화 memset(&ofn,0,sizeof(openfilename)); OFN.lStructSize = sizeof(openfilename); OFN.lpstrTitle = " 암호화할파일열기 "; OFN.hwndOwner = hwnd; OFN.lpstrFilter = TEXT(" 텍스트문서 (*.txt)\0*.txt"); OFN.lpstrFile = lpstrfile; OFN.nMaxFile =MAX_PATH; GetOpenFileName(&OFN); hfile1 = CreateFile(OFN.lpstrFile,GENERIC_READ GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if(hfile1!= INVALID_HANDLE_VALUE) { ReadFile(hFile1,buf,sizeof(buf),&dwRead,NULL); CloseHandle(hFile1); SetWindowText(c3,buf); bstart = TRUE; GetWindowText(c3,Encry,30000); case ID_MENU_ProgramInfo: MessageBox(hWnd,"ASCII 코드를이용한치환암호기법을사용한프로그램입니다.\n*** 암호화방법 ***\n1. 원문 TEXT파일을불러옵니다.\n2. 암호화버튼을누릅니다.\n*** 복호화방법 ***\n1. 암호화 TEXT파일을불러옵니다.\n2. 복호화버튼을눌러원문텍

21 스트로변환시킵니다. "," 사용방법 ",MB_OK); // 복호화할파일열기 case ID_MENU_2: SetWindowText (GetDlgItem (hwnd, 0),""); // 화면초기화 SetWindowText (GetDlgItem (hwnd, 3),""); // 화면초기화 memset(&ofn,0,sizeof(openfilename)); OFN.lStructSize = sizeof(openfilename); OFN.lpstrTitle = " 복호화할파일열기 "; OFN.hwndOwner = hwnd; OFN.lpstrFilter = TEXT(" 텍스트문서 (*.txt)\0*.txt"); OFN.lpstrFile = lpstrfile; OFN.nMaxFile = MAX_PATH; GetOpenFileName(&OFN); h F i l e 2 = C r e a t e F i l e ( O F N. l p s t r F i l e, G E N E R I C _ R E A D GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hfile1!= INVALID_HANDLE_VALUE) { ReadFile(hFile2,buf,sizeof(buf),&dwRead,NULL); CloseHandle(hFile2); SetWindowText(c4,buf); GetWindowText(c4,Encry,30000); bsave = TRUE; // 화면클리어 case ID_BUT3: SetWindowText (GetDlgItem (hwnd, 0),""); SetWindowText (GetDlgItem (hwnd, 3),""); // 창종료 case ID_MENU_EXIT: DestroyWindow(hWnd); // 만든이 case ID_MENU_Maker: if(!iswindow(hmdlg1)) { hmdlg1= CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,Maker); ShowWindow(hMDlg1,SW_SHOW); // 암호화버튼 case ID_BUT1: bsave = TRUE;

22 if(bstart == TRUE) { for(i=0;i<lstrlen(encry);i++) { if(encry[i] + EnterKey + i == NULL) Encry[i] = Encry[i] - EnterKey; else Encry[i] = Encry[i] + EnterKey + i; if(encry[i] == NULL) // 그래도 NULL문자이면 Encry[i] += count; //count( 사용자정의 ) 로더해버림 (250미만의수 ) //for문. SetWindowText(c4,Encry); MessageBox(hWnd," 정상적으로암호화되었습니다. Save 할파일명을입력하세요."," 알림 ",MB_OK); if(bsave == TRUE) { DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,File_Name); hfile1=createfile(savefile,generic_write,0,null,create_always,file_attribute_norma L,NULL); WriteFile(hFile1,Encry,lstrlen(Encry),&dwWrite,NULL); CloseHandle(hFile1); strcpy(enc,"insert into enc values ('"); strcat(enc,ip); strcat(enc,"','"); strcat(enc,time); strcat(enc,"','"); strcat(enc,savefile); strcat(enc,"')"); mysql_query(conn,enc); else MessageBox(hWnd," 암호문이없습니다."," 오류 ",MB_OK); else MessageBox(hWnd," 암호화할파일을열어주세요."," 오류 ",MB_OK); bstart = FALSE; // 복호화버튼 case ID_BUT2: GetWindowText(c4,Arr,30000); // 암호화텍스트얻어옴 for(i=lstrlen(encry) -1;i>-1;i--) { // 복호화작업시작

23 if((2*(enterkey)) + i + Encry[i] == NULL) Arr[i] += EnterKey; else Arr[i] = Encry[i]-i-EnterKey; // 문자열출력 if(encry[i]-count==null && Arr[i] -i -(2*EnterKey) == NULL) { Arr[i] -= count; //Encry에서 count을빼면 NULL이되는문자를 SetWindowText(c3,Arr); MessageBox(hWnd," 정상적으로복호화되었습니다. Save할파일명을입력하세요."," 알림 ",MB_OK); if(bsave == TRUE) { DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,File_Name); hfile2=createfile(savefile,generic_write,0,null,create_always,file_attribute_norma L,NULL); WriteFile(hFile2,Arr,lstrlen(Arr),&dwWrite,NULL); CloseHandle(hFile2); strcpy(enc,"insert into ddec values ('"); strcat(enc,ip); strcat(enc,"','"); strcat(enc,time); strcat(enc,"','"); strcat(enc,savefile); strcat(enc,"')"); mysql_query(conn,enc); else MessageBox(hWnd," 복호화할파일을열어주세요."," 오류 ",MB_OK); bstart = FALSE; case WM_CTLCOLOREDIT: if((hwnd)lparam==c4) { SetTextColor((HDC)wParam,RGB(215,215,215)); SetBkColor((HDC)wParam,RGB(0,0,0)); return (LRESULT)hBrushEdit; case WM_DESTROY: DeleteObject(hBrushEdit); DeleteObject(hFontEdit);

24 PostQuitMessage(0); mysql_close(conn); return(defwindowproc(hwnd,imessage,wparam,lparam)); admin.cpp #include <windows.h> #include "resource.h" #include <mysql.h> #define MYSQL_HOST " " #define MYSQL_ID "root" #define MYSQL_PW "12345" #define MYSQL_DB "lkc" LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hinst; HWND c1,c2,c3,c4,c5,c6; HWND hmdlg1 = NULL; LPSTR lpszclass="admin"; enum{id_but1 = 20,ID_BUT2,ID_BUT3,ID_BUT4,ID_BUT5,ID_BUT6; // 서버 MYSQL *conn, mysql; MYSQL_RES* RES; MYSQL_ROW ROW; int query_stat; char row_id[40]={null; char row_pw[40]={null; // 윈도우프로그램의시작점 ( 윈도우메인 ) int APIENTRY WinMain(HINSTANCE hinstance,hinstance hprevinstance,lpstr lpszcmdparam,int ncmdshow) { HWND hwnd; // 메세지를받을윈도우핸들 MSG Message; WNDCLASS WndClass; g_hinst=hinstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=CreateSolidBrush(RGB(121,170,255)); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1)); WndClass.hInstance=hInstance;

25 WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName=lpszClass; WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW CS_VREDRAW; RegisterClass(&WndClass); // 등록된윈도우클래스로윈도우를생성한다 hwnd=createwindow(lpszclass,lpszclass,ws_sysmenu WS_MINIMIZEBOX, 450,450,400,200,NULL,(HMENU)NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); // 윈도우를보여준다. while(getmessage(&message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); return (int)message.wparam; //ID,passwd 확인하는부분 BOOL CALLBACK add(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { switch(imessage){ case WM_COMMAND: switch(loword(wparam)){ case IDOK: query_stat = mysql_query(conn, "select *from login"); RES = mysql_store_result(conn); ROW = mysql_fetch_row(res); GetDlgItemText(hDlg,IDC_ID,row_id,sizeof(row_id)); GetDlgItemText(hDlg,IDC_PW,row_pw,sizeof(row_pw)); EndDialog(hDlg,IDOK); case IDCANCEL: EndDialog(hDlg,IDD_DIALOG1); // 사용자삭제하는부분 BOOL CALLBACK del(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { switch(imessage){ case WM_COMMAND: switch(loword(wparam)){ case IDOK: query_stat = mysql_query(conn, "select *from login"); RES = mysql_store_result(conn); ROW = mysql_fetch_row(res); GetDlgItemText(hDlg,IDC_DEL,row_id,sizeof(row_id));

26 case IDCANCEL: EndDialog(hDlg,IDD_DIALOG2); // 사용자목록부분 BOOL CALLBACK llist(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { int num; int i=0,j=0; char qstr[50000]=""; switch(imessage){ case WM_INITDIALOG: query_stat = mysql_query(conn, "select *from login"); RES = mysql_store_result(conn); num = mysql_num_fields(res); strcat(qstr," ID Passwd "); strcat(qstr,"\r\n"); strcat(qstr,"\r\n"); while ((ROW = mysql_fetch_row(res))) { for(j=0;j<num;j++){ strcat(qstr,row[j]); strcat(qstr," "); strcat(qstr,"\r\n"); SetDlgItemText(hDlg,IDC_LLIST,qstr); case WM_COMMAND: switch(loword(wparam)){ case IDCANCEL: EndDialog(hDlg,IDD_DIALOG3); // 사용자기록부분 BOOL CALLBACK llog(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { int num; int i=0,j=0; char qstr[50000]=""; switch(imessage){

27 case WM_INITDIALOG: query_stat = mysql_query(conn, "select *from login_log"); RES = mysql_store_result(conn); num = mysql_num_fields(res); strcat(qstr," IP Time ID "); strcat(qstr,"\r\n"); strcat(qstr,"\r\n"); while ((ROW = mysql_fetch_row(res))) { for(j=0;j<num;j++){ strcat(qstr,row[j]); strcat(qstr," "); strcat(qstr,"\r\n"); SetDlgItemText(hDlg,IDC_LLIST,qstr); case WM_COMMAND: switch(loword(wparam)){ case IDCANCEL: EndDialog(hDlg,IDD_DIALOG3); // 암호화기록부분 BOOL CALLBACK enc1(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { int num; int i=0,j=0; char qstr[50000]=""; switch(imessage){ case WM_INITDIALOG: query_stat = mysql_query(conn, "select *from enc"); RES = mysql_store_result(conn); num = mysql_num_fields(res); strcat(qstr," IP Time File "); strcat(qstr,"\r\n"); strcat(qstr,"\r\n"); while ((ROW = mysql_fetch_row(res))) { for(j=0;j<num;j++){ strcat(qstr,row[j]); strcat(qstr," "); strcat(qstr,"\r\n");

28 SetDlgItemText(hDlg,IDC_ENC1,qstr); case WM_COMMAND: switch(loword(wparam)){ case IDCANCEL: EndDialog(hDlg,IDD_DIALOG4); // 복호화기록부분 BOOL CALLBACK dec(hwnd hdlg,uint imessage,wparam wparam,lparam lparam) { int num; int i=0,j=0; char qstr[50000]=""; switch(imessage){ case WM_INITDIALOG: query_stat = mysql_query(conn, "select *from ddec"); RES = mysql_store_result(conn); num = mysql_num_fields(res); strcat(qstr," IP Time File "); strcat(qstr,"\r\n"); strcat(qstr,"\r\n"); while ((ROW = mysql_fetch_row(res))) { for(j=0;j<num;j++){ strcat(qstr,row[j]); strcat(qstr," "); strcat(qstr,"\r\n"); SetDlgItemText(hDlg,IDC_DEC1,qstr); case WM_COMMAND: switch(loword(wparam)){ case IDCANCEL: EndDialog(hDlg,IDD_DIALOG5); LRESULT CALLBACK WndProc(HWND hwnd,uint imessage,wparam wparam,lparam lparam) {

29 char add1[200]=""; char del1[200]=""; switch(imessage) { case WM_CREATE: mysql_init(&mysql); // mysql 초기화 conn = mysql_real_connect(&mysql, MYSQL_HOST, MYSQL_ID, MYSQL_PW, MYSQL_DB, 3306, (char *)NULL, 0); // 서버연결 c1 = CreateWindow(TEXT("button"),TEXT(" 사용자추가 "),WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 30,35,100,34,hWnd,(HMENU)ID_BUT1,g_hInst,NULL); c2 = CreateWindow(TEXT("button"),TEXT(" 사용자삭제 "),WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 150,35,100,34,hWnd,(HMENU)ID_BUT2,g_hInst,NULL); c3 = CreateWindow(TEXT("button"),TEXT(" 사용자목록 "),WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 270,35,100,34,hWnd,(HMENU)ID_BUT3,g_hInst,NULL); c6 = CreateWindow(TEXT("button"),TEXT(" 사용자기록 "),WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 30,100,100,34,hWnd,(HMENU)ID_BUT6,g_hInst,NULL); c4 = CreateWindow(TEXT("button"),TEXT(" 암호화기록 "),WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 150,100,100,34,hWnd,(HMENU)ID_BUT4,g_hInst,NULL); c5 = CreateWindow(TEXT("button"),TEXT(" 복호화기록 "),WS_CHILD WS_VISIBLE WS_BORDER BS_PUSHBUTTON, 270,100,100,34,hWnd,(HMENU)ID_BUT5,g_hInst,NULL); case WM_COMMAND: switch(loword(wparam)) { case ID_BUT1: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,add); if(row_id!=null){ strcpy(add1,"insert into login(id,pw) values ('"); strcat(add1,row_id); strcat(add1,"','"); strcat(add1,row_pw); strcat(add1,"')"); mysql_query(conn,add1); MessageBox(hWnd," 사용자가 추가 되었습니다."," 성 공 ",MB_OK); else MessageBox(hWnd," 아이디를 입력하세요."," 성공 ",MB_OK); case ID_BUT2: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,del);

30 strcpy(del1,"delete from login where id='"); strcat(del1,row_id); strcat(del1,"'"); mysql_query(conn,del1); MessageBox(hWnd," 사용자가삭제되었습니다."," 성공 ",MB_OK); case ID_BUT3: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,llist); case ID_BUT4: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG4),hWnd,enc1); case ID_BUT5: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG5),hWnd,dec); case ID_BUT6: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG6),hWnd,llog); case WM_DESTROY: PostQuitMessage(0); mysql_close(conn); return(defwindowproc(hwnd,imessage,wparam,lparam));

31 5. 결론 암호기법을사용하여사용자가자신이작성한파일을암호화하여안전하게저장할수있다. 저장한파일은유출되더라도암호화에사용된키값을모르기때문에복호화를하기어렵다. 또한자신이필요할때마다복호화를하여파일을열고수정이가능하다. 그리고사용자의로그인한기록과파일을암 & 복호화한기록이서버에기록되어관리자가확인이가능해파일유출에대해추적및관리가유용하다. 이번프로젝트는 MYSQL 을 Database 로사용하는프로그램을구현하였다. Database 를선정하는과정중 Micrisoft 에서나온 MSSQL 과운영체제에직접연동하여사용할수있는 ODBC 를알게되었는데 MYSQL 과같은비슷하지만다른점들이있었다. 따라서이번프로젝트를향후보완, 발전시킨다면사용하였던 MYSQL 이아닌 MicroSoft 에서나온모든프로그램과연동이되는 MSSQL 이나 ODBC 를사용하여다양한 Database 를배워보아야겠다. 또한 API를이용하여프로젝트활성창을작성하였는데프로젝트를진행하면서공부한 API를이용하여좀더심화된 MFC까지개인능력을향상시키고이를바탕으로 MFC 대한이해도를높여활용가능한 Program Language 를넓혀야겠다고생각했다. 6. 참고문헌 - 윈도우즈 API 정복 1 2 ( 김상형지음 / 한빛미디어 ) - MySQL의사용, 관리, 프로그래밍을위한완벽가이드 ( 폴드보이 / 지앤선 ) - 데이타베이스시스템 = Database system : 설계, 구축및관리 ( 김성언 / 학현사 ) - 네이버지식백과 - MYSQL

32 7. Program PPT

33 - 31 -

34 - 32 -

35 - 33 -

36 - 34 -

37 - 35 -

38 - 36 -

39 - 37 -

40 - 38 -

예제와 함께 배워보는 OllyDbg사용법

예제와 함께 배워보는 OllyDbg사용법 초보자를위한예제와함께 배워보는 OllyDbg 사용법 -1 부 - By Beist Security Study Group (http://beist.org) 요약 : 이문서는 Ollydbg 프로그램을이용하여 Reverse Engineering을하는방법에대해서다룬다. 초보자를위하여작성된문서이며예제와함께 Ollydbg의각기능에대해서알아본다. 주로기초적인내용을다루고있다.

More information

1장 윈도우 프로그래밍 들어가기

1장 윈도우 프로그래밍 들어가기 1 장 윈도우프로그래밍들어가기 김성영교수 금오공과대학교 컴퓨터공학부 예제 다음프로그램은언제종료할까? #include #define QUIT -1 int Func(void) int i; cout > i; return i; void main(void) int Sum = 0, i; cout

More information

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D> 01 : 윈도우프로그래밍기초 학습목표 윈도우운영체제와윈도우응용프로그램의특징을이해한다. SDK 응용프로그램작성과정, 기본구조, 동작원리를이해한다. MFC 응용프로그램작성과정, 기본구조, 동작원리를이해한다. 비주얼 C++ 개발환경사용법을익힌다. 윈도우운영체제특징 (1/3) 그래픽사용자인터페이스 1 윈도우운영체제특징 (2/3) 메시지구동구조 이벤트발생... 대기

More information

MFC 프로그래밍

MFC 프로그래밍 윈도우프로그래밍 Visual C++ 2010 MFC Programming 1 장. 윈도우프로그래밍기초 윈도우운영체제의특징 그래픽사용자인터페이스 시스템메뉴타이틀바메뉴최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 상태표시줄 스크롤바 윈도우운영체제의특징 메시지구동구조 윈도우운영체제의특징 멀티태스킹과멀티스레딩 멀티태스킹 (Multitasking) 운영체제가여러개의응용프로그램을동시에실행

More information

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - 09-CE-5-윈도우 핸들 순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정

More information

Microsoft PowerPoint - 09-CE-14-리스트콤보박스

Microsoft PowerPoint - 09-CE-14-리스트콤보박스 순천향대학교컴퓨터학부이상정 1 학습내용 리스트박스컨트롤 다이얼로그와리스트박스 콤보박스컨트롤 순천향대학교컴퓨터학부이상정 2 리스트박스컨트롤 순천향대학교컴퓨터학부이상정 3 리스트박스컨트롤 사용자가선택할수있는항목들을여러개나열해두고선택할수있는컨트롤 윈도우클래스의이름은 "listbox" 생성예 hlist=createwindow(l"listbox",null,ws_child

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

Microsoft PowerPoint - 09-CE-24-채팅 프로그램 순천향대학교컴퓨터학부이상정 1 학습내용 사용자인터페이스 프로그램구성 TCP 연결설정프로그램 서버연결설정 클라이언트연결설정 TCP 데이터송수신 순천향대학교컴퓨터학부이상정 2 사용자인터페이스 순천향대학교컴퓨터학부이상정 3 1:1 채팅프로그램 한프로그램이동시에서버와클라이언트로동작 프로그램시작시서버로동작 서버소켓생성하고상대방접속요청대기 채팅을위한연결요청시클라이언트로동작

More information

유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 중부대학교정보보호학과

유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 중부대학교정보보호학과 유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 2016. 05 중부대학교정보보호학과 목 차 1. 서론 2. 관련연구 2.1 IAT 후킹 2.2 PE 구조 3. 본론 3.1 유저영역후킹작성및실행 3.2 유저영역후킹탐지 4. 결론 5. 참고자료 6. 발표자료 1. 서론

More information

Microsoft PowerPoint - 04windows.ppt

Microsoft PowerPoint - 04windows.ppt Game Programming I Windows 프로그래밍 (1) March 27, 2006 목표 윈도우프로그래밍에서이용되는이벤트구동프로그래밍모델의이해 Direct3D 를이용하는윈도우어플리케이션의작성을위한최소한의코드이해 윈도우 (Win32) 어플리케이션 Direct3D API ( 어플리케이션프로그래밍인터페이스 ) 를이용하기위해필요 Win32 API 를이용해작성

More information

IS119_Message.Hooking_이성재.hwp

IS119_Message.Hooking_이성재.hwp Message Hooking 이성재 einsstar@is119.jnu.ac.kr Content 1. 목적 1 2. 윈도우 NT 환경에서의메시지처리 2 2.1. 메시지큐를이용한메시지처리 3 2.2. 윈도우프로시저에직접메시지전달 3 3. 메시지후킹이란 3 3.1. 메시지후킹의개념정의 3 3.2. 메시지후킹의유포방법 3 4. 후킹프로시저제작 3 4.1. 사전지식

More information

04장 메시지 처리 유형

04장 메시지 처리 유형 4 장 메시지처리유형 김성영교수 금오공과대학교 컴퓨터공학부 메시지처리유형 윈도우에서발생하는이벤트에대응하는윈도우메시지를처리 2 장및 3 장의실습예제 자식윈도우에서발생한이벤트를부모윈도우에서처리 WM_COMMAND 메시지처리 실습 4.2 자식윈도우에서발생한사건유형을구분하여처리 Notification code 처리 실습 4.7 Notification code 의한계를극복하여처리

More information

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture1.ppt Overview 윈도우프로그래밍기초 윈도우운영체제와윈도우응용프로그램의특징이해 SDK 응용프로그램작성과정, 기본구조, 동작원리이해 MFC 응용프로그램작성과정, 기본구조, 동작원리이해 HCI Programming 2 (321190) 2007년가을학기 9/13/2007 박경신 2 윈도우운영체제특징 그래픽사용자인터페이스 (Graphical User Interface,

More information

Microsoft PowerPoint - 09-CE-25-오목게임

Microsoft PowerPoint - 09-CE-25-오목게임 순천향대학교컴퓨터학부이상정 1 학습내용 단순오목게임 인터넷오목게임 승부판정오목게임 순천향대학교컴퓨터학부이상정 2 단순오목게임 순천향대학교컴퓨터학부이상정 3 예제 49: 단순오목게임 스크린에바둑판을그리고, 스크린을터치하면해당위치에흰돌또는검은돌만표시 승부는판정하지않음 메뉴 ID_START, ID_EXIT 순천향대학교컴퓨터학부이상정 4 예제 49: 코드 (1) #define

More information

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture1.ppt Overview 윈도우프로그래밍기초 윈도우운영체제와윈도우응용프로그램의특징이해 SDK 응용프로그램작성과정, 기본구조, 동작원리이해 MFC 응용프로그램작성과정, 기본구조, 동작원리이해 HCI Programming 2 (321190) 2008년가을학기 9/16/2008 박경신 2 Windows.NET 구조적프로그램에서객체지향프로그램으로 SDK(Software Development

More information

윈도우 프로그래밍

윈도우 프로그래밍 Windows Programming 2013. 3 출처 : 인터넷에서수집한 PT 자료 1. Overview Getting Started (1) 관련도서 Visual C++/API 프로젝트따라하기, 오진환, 컴스페이스 Programming Windows, Charles Petzold, Microsoft Press Windows application Programming

More information

윈도우즈 프로그래밍

윈도우즈 프로그래밍 윈도우프로그래밍및실습 002. 윈도우프로그래밍의기본 DB & MINING LAB. Korea University since 2007. 09. 03 updated 2012. 08. 18 last updated 2015. 08. 25 이종욱 eastwest9@korea.ac.kr 1 Purpose of this chapter What is a Window programming

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Chapter 1. MFC 시작하기

Chapter 1.  MFC 시작하기 Chapter 1. MFC 시작하기 1. MFC(Microsoft Foundation Class) 개요 2. Visual Studio 2015 프로그램설치하기 3. 마우스클릭프로그램작성 4. 그림그리기프로그램작성 5. 마우스좌표값구하기프로그램작성 1 1.1. MFC 개요 2 1.1.1. C++ 언어 객체지향언어 (Object-Oriented Programming,

More information

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770> 2010 학년도동계 계절수업시험문제지 출제위원 방송대김강현 학과명학번 - 성 명 감독관확인 ( 인 ) 교과목명 교과목코드 윈도우프로그래밍 3 7 출제범위 교재전체 ( 해당강의포함 ) 문항수 50 문항 [50 문항 2 점 =100 점 ] 유의사항 1. OMR 답안지및문제지인적사항표기는반드시컴퓨터용사인펜으로할것 2. 표기한답안은정정이일절불가하니답안표기에각별히유의할것

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Win32 API Windows Programming 1 http://idb.korea.ac.kr DB & Mining LAB. Korea Univ. 최종업데이트 : 2012. 08. 14 1 컴퓨터시스템의주요구성요소 2 2 컴퓨터하드웨어구성 Fetch : 메인메모리에저장되어있는명령어를 CPU 로 Decode : 컨트롤유닛에의해분석 Execution : ALU

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

5장 MFC기반 다지기

5장 MFC기반 다지기 5 장 MFC 기반다지기 김성영교수 금오공과대학교 컴퓨터공학부 들어가기 (1) pp.132 ~ 138 비주얼스튜디오에서 MFC 어플리케이션작성 참조 시스템메뉴 메뉴 최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 (Client Area) 스크롤바 상태표시줄 2 들어가기 (2) 3 들어가기 (3) 4 들어가기 (4) 솔루션탐색기확인 WinMain() 함수가없다?

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070> 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

윈도우즈 프로그래밍

윈도우즈 프로그래밍 8 장대화상자 VS 2015 008. 윈도우프로그래밍 DB & Mining LAB. Korea University Updated 2010. 10. 23 Updated 2012. 10. 02 Updated 2015. 09. 23 이종욱 eastwest9@korea.ac.kr 1 8-1 대화상자 (1/3) 사용자로부터끊임없이지시를받고사용자의지시에따라작업을하고 작업한결과를사용자에게보고한다.

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

슬라이드 1

슬라이드 1 2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

2015 년정보보호학과졸업작품보고서 USB 를이용한 System Lock 및 File Security Service 팀명 : Team IU ( Intelligent USB ) 지도교수 : 양정모교수님 조장 : 조상일 유승우 조한슬 중부대학교정보보호학과

2015 년정보보호학과졸업작품보고서 USB 를이용한 System Lock 및 File Security Service 팀명 : Team IU ( Intelligent USB ) 지도교수 : 양정모교수님 조장 : 조상일 유승우 조한슬 중부대학교정보보호학과 2015 년정보보호학과졸업작품보고서 USB 를이용한 System Lock 및 File Security Service 팀명 : Team IU ( Intelligent USB ) 지도교수 : 양정모교수님 조장 : 조상일 유승우 조한슬 2015. 6 중부대학교정보보호학과 목 차 Ⅰ. 서론 Ⅰ-1. 프로젝트소개 Ⅰ-2. 연구활동배경 Ⅰ-3. 피해사례조사 Ⅱ. 본론

More information

SHA-256 해시함수에대한 소스코드활용매뉴얼

SHA-256 해시함수에대한 소스코드활용매뉴얼 SHA-256 해시함수에대한 소스코드활용매뉴얼 2013.12. - 1 - 제 개정이력 순번 제 개정일 제 개정내역 담당자 해시함수에대한소스코드활용 매뉴얼 김기문 - 2 - < 목차 > 1. 개요 4 2. 해시알고리즘 4 3. 응용프로그램 5 3.1 C/C++ 5 3.1.1 프로젝트생성및빌드 5 3.1.2 소스코드설명 9 3.2 Java 11 3.2.1 프로젝트생성및빌드

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

Microsoft PowerPoint - (제15강)Win32 API.ppt

Microsoft PowerPoint - (제15강)Win32 API.ppt 15. 가상메모리, 프로세스 1 1. 메모리할당 가상메모리 OS는 4G 까지메모리 ( 단지주소공간, 물리적인메모리와연결가능성이있는메모리번지 ) 관리가능 사용하지않는부분은하드디스크의페이징파일에저장하여사용가능한 RAM을늘린다. (RAM+ 하드디스크의페이징파일 ) Win32에서추가된가상메모리할당함수들 1. 메모리를예약상태로할당할수있다. 예약이란물리적인메모리를소비하지않으면서주소공간만을미리할당해놓는방법을말한다.

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 1 2.1 대칭암호원리 제 2 장. 대칭암호와메시지기밀성 2 3 기본용어 평문 (Plaintext) - original message 암호문 (Ciphertext) - coded message 암호화 (Cipher) - algorithm for transforming plaintext to ciphertext 키 (Key) - info used in cipher

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

Microsoft PowerPoint - (제14강)Win32 API.ppt

Microsoft PowerPoint - (제14강)Win32 API.ppt 14. 파일입출력 1 1. 파일입출력 BOOL ReadFile( HANDLE hfile, LPVOID lpbuffer, DWORD nnumberofbytestoread, LPDWORD lpnumberofbytesread, LPOVERLAPPED lpoverlapped ); hfile : 데이터를읽을대상파일의핸들 lpbuffer : 읽은데이터를저장할버퍼 nnumberofbytestoread

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

C프로-3장c03逞풚

C프로-3장c03逞풚 C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

Infinity(∞) Strategy

Infinity(∞) Strategy 반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()

More information

PowerPoint Template

PowerPoint Template 설치및실행방법 Jaewoo Shim Jun. 4. 2018 Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2 SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

TTA Journal No.157_서체변경.indd

TTA Journal No.157_서체변경.indd 표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

제목

제목 Development Technology Seminar 작 성 자 : 고형호 이 메 일 : hyungho.ko@gmail.com 최초작성일 : 2007.01.19 최종작성일 : 2007.02.05 버 전 : 01.05 홈 피 : www.innosigma.com Goal Exception Handling 1. SEH vs. CEH Exception Handling

More information

놀이동산미아찾기시스템

놀이동산미아찾기시스템 TinyOS를이용한 놀이동산미아찾기시스템 윤정호 (mo0o1234@nate.com) 김영익 (youngicks7@daum.net) 김동익 (dongikkim@naver.com) 1 목차 1. 프로젝트개요 2. 전체시스템구성도 3. Tool & Language 4. 데이터흐름도 5. Graphic User Interface 6. 개선해야할사항 2 프로젝트개요

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아 LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont 12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 객체지향프로그래밍응용 Chap 2. 프로그램의뼈대 2012.09.17. 오병우 컴퓨터공학과금오공과대학교 윈도우프로그램각부분의명칭 타이틀바 메뉴 프레임윈도우오브젝트 메뉴오브젝트 도구모음 툴바오브젝트 스크롤바 클라이언트영역 뷰오브젝트 상태표시줄 상태바오브젝트 Department of Computer Engineering 2 Win32 Application API

More information

Chapter 1

Chapter 1 3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g

More information

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------

More information

슬라이드 1

슬라이드 1 QR 코드를통한간편로그인 2018. 11. 7 지도교수 : 이병천교수님 4 조 Security-M 지승우이승용박종범백진이 목 차 조원편성 주제선정 비밀번호가뭐였지? 이런일없이조금더쉽게로그인할수있는방법은없을까? 주제선정 ID와패스워드에의한로그인방식의획기적인변화필요 문자형 ID와패스워드 QR Code 등활용 간편한타겟인식및암기식보안체계의불편극복 인증방식의간소화로다양한분야에서활용가능

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

Microsoft PowerPoint - ch09_파이프 [호환 모드]

Microsoft PowerPoint - ch09_파이프 [호환 모드] 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

Microsoft PowerPoint - 09-CE-23-윈도우 소켓 순천향대학교컴퓨터학부이상정 1 학습내용 인터넷과 TCP/IP 프로토콜 소켓의생성과해제 소켓주소표현 연결지향소켓프로그래밍 순천향대학교컴퓨터학부이상정 2 인터넷과 TCP/IP 프로토콜 순천향대학교컴퓨터학부이상정 3 인터넷구조의프로토콜계층 인터넷구조의프로토콜계층 응용계층 (application layer) 응용서비스제공 http, ftp, smtp, telnet,

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

Microsoft PowerPoint - 6.pptx

Microsoft PowerPoint - 6.pptx DB 암호화업데이트 2011. 3. 15 KIM SUNGJIN ( 주 ) 비에이솔루션즈 1 IBM iseries 암호화구현방안 목차 목 차 정부시책및방향 제정안특이사항 기술적보호조치기준고시 암호화구현방안 암호화적용구조 DB 암호화 Performance Test 결과 암호화적용구조제안 [ 하이브리드방식 ] 2 IBM iseries 암호화구현방안 정부시책및방향

More information

Microsoft PowerPoint - 07-Data Manipulation.pptx

Microsoft PowerPoint - 07-Data Manipulation.pptx Digital 3D Anthropometry 7. Data Analysis Sungmin Kim SEOUL NATIONAL UNIVERSITY Body 기본정보표시 Introduction 스케일조절하기 단면형상추출 단면정보관리 3D 단면형상표시 2 기본정보표시및스케일조절 UI 및핸들러구성 void fastcall TMainForm::BeginNewProject1Click(TObject

More information

MySQL-Ch05

MySQL-Ch05 MySQL P A R T 2 Chapter 05 Chapter 06 Chapter 07 Chapter 08 05 Chapter MySQL MySQL. (, C, Perl, PHP),. 5.1 MySQL., mysqldump, mysqlimport, mysqladmin, mysql. MySQL. mysql,. SQL. MySQL... MySQL ( ). MySQL,.

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

<3035313230325FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

<3035313230325FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770> 네트워크 장비의 디폴트 로그인 패스워드 취약점 및 대책 2005. 11. 30 본 보고서의 전부나 일부를 인용시 반드시 [자료: 한국정보보호진흥원(KISA)]룰 명시하여 주시기 바랍니다. - 1 - 1. 개요 패스워드 관리는 보안의 가장 기본적인 사항으로 유추하기 어려운 패스워드를 사용하고, 주기적 으로 패스워드를 변경하는 등 패스워드 관리에 신경을 많이 쓰고

More information