Top Coder RAW novel - Chapter (30)
탑 코더-30화(30/303)
# 30
더 게이트
────────────────
“다들 잠시 주목해주시기 바랍니다.”
최기훈의 말에 자리에 앉아 있던 개발자들이 고개를 돌렸다. 그 중에는 황시내도 있었다.
‘또 무슨 일이지.’
최기훈이 한 차례 시선을 훑은 후 말을 이었다.
“지난 번 예정했던 강승호 부장의 사내 스터디 모임의 구체적인 내용이 나왔습니다.”
포트의 코드 제로에서 3시간 만에 1등급을 받았다. 그때의 충격이 아직 직원들의 머릿속에 남아 있었다. 다들 귀를 쫑긋 세우고, 눈을 반짝였다.
“일단 스터디 내용은 회사의 신규 사업인 보안. 목표는 더 게이트 우승.”
촤기훈이 짧고 간결하게 내용을 요약했다. 직원들 사이에 있던 황시내도 눈을 반짝이며 최기훈의 옆에 서 있는 승호를 보았다.
‘더 게이트 우승?’
다른 직원들도 비슷한 의문을 가졌다. 몇몇은 더 게이트가 무엇인지 몰랐다. 몇몇은 알고 있기에 의문을 가졌다.
우승?
최기훈이 옆에 있는 승호를 가리키며 말했다.
“다들 의문이 많을 거라 생각합니다. 보안이라는 생소한 분야를 어떻게 공부할 것이며, 곧 열리는 더 게이트에서 우승을 한다는 게 과연 될 만한 일인가? 그 답은 여기 승호가 해줄 겁니다.”
승호가 한 발 앞으로 내디디며 말했다.
“먼저 제가 준비한 것부터 보여 드리겠습니다.”
승호는 핸드폰에서 포트의 음성인식 기능을 실행시켰다.
“실행시켜줘.”
-네. 알겠습니다.
그 말이 끝나자 가장 먼저 황시내의 핸드폰에서 ‘띵’하는 소리가 울렸다. 황시내가 핸드폰 화면을 열어보았으나, 아무런 문자나 바톡. 전화가 온 것이 없었다. 이상한 일은 그 다음에 일어났다. 옆에 있던 다른 동료의 핸드폰에서 같은 소리가 났다.
띵.
그리고 또.
띵.
직원들의 핸드폰에서 ‘띵’ 소리가 연속해서 울려 퍼졌다. 그 소리를 듣고 있던 누군가가 중얼거렸다.
“애국가?”
승호가 엷은 미소를 띠며 고개를 끄덕였다.
“오늘 일찍 출근해 공유기에 악성코드를 하나 심어놓았습니다. 와이파이를 사용하기 위해 공유기에 접속하는 순간 해당 코드를 다운로드 받게 되고, 방금 제 명령에 코드가 실행된 겁니다.”
그 사이에도 핸드폰 연주는 끝나지 않고 이어졌다.
띵.
띠이잉.
띵띵띵.
직원들의 핸드폰에서 울리는 소리에 황시내가 마른 침을 삼켰다. 다른 직원들의 반응도 마찬가지였다. 지난 번 승호가 보여준 코딩 쇼가 경이로웠다면, 지금은 약간의 두려움이 느껴졌다.
“아마 너무 쉽게 해킹을 당해 어리둥절하신 분들도 있을 겁니다. 그러나 이 안에는 엔드로이드 커널 단에 대한 이해. 공유기 메커니즘 파악. 그리고 엔드로이드 프레임웍에 대한 이해 등등 다양한 기술이 접목 되어 있어 대단히 복잡한 일입니다.”
정적이 흐르는 사무실에서 승호만이 입을 열었다.
“더 게이트에 대해 아시는 분이라면 결코 쉬운 일이 아니라고 생각 할 겁니다. 그러나 절 믿고 따라와 보시면 결코 후회하시지는 않을 겁니다.”
짝.
최기훈이 박수를 치며 사무실 분위기를 환기 시켰다.
“상세한 내용은 메일로 보냈으니까. 관심 있는 사람들은 퇴근하고 남아요. 강 부장은 공유기 다시 원래대로 돌려놓고.”
“알겠습니다.”
그 말을 끝으로 공지사항 전달은 끝났지만 놀란 사람들은 쉬이 정신을 차리지 못했다.
점심시간.
사람들이 삼삼오오 모여 대화를 나누고 있었다.
“승호, 아, 아니. 강 부장님 말이야. 아까 봤냐? 실행시켜줘. 할 때?”
“멋있더라.”
“나는 처음에 뭔가 했어. 그런데 핸드폰에서 애국가가 흘러나올 줄이야!”
“그래서 어쩔 거야? 퇴근하고 스터디 참가할거냐?”
“하고는 싶은데. 각오하라는 그 말이 마음에 걸린다. 분명 성장 기회이긴 한데.”
“난 해보려고. 포트 1등급 실력자가 직접해주는 보안 기술 교육. 돈 주고도 못 받아.”
“그래도 눈빛 보니까. 장난 아니던데. 거의 퇴근 안 시킬 기세야.”
“어쩐지. 회의실에 라꾸라꾸 배달 왔더라.”
함께 있던 황시내도 대화에 참여했다.
“그래도 한번 해보는 게 낫지 않아요? 더 게이트 우승. 그 경력을 가질 수도 있잖아요.”
“그거 내가 잠깐 알아봤는데, 팀 전으로 하는 이유가 있었어. 난이도가 엄청나서, 혼자서는 거의 불가능하다고 하던데? 본선 진출만 해도 대단한 거지.”
안 된다는 말에 황시내는 이상하게 불끈 반발심이 일어났다.
“아까 보셨잖아요. 공유기에 코드 심어서 핸드폰으로 애국가 실행시키는 거. 저는 왠지 우승할 수 있을 것 같아요.”
“아무리 그래도 우승까지야······.”
“대리님이 모르셔서 그렇지. 강 부장님이 얼마나 대단하신데요.
말을 하던 황시내가 조용히 입을 다물었다. 직원들이 이상한 눈빛으로 자신을 쳐다보고 있었다.
“시내씨 강 부장님 편을 엄청 드네. 혹시······.”
황시내가 어색하게 웃으며 자리에서 일어났다.
“헤헤, 대리님 커피 잘 마셨어요. 내일은 제가 살게요.”
“어, 어디가. 하던 말은 끝내고 가야지.”
“아··· 제가 팀장님이 맡긴 일이 있었는데 깜박하고 있었어요. 빨리 올라가서 처리해야지.”
황시내가 슬금슬금 뒷걸음 질 쳤다. 대화를 나누던 문호경 대리가 황시내를 한 번 더 불렀다.
“야, 야!”
도망치던 황시내가 목청을 높여 대답했다.
“그리고 편드는 거 아니에요. 팩트, 팩트만 말한 겁니다. 천천히 올라오세요!”
그러고는 엘리베이터를 타는 곳으로 쏙 들어가 버렸다.
퇴근시간.
총 8명의 사람들이 집으로 돌아가지 않고 남아 있었다. 그 속에는 황시내도 있었다.
-먼저 전년도 더 게이트 예선전 문제를 풀며, 각자의 수준 확인 시간을 가지겠습니다. 문제는 제가 아침에 설치한 악성코드 앱을 리버싱하여. 특정키를 찾아내는 것입니다.
-정답을 찾아 앱을 실행한 후 해당키를 넣으면 정답 표시가 화면에 뜰 겁니다.
그렇게 문제 하나를 내준 채 승호는 자신의 자리에 앉아 일에 몰두 했다. 황시내는 구시렁거리며 가장 먼저 포트에 접속했다.
‘이걸 도대체 어떻게 하라는 거야.’
-엔드로이드 앱 리버싱.
검색어를 입력하자 다양한 방법들이 결과에 노출되었다.
-실제 앱 해부해보기 : 엔드로이드 리버스 엔지니어링-엔드로이드 리버싱 헬로우 월드-나만의 정보 창고. 엔드로이드 디컴파일.
-apk 리버싱 간단하게 해결!
-엔드로이드 앱 해킹. apk 추출하기.
황시내는 가장 위에 노출된 검색 정보를 클릭했다. 해당 웹 페이지에는 엔드로이드에 설치된 앱에서 소스를 추출하는 방법이 자세하게 설명되어 있었다.
‘먼저 apk 파일을 컴퓨터로 옮겨서 확장자를 zip으로 바꿔 압축을 풀면.’
그대로 따라하자 정말 압축이 풀리며 컴파일 된 파일들이 나타났다.
‘그 다음은 dex4jar 파일을 다운 받아서 압축을 출고, 거기에 classes 파일을 가져와서 붙여넣기 하고, dex4jar.1.jar을 이용해서 디컴피일을 해라.’
황시내는 차근차근 순서대로 진행했다. 가장 마지막 단계가 jd-console라는 프로그램으로 최종적으로 추출된 jar 파일을 보는 것.
그대로 따라 하자 화면에 정말 자바 코드들이 나타났다.
“됐다!”
박수를 치며 활짝 웃었다. 순간 자신이 어디에 있는지 깨닫고는 슬쩍 눈치를 살피며 손을 내렸다.
‘윽.’
목소리가 너무 컸다. 일을 하던 승호가 고개를 돌려 자신을 보고 있었다. 결국 두 눈이 마주쳤다. 황시내는 왠지 입안이 바짝 말라감을 느껴야 했다.
승호가 자리에서 일어났다.
황시내의 동공이 지진이 난 것처럼 흔들렸다. 황시내에게 가까이 다가간 승호가 몸을 숙이며 물었다.
“진행이 좀 되나 봐요?”
두근.
두근.
황시내의 두 볼이 엷은 홍조를 띄었다. 당황한 황시내가 말을 더듬었다.
“이, 일단 리버싱에는 성공했어요.”
“역시 시내씨라면 할 수 있을 거라 생각했습니다.”
화악.
승호의 격려는 황시내의 심장을 더욱 격하게 뛰도록 만들었다. 승호가 조금 더 몸을 숙이며 모니터를 보았다.
“한 번 볼까요.”
톡 쏘는 남자 스킨 냄새가 황시내의 코끝을 자극했다.
“자, 잠시 만요.”
황시내가 화면에 자바 파일들을 띄웠다. 승호가 눈을 가늘게 뜨며 파일을 살폈다.
“지금까지는 인터넷을 찾으면 누구나 할 수 있는 내용입니다. 여기부터가 진짜 문제예요.”
“아, 알겠어요.”
“뭔가 이상한 점이 있다면 불러 주세요. 말씀드렸다 시피 오늘은 질문은 받지 않을 거라서.”
황시내가 고개를 끄덕였다. 승호는 다시 자리로 돌아가 앉았다.
“···네.”
부장으로 진급하면서 황시내의 옆 자리에서 최기훈의 근처로 책상이 옮겨졌다. 거리가 멀어진 것이다. 자리로 돌아가는 승호를 보는 황시내의 눈길에는 아쉬움이 가득했다.
자리로 돌아온 승호가 고개를 들어 사무실을 훑었다. XONE 납품을 위해 선진에 파견 가 있는 6명을 제외하고, 8명이 관심이 있다며 남아 있었다.
저녁 8시가 된 지금.
2명이 가고 6명이 남아 열심히 무언가를 하고 있었다. 그러나 아직 까지 답을 찾은 사람은 없었다. 역시나 승호의 예상대로였다.
‘겨우 120 포인트짜리 문제를 한 시간이 지나도록 풀지 못했어.’
전년도 1등이 받은 점수가 1800포인트.
우승을 하기 위해서는 500 포인트 문제를 24시간 안에 최소 4개는 풀어야한다.
포인트가 높아질수록 문제의 난이도는 기하급수적으로 올라간다. 120 포인트 문제를 푸는데 한 시간 이상을 소요하면 우승하기 힘들다는 말이었다.
‘역시 예상대로구나.’
승호는 아쉬움에 입맛을 다셨다. 구색을 맞춰 4명으로 팀을 이룬다 해도 큰 기대는 하 기 힘들 것 같았다. 그렇다면 결국 자신의 힘으로 예선을 통과해 본선을 거쳐 최종 우승을 해야 한다는 뜻이었다.
‘할 수 없지.’
승호는 기대를 접은 채 현재 자신이 해야 하는 일.
코드 난독화 모듈의 범용성 확장에 골몰했다.
저녁 9시.
저녁 10시.
저녁 11시.
하나 둘씩 포기한 채 퇴근했다. 승호는 괜찮다는 격려로 직원들을 배웅했다. 그렇게 밤 12시가 되었다. 그때 까지 남아 있는 건 총 3명.
다들 피곤한 기색이 역력했다. 승호가 다시 자리에서 일어나 입을 열었다.
“지금 까지 하신 결과물은 제 메일로 보내주시고, 퇴근하셔도 됩니다.”
승호의 말에 하나 둘씩 자리에서 일어났다. 그러나 황시내 만은 자리에서 일어나지 않았다.
“시내씨, 시간이 늦었습니다. 사장님이 걱정하세요.”
“저는 괜찮으니까. 먼저 가셔도 되요.”
밤 12시.
승호도 피곤했다. 굳이 더 이상 권유하지 않았다.
“그러면 먼저 가보겠습니다. 일찍 들어가세요.”
황시내는 모니터에서 고개도 돌리지 않았다. 나머지 직원들도 하나 둘씩 사무실을 나섰다.
다음날.
승호는 가장 먼저 사무실에 출근했다. 당연히 아무도 없을 것이라 생각했다. 그러나 한 사람이 자리에 엎드려 있었다.
“시내씨?”
어젯밤 밤을 샜는지 책상 주변에는 주전부리가 널브러져 있었다. 황시내의 어깨를 살짝 건드렸다.
“아침이에요.”
“우웅······.”
“일어나셔야 할 것 같습니다. 곧 사람들 출근합니다.”
“나··· 피곤해. 어제 밤새웠단 말이야.”
“네?”
“우웅.”
또다시 혼잣말을 웅얼거리며 몸을 뒤척거리던 황시내가 갑자기 벌떡 고개를 들었다. 그리고 승호와 딱 눈이 마주쳤다.
“아··· 어, 아?”
황시내가 의미를 알 수 없는 소리를 중얼 거렸다.
“어제, 밤 새셨나 봐요.”
빙그르르.
눈을 굴리던 황시내가 자신의 몰골을 깨닫고는 급히 자리에 엎드렸다. 그 모습에 승호가 픽 하고 웃음을 흘렸다.
“괜찮습니다. 밤샌 사람처럼 보이지 않아요.”
황시내가 책상에 엎드린 채 입을 열었다.
“저, 정말이요?”
“네.”
“히잉··· 나 세수도 못했는데.”
“밤 까지 새워서 노력하신 결과는 있었나 보네요. 잠시 모니터를 봤는데 익숙한 글자가 보이더라고요.”
“아! 맞다!”
정신을 차린 황시내가 다시 고개를 들었다. 그리고 모니터를 손으로 가리키며 말했다.
“We can do it. 이거 맞죠? 부장님이 숨겨 놓은 키.”
“오∼.”
승호가 동그랗게 입을 오므리고, 감탄사를 흘렸다. 황시내가 의기양양하게 허리에 척 손을 짚었다.
“제가 찾았습니다!”
“맞습니다. 제가 원했던 답 그대로네요.”
“방법을 몰라서 그렇지 알고 나니 간단하더라고요. 앱의 edit창에 사용자가 값을 입력하고, pass 버튼을 눌렀을 때의 처리 부분을 집중 적으로 살피다 보니 답이 나오더라고요.”
문제를 풀었다는 희열에 잔뜩 흥분한 황시내가 빠르게 말을 이었다.
“얼마나 꼬아 놨는지 사실 중간에 때려 칠 뻔했는데··· 아. 진짜로 때려 친다는 뜻은 아니고요. 꼬인 걸 풀고, 또 풀어내니까. 결국 답이 나오더라고요.”
말을 마친 황시내가 기분 좋은 웃음을 흘렸다.
“헤헤.”
마치 칭찬을 바라는 아이의 모습 같았다. 승호는 그 모습이 귀여워 살짝 미소 지었다.
“어제 문제는 몸 풀기 용이었습니다. 오늘부터 본격적으로 시작할 테니까. 단단히 각오하는 게 좋을 거예요.”
승호는 일부러 살짝 엄포를 놓았다. 실제로도 빡빡한 커리큘럼을 준비해 두었다.
“넵! 각오 됐습니다!”
그 말을 끝으로 승호가 자리로 돌아갔다. 뿌듯함에 활짝 웃던 황시내도 몰려오는 피곤을 이기지 못하고 길게 하품을 하며 화장실로 향했다.