FTZ Level10 Write-up(FTZ Level10 풀이)
문제 10번 시작합니다!
힌트를 보니 공유메모리를 이용해 대화를 나누고 있다고하는군요!
이번 문제는 구글 검색 능력과 약간의 C능력만 있으면 풀 수 있는 문제인 것 같습니다!
먼저 공유메모리에 대한 설명을 보시죠!
shmget() 함수는 공유 메모리를 생성합니다.
공유 메모리는 단어 뜻에서 알 수 있듯이 하나의 프로세스에서가 아니라 여러 프로세스가 함께 사용하는 메모리를 말합니다. 이 공유 메모리를 이용하면 프로세스끼리 통신을 할 수 있으며, 같은 데이터를 공유할 수 있습니다.
이렇게 같은 메모리 영역을 공유하기 위해서는 공유 메모리를 생성한 후에 프로세스의 자신의 영역에 첨부를 한 후에 마치 자신의 메모리를 사용하듯 사용합니다.
즉, 공유 메모리를 사용하기 위해서는 공유 메모리를 생성한 후에, 이 메모리가 필요한 프로세스는 필요할 때 마다 자신의 프로세스에 첨부를 한 후에 다른 메모리를 사용하듯 사용하면 되겠습니다.
설명 및 이미지 출처 : http://forum.falinux.com/zbxe/index.php?mid=C_LIB&document_srl=423456
그럼 공유메모리를 읽는 코드를 작성해보도록 하겠습니다! 가장 중요한건 특정한 Key 값인데 친절히 hint에서 제공해주고 있군요!
아래와 같이 간단하게 짤 수 있습니다!
소스코드는 이미지 출저에서 제공하는 소스를 제 코딩 스타일에 맞게 조금 변형하였습니다!
소스를 간단히 살펴보면 키값과 사이즈로 id값을 만들고 id값으로 해당 주소를 얻어와서 해당 주소를 문자열로 출력해주는 간단한 소스코드 같네요!
그래서 이걸 컴파일 하고 실행해보도록 하겠습니다!
$ gcc -o shareMem shareMem.c
실행시키면 패스워드를 친절히 구타가 알려주네요!
그럼 역시나 다음문제로 고고싱!