-
[F.T.Z] Level 10Wargame/F.T.Z 2022. 9. 24. 10:40반응형
Level 10을 풀어보자.
Level 10을 풀기 위해서는 새로운 개념인 공유 메모리에 대한 것을 알아야 한다.
또, 간단하다면 간단한 코드를 작성해야 하는데 아직까지는 코드를 만들어 문제를 푼다는 것이 많이 어렵다.
다른 문제들처럼 Level 10에 접속을 하고, hint 파일을 살펴보자.
두 명의 사용자가 공유 메모리를 이용한 대화방을 만들어 대화를 나누고 있다고 한다.
key_t 라는 값이 나와 있는데, 무슨 말인지 모르겠다.
열심히 구글링을 해보도록 하자.

<Level 10의 hint> 우선적으로 해야 할 것은 공유 메모리에 대한 개념을 아는 것이다.
쉽게 설명하자면, 공유 메모리는 '여러 프로세서들이 공유하여 사용할 수 있는 메모리'라는 것이다.
이게 왜 필요할까를 생각해보면, 각 프로그램들은 실행되면서 메모리를 사용하는데 자기 것만 사용할 수 있다.
이 메모리에는 그 프로그램이 사용하는 각종 명령어가 들어가 있다.
이러한 명령어가 필요한 다른 프로그램과 메모리를 공유할 수 있다면, 조금 더 빠른 명령어 처리가 가능할 것이다.
그래서 공유 메모리를 사용한다고 한다. (사실 이해는 조금 부족하다..)
간략하게 설명을 했지만, 저 정도만 알아보고 문제로 돌아오도록 하자.
우선 공유 메모리가 있는지 확인을 한다.
ipcs -m 명령어로 확인을 할 수 있고, /proc/sysvipc/shm 파일을 읽어 확인할 수도 있다고 한다.

<공유 메모리 확인> /tmp 디렉터리로 옮겨 공유 메모리를 사용할 수 있도록 코드를 작성해보자.
shm.c 라는 이름의 c 코드 파일을 생성한다.

<shm.c 파일 생성> shm.c 파일의 코드를 작성하자면 아래와 같다.
코드가 길지는 않지만, 사전 지식이 필요한 함수들이 있다. (shmget, shmat, shmdt)
이것들의 의미는 공유 메모리를 위한 공간 생성, 공유 메모리에 접근, 그 후 공유 메모리와 분리하는 함수이다.
이번에는 공유 메모리를 이용한 문제에 대한 내용만 다룰 뿐, 함수 설명은 하지 않겠다. (설명이 많이 길어진다.)
더 궁금하다면 열정을 갖고 구글링을 통해 알아보도록 하자.

<shm.c 코드의 내용> shm.c 파일을 컴파일한 후 실행시키면 Level 11로 가는 비밀번호가 나타난다.

<Level 11의 비밀번호> 이번 문제는 해결하는 데 이틀 정도가 걸린 것 같다.
풀이는 보지 않고, 공유 메모리의 개념과 그에 대한 예제들을 보며 공부하면서 풀다보니 오래 걸릴 수 밖에 없었다.
그 후 코드를 만들고 나서도 작동이 되지 않는 부분들이 있었다.
결국 그런 부분들을 다른 풀이들을 참고하여 풀 수 밖에 없어서 조금은 아쉬운 문제였다..
반응형'Wargame > F.T.Z' 카테고리의 다른 글
[F.T.Z] Level 12 (1) 2022.09.25 [F.T.Z] Level 11 (0) 2022.09.25 [F.T.Z] Level 9 (1) 2022.09.21 [F.T.Z] Level 8 (0) 2022.09.21 [F.T.Z] Level 7 (0) 2022.09.21