원글:https://arca.live/b/textgame/26904008 

번역본: https://arca.live/b/textgame/26310764

원본: https://www.reddit.com/r/nsfwcyoa/comments/c2t5t0/cyoa_god_academy_v03_feedback_needed/



이 CYOA를 굉장히 재미있게 플레이 했는데 여기에 숨겨진 요소까지 있다고 해서 좀 파봤음

숨겨진 요소까지 다 말하는 글이라서 해볼사람은 먼저 해보고 오길 권함




평범하게 고퀄 CYOA라고 생각하고 하는데 떡밥을 뿌림


갑자기 도와달라고 하면서 .zip 가 있다.

이젠 텍붕이들에게 너무 익숙한 방법으로 파일을 감춰 놓음


파일의 내용물은 이렇게 되어 있고 저 index.html을 실행

이런 콘솔창이 나옴


이제 ID와 비번이 필요한데 이건 번역본에는 없는 캐릭터를 고르는 장면에 나와

같이 데려갈 캐릭을 정하는 내용인데 다 번역하기는 귀찮고 그 중에 2명만 번역해옴



저 마법사가 플뢰르인데 사진 밑에 보면 반전된 링크가 보임 그걸 따라가면

대충 강간범 신이 보지 안았으면 좋겠다는 내용과 아이디 비번을 준다

ID: CYOAgod

pw: admin

여기부터는 각자 해봐라


암호 해석하면 나오는 소스에 내용들

엔딩을 본 사람들은 알겠지만 여기에 몇 개 파일들이 있음.

결국 플뢰르 풀어주는 것만 해보고 껐는데 해석된 소스를 보니 파일 내용도 다 있더라.

이건 플뢰르 대사


reina_read_this.txt 

"You better not try telling this sick fuck about our little bet. If he decides to take you with him on his own, it's your win and you belong to him now.But if he declines, or you let him know that you want to run from me, you're going back to being my little toy, you understand?"

"이 빌어먹을 놈에게 우리 작은 내기에 대해 말하지 않는 게 좋을 거야. 만약 그가 독자적으로 너를 데려가기로 결정한다면, 그것은 너의 승리이고 너는 이제 그의 소유다. 하지만 만약 그가 거절하거나, 니가 나에게서 도망치고 싶어한다는 것을 그에게 알려주면, 너는 나의 작은 장난감으로 돌아갈 거야, 알아들었어?"


이래서 직접 말하는 거를 못한 듯

whatdimension.exe

Retrieving information about current dimension...\\r\\nName:\\tcaf\\u00e9\\r\\nOwner:\\tCYOAgod\\r\\nDesc:\\tA very small and cozy dimension, usefull for intimate meetings.'

현재 차원에 대한 정보를 검색하는 중... 매우 작고 아늑한 차원으로, 친밀한 만남에 충분히 사용됩니다.


reina의 버전...은 사실상 거의 똑같음

releaseFleur = function() {

            output(`permission denied, user ${userLogin} does not have administrator rights`);

            return false;

        };

하지만 reina의 계정으로는 플뢰르를 풀어주려고 하면 권한이 없다는 애러가 뜬다는 정도가 다름




+reina 계정 찾기 (의식의 흐름)

사실 이 글 쓴 이유가 이거임

어떻게 퍼진 건지는 모르겠는데 CYOAgod 계정 말고 reina의 계정이 있다고 해

실제로 레이나의 계정이 있는데 비밀번호에 대한 어떠한 힌트도 찾을 수가 없어

레딧에 비번을 언급한건 다 지워버린 것 같더라

제작자가 사실 레이나 계정엔 별거 없고 그냥 할당만 해놓은 느낌이라고 하더라.

그래도 궁금하니까 레이나의 비번을 찾아보기로 했음


먼저 소스를 열어보기로 함




eval은 받은 문자열을 js code 취급해서 실행을 하는 함수임.

그런데 실행되는 내용이 아래처럼 암호화 되어 있고 복원 과정은 아이디 암호가 필요해

try 는 catch는 원래 '함 해보고(try) 애러나면 처리(catch)해라' 이런 건데 catch가 비어있음

즉 얜 저 애러를 처리할 생각이 없다는 말임.

그래서 어디서 애러가 나는지를 확인해 보니 저 decrypt 함수의 마지막에 있는 atob라는 함수가 애러가 남

atob는 base64 암호를 복호해주는 함수야. 그런데 decrypt 를 보면 내가 입력한 값을 한번씩 더해주고 있어

예) "CYOAgodadminCYOAgodadminCYOAgodadminCYOAgodadmin..." 이걸 계속 더해줌

즉 내가 제작자의 의도와 다른 문자열을 입력하면 이상하게 더하고, 그러면 base64입장에서 이상한 내용이 와서 애러가 나는 것.


그래서 파이썬으로 모든 경우의 수를 넣어보고 base64로 해독이 되는지 여부로 노가다를 시작함

CYOAgod의 비번이 admin 5글자였으니 얘도 5글자라고 생각함.

a~z 와 0~9 까지를 5개 무작위로 골라서 다 넣어봄


약 6000만 개의 비번을 보았지만, 그 중에 reina의 비번은 없었어.

원인은 5글자가 아니거나, 대문자A~Z도 포함이 되었다.

이 모든 경우의 수를 찾기엔 너무 경우의 수가 많았어. 그래서 레딧을 다시 읽어봄


"복호화된 코드는 CYOAgod의 것과 reina의 것이 같습니다. "


원문이 같다는 것을 알았으니 문제가 너무 쉬워졌다.

일단 우리는 "reina******reina**** ..." 이렇게 반복되는 것을 알고 있다.

문제는 ****이 몇글자인지 뭔지를 몰랐는데, 이제 원문을 아니 반복되는 부분을 찾으면 됨


위에건 CYOAgod의 계정의 내용이야. 보면 +알파는 원문이 31보다 작으면 더해줘

제작자의 말대로라면 저 원문 부분이 reina도 똑같다고 한다.

'reinarrrrrrr' 로 넣으면 언젠가 문장이 반복되면서 r중에 하나가 맞게 되겠지

알파는 0이거나 95만 가능한데 저 4칸은 값이 이상함

즉 암호는 4글자고 저 알파를 제대로 맞춰보면


암호는 49, 50 51,52 야

아스키 코드표를 보면


?

ㅅㅂ 1234임