반응형

프로세스 12

시스템 보안 04.악성 프로그램 프로세스 종료 문제

/* * http://sosal.tistory.com/ * made by so_Sal */ 관리중인 solaris 시스템이 어느날 해킹을 당하여 외부 침입자가 불법침입을 하였다. 다행히 외부침입자의 침입경로를 파악하여 제거하였으나, 불법침입을 한 상태에서 행한 불법작업내역은 아직 확인하지 못하였다. 특히 이 침입자는 이 시스템을 경유지로 하여 타 시스템에 대하여 지속적인 스캐닝 또는 서비스거부공격을 하고 있을 가능성이 매우 높다. solaris 시스템을 평소 관리했던 상식에 비추어서 시스템내에서 의심스럽게 보이는 프로세스를 찾아서 강제종료 시키시오. --- 단순히 프로세스 목록을 찾아, 강제종료만 하면 되는 문제입니다. 의심스럽게 보이는 프로세스를 찾기 위해선, 일단 프로세스 목록을 보는 방법을 알아야합..

제한시간 1초, 수학문제 프로그램 해킹?!

/* * http://sosal.tistory.com/ * made by so_Sal */ /* * 이 포스팅을 이해하기 위해선 * c언어 srand(), time(), rand() 함수들 * 리눅스 read write 파일 시스템콜 뿐만 아니라 * fork(), execl(), pipe(), dup2() 프로세스 시스템콜을 * 미리 아셔야 이해할 수 있습니다./ */ 예전에 숫자 맞추는 게임(?)이 널루트 가입문제로 나왔었던 기억이..있습니다 ㅎㅎ 아마 억대자리수 덧셈이었나?? 그럴텐데.. 기억이 잘 안나네요. (동아리 선배분께서 열심히 풀고계신걸 잠깐 본적이 ㅎㅎㅎ) 여튼, 번뜩 생각나서 고걸 부셔버리는걸로.. 한번 포스팅 해보려고 합니다. 목적은 1초안에 1만자리수 덧셈문제를 풀기! 입니다. sra..

Linux/Linux_technic 2010.11.06

Linux - fcntl File control

/* * http://sosal.tistory.com/ * made by so_Sal */ fcntl - File control #include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); (flock 구조체에 대해서는 게시하지 않았습니다. ) 첫번째 매개변수 fd부터 보겠습니다. fd - 파일 서술자(file descriptor) ㄴ 제어하기를 원하는 파일의 서술자를 지정하는 매개변수입니다. 리눅스 시스템에서 모든 프로세스는 0, 1, 2 라는 3개의 파일 서술자는 미리 정해져있습니다. 각각 입력(0), 출력(1), 에러(2)를 ..

fork, pipe를 이용한 간단한 프로세스 통신 예제

/* * http://sosal.tistory.com/ * made by so_Sal */ #include #include #include int main(void){ char buffer[BUFSIZ]; int fd[2]; if(pipe(fd)==-1){ perror("pipe error..\n"); exit(0); } pid_t pid; pid = fork(); if(pid == -1){ perror("fork error..\n"); exit(0); } else if(pid==0){ //자식 프로세스의 경우// write(fd[1],"This letter is from child",BUFSIZ); sleep(1); //레이스 컨디션 문제 발생. 부모보다 자식이 먼저 fd에 있는 자료를 //가져갈 수 ..

Linux/Linux_Source 2009.12.18

IPC - 03. pipe() 를 통한 프로세스 통신

/* * http://sosal.tistory.com/ * made by so_Sal */ 각각의 프로세스는 독립적인 메모리 영역을 가지고 있다. fork() 함수를 쓰더라도, 그 이전의 변수들이 복사되는 것일 뿐, 부모 프로세스와 자식 프로세스가 그 변수를 공유한다던가, 정보를 주고받는 행동은 방법이 없었다. 동시에 2개의 프로그램을 실행시키는데, 변수를 공유하려면 어떻게 해야할까? 공유메모리 기법을 쓰는 방법이 있고, pipe를 통해 변수를 공유한다기 보다 정보를 주고 받는 방법이 있다. 여기 포스팅되는 글은 단순히 buffer를 주고받을 수 있는 pipe에 대해서 설명하려 합니다. 부모프로세스에서 buffer 문자열을 자식프로세스에게 줄 수 있고, 자식 프로세스 역시 답장 가능입니다. ㅋ (아참, ..

Socket - client 소스, 다중 프로세스 채팅방

/* * http://sosal.tistory.com/ * made by so_Sal */ / * * 리눅스 기반입니다. * TCP/IP AF_INET 외부 네트워크 도메인 기반입니다. * fork() 함수를 이용한 다중 프로세스 원리 기반 채팅방입니다. * 문자열이 자신이 입력한것인지, server가 입력한 것인지 구분하는 ID는 넣지 않았습니다. * exit를 입력하거나 받으면 종료됩니다. * 최대로 보낼수있는. 받을수 있는 문자열의 길이는 MAXLINE 메크로를 통하여 정하였습니다. * 프로그램의 매개변수는 argv[1]과 argv[2]로, 각각 ip와 port번호를 받습니다. * made by sosal. http://sosal.tistory.com/ * / #include #include #in..

Linux/Linux_Source 2009.11.07

Socket - server 소스. 다중 프로세스 채팅방

/* * http://sosal.tistory.com/ * made by so_Sal */ / * * 리눅스 기반입니다 * TCP/IP AF_INET 외부 네트워크 도메인 기반입니다. * fork() 함수를 이용한 다중 프로세스 원리 기반 채팅방입니다. * 문자열이 자신이 입력한것인지, client가 입력한 것인지 구분하는 ID는 넣지 않았습니다. * exit를 입력하거나 받으면 종료됩니다. * 최대로 보낼수있는. 받을수 있는 문자열의 길이는 MAXLINE 메크로를 통하여 정하였습니다. * 프로그램의 매개변수는 argv[1]로 port번호를 받습니다. * made by sosal. http://sosal.tistory.com/ * / #include #include #include #include #in..

Linux/Linux_Source 2009.11.07

System - 05. wait() 프로세스 동기화

/* * http://sosal.tistory.com/ * made by so_Sal */ fork 함수로 생성된 자식 프로세스는 독립적으로 실행됩니다. 따라서 부모프로세스는 자식프로세스가 하는 일을 알 수 없고, 변수의 공유나 자식프로세스가 계속 살아있는지 등에 대한 정보를 기본적으로는 알 수 없습니다. #include #include pid_t wait(int *stat_loc); //call by reference stat_loc은 종료된 프로세스의 pid 값을 리턴하여 보통 pid_t 변수에다 저장합니다. ex) int stat_loc; pid_t child_pid; child_pid = wait(&stat_loc); wait 시스템콜은 자식프로세스중 하나가 종료될 때까지 부모 프로세스를 기다리게..

System - 03. exec () 계열. 프로세스 이미지 대체

/* * http://sosal.tistory.com/ * made by so_Sal */ exec 함수라는것은 사실 없고, exec 계열이라고 말한다. exec로 시작되는 여러 함수를 통칭하여 exec 계열이라고 한다. exec 계열의 함수는 프로세스를 대체해버린다. system()함수는 프로세스 실행 도중에 다른 프로그램을 실행시켜 끝날때 까지 기다린후 새로 실행시킨 프로그램의 동작이 끝나게 되면 다시 원래 프로세스로 돌아와 일을 계속 한다. 하지만 exec 계열의 함수는 현재 프로세스를 새로운 프로그램으로 대체해버린다. exec 함수들을 이용하면 현재 프로그램의 실행을 다른 프로세스에게 넘겨줄 수 있다. 새 프로그램이 시작된 후에는 원래의 프로그래밍 더 이상 실행될 필요가 없다는 점에서 system..

Socket - 04. 다중 프로세스 네트워크 프로그래밍

/* * http://sosal.tistory.com/ * made by so_Sal */ 일반적으로 서버 프로그램은 불특정 다수의 클라이언트로부터 서비스 요청을 처리할 수 있는 다중 사용자 서버 (Multi-user server)로 개발됩니다. 다중 사용자 서버는 반복 처리 서버(Iterative Server)와 동시 처리 서버(Concurrent Server)로 개발될 수 있습니다. 반복 처리 서버는 개발하기 쉽고 이해하기 쉽지만, 사용자가 많아질 경우 클라이언트가 서비스를 위해 대기하는 시간이 길어질 수 있기 때문에 현실적으로 사용하기 어렵습니다. 동시 처리 서버는 다수의 클라이언트로부터 서비스 요청을 동시에 처리함으로써 서비스 제공을 보장합니다. 대표적인 모델은 다중프로세스와 다중 스레드 등이 존..

반응형