오른쪽  그림 밑의 메뉴에서 숫자를 클릭하시면 소설 "조금은 달콤한 러브송"의 원하시는 회를 볼수 있습니다.



"아니 괜찮아…… 상관 없어….. 그런데 뭘 만지고 있었던 거냐?"

태우는 고개를 빼꼼히 내밀고 모니터를 살피며 기대에 가득 찬 얼굴로 능청스럽게 웃어 됐다. 진우는 미안한 듯 모니터를 힐끗 쳐다보고는 태우를 정면에서 바라보며 고개를 끄덕였다.

"네, 암호를 못 푼다고 경고 메시지가 떠서요….. 몇 가지 파일들을 살펴 보던 중이에요…. 원본파일은 복사해 놓고 복사본을 살펴 본거니깐 원본파일에는 아무 이상 없을 거에요….."

태우는 여전히 싱글거리는 얼굴로 상관없다는 듯 말했다.

"어차피 원본 파일은 여러 개 백업해 놓고 사용하고 있으니깐…… 그런 건 신경 쓰지 않아도 돼 그런데 네가 보기엔 어떤 것 같아?"

진우는 태우가 자다 일어나 눈과 볼이 약간 부어 올라 있는 상태에서 연신 실실거리자 그 모습이 우습기도 했지만, 왜 이렇게 정신 빠진 사람처럼 실실 거리는지 그 이유도 궁금하기시작 했다. 이런 진우의 생각은 유진도 마찬가지로 갖고 있는 것이었다. 하지만 중희만은 이러한 태우의 태도에 대해 잘 이해하고 있었다. 사실 태우와 중희의 사이에선 모종의 계획이 오고 가 있었다.

며칠동안 이 둘은 잠 한숨 못 자고 일에만 매달려 있었다. 하지만 아무리 시간을 투자해도 암호화된 파일이 풀어질 기미가 보이질 않았다. 아니 가능성이 될 만한 실마리를 찾아낼 가능성 조차도 보이지가 않게 됐다, 태우는 자신이 알고 있는 지식과 관련서적을 총 동원해 봤지만, 암호화를 풀 수 있는 어떠한 힌트도 나오질 않았다. 총장에게 큰 소리 쳤던, 2주라는 시간이 하루하루 다가 옴에 따라 태우는 1초를 알리는 초침소리가 자신의 목을 조여오는 듯한 느낌이 들 정도까지 압박감에 시달리게 되어 버렸다.

태우는 눈앞이 깜깜할 만큼 막막하던 차에 어쩔 수 없이 "차선책"이란 걸 사용하기로 결정 한 것이었다. 태우가 말하는 차선책은 당연히 진우라는 인재를 이용하는 것으로 대략적인 스토리는 중희가 진우를 끌고와 우연히 동아리실에서 풀리지 않는 암호화화 일을 발견하고 그것을 풀어낸 다는 것이었다. 물론 사전에 중희와 방법에 대해 의견을 나누었었다. 하지만 계획이라는 거에는 언제나…. 항상 변수가 따르게 마련이고, 오늘의 계획에서는 유진의 등장이 변수로 작용했던 것이었다.

태우는 원래부터 잠에 빠져 있는게 아니였기 때문에 진우와 중희가 들어오는 것과 유진이 들어오는 모든걸 다 알고 있었다. 태우는 유진의 등장에 다소 놀라워 했다. 특히나 유진이 갑자기 자신을 깨우기 시작하자 자신의 계획이 깨질까봐 두려워 지기 시작했다. 태우는 자신이 여기서 일어나게 된다면 당연히 진우가 컴퓨터의 암호를 풀어볼 생각은 안할 것이라 생각했기에 태우는 필사적으로 잠 들어 있는 척을 했던 것이었다. 진우는 눈을 깜빡이며 싱글거리고 있는 태우를 바라보며 천천히 입을 열었다.

"음.. 글쎄요….. 암호체계가 생각했던 것 보다 좀 복잡하긴 한 것 같아요, 입력받은 암호를 가지고 여러 연산과정을 거쳐서 코드를 만들어 놓은 것도 그렇고, 그 코드를 가지고 바이러스를 뷰어 하지 못하도록 암호화하는 방법을 사용한 것도 좀 특이하구요……"

태우는 진우의 입에서 낙담하는 소리가 나오자 싱글거렸던 얼굴을 굳히며 가볍게 한숨을 내뱉었다.

"역시 그렇지? 내가 생각하기에도 꽤나 똑똑한 놈이 머리를 300번 정도 굴려서 만들어 놓은 것 같아…… 이런 식으로 암호화를 시켜 버리면 설사 암호체계를 만든 소스를 입수했다고 치더라도 풀기가 거의 불가능하다고 생각 되는데 말이야, 아마 만든 당사자도 만들긴 했지만 풀어 지는 못할 껄……."

진우는 어느 정도 동의한다는 뜻에서 천천히 고개를 끄덕이며 턱을 쓰다듬었다.

"확실히 쉽지는 않겠지만, 그렇다고 이론적으로 깨기가 불가능한 건 아니에요……."

중희와 태우는 서로 마주보며 기뻐했다. 이들은 동시에 큰소리로 물었다.

"이론적으로는???"

진우는 이들이 갑자기 소리를 지르자 깜짝 놀라며 이들을 번갈아 쳐다보고는 잠시 멍하니 초롱초롱 빛나는 이들의 눈동자를 바라보고 있다가 천천히 고개를 끄덕이며 설명했다.

"네, 여기서 사용된 암호체계는 두 가지의 코드를 사용하여 만들어 졌는데……'

중희와 태우는 이번에도 진우의 설명이 끝나기도 전에 동시에 외쳤다.

"두 가지의 코드???"

진우는 중희와 태우가 갑자기 흥분하듯 목소리가 들떠져 있자 이해 못하겠다는 듯 멍하니 이들을 두리 번 거리다 설명했다.

"네…… 하나는 입력 받은 암호가 뷰어전에 걸린 암호와 같은지를 비교하는데 쓰이도록 만들어 놓은 코드 그러니깐 해독 자체에는 전혀 관여하지 않고 단순히 뷰어하기 전에 입력받은 암호와 저장할 때 입력받은 암호를 비교하는 역할을 하는 코드죠…… 이 코드의 역할은 암호를 푸는 코드를 가지고 암호를 비교한다고 하면 뷰어가 가능하도록 푸는 코드가 화일에 저장되어 있어야 하니깐 파일 안에 저장된 코드를 가지고 뷰어를 할 수 있도록 진행 시켜주는 역할을 하는 코드 그러니깐 쉽게 말하면 화일에 저장된 결과를 비교하여 같을 경우 뷰어를 할수 있게 진행하는 작업으로 넘어가고 틀릴 경우에 암호가 틀리다는 메시지를 출력하고 뷰어 진행을 취소하는 거에요…… 그리고 다른 하나의 코드는 암호화를 푸는 데 쓰이는 코드라고 보면 되는데….. 가장 중요한 코드라고 할 수 있죠…… 이 코드는 따로 화일에 저장되지는 않고 단지 암호를 입력 받아 입력 받은 코드를 가지고 여러 연산을 하여 만들어지고, 암호를 넣어서 파일을 저장 할 때, 아니면 암호를 입력받아 불러 올 때 계산을 해서 암호화하여 화일을 저장하거나 암호화된 화일을 풀어 뷰어 할 때 잠깐 동안 생성되어 졌다가 없어지는 코드에요."

중희는 진우의 긴 설명을 들었지만 잘 이해가 안가는 듯 머리를 긁적였다. 태우는 그래도 중희보다는 더 많은걸 이해하고 더 가깝게 접근하기는 했지만, 완벽하게 이해가 가지는 않는 듯 눈을 이리저리 굴리며 진우의 설명을 되새기고 있었다. 유진은 말 할 것도 없이 이들의 대화내용을 전혀 이해 못하고 있었지만 그래도 왠지 진우가 대단한 것처럼 느껴졌다. 진우는 친절하게도 컴퓨터 의자에 앉으며 직접 프로그램을 코딩해가며 설명했다.

"그러니깐 처음에 말한 비교하는데 사용되는 코드가 16bit, 즉 2바이트의 정수로 이루어져있어요, 수로 친다면 0~65535의 값이겠죠, 이 코드를 구하는 루틴을 만들어보면은……"

진우는 말을 하며 키보드위에 손을 얹어 놓고는 빠르게 움직여 코딩을 하기 시작했다.

unsigned int get_comparing_code()
{
unsigned int cc=0,offs=0;
while(password[offs]==0);
……………………………………….
…………………………………………
…………………………………………
………………………………………….
………………………………………..
}

{

cc%=0xff00;
cc+=0x55;
return(cc);

}


진우는 잠깐 사이에 100줄 정도의 코딩을 완성시키고는 다시 설명했다.

"간단하죠? 이런 코드가 바이러스 offset에 저장되어 있는 거에요….. 그리고 또 다른 코드도 위의 코드와 마찬가지로 16bit, 2바이트의 정수로 이루어져있는데….. 역시 수로 친다면 0~65535의 값이 되는데 이 코드의 제작법도 좀전에 만든 코드와 만드는 법이 매우 비슷해요 단 만들 때는 비트 연산 중회전(Rotate)라는 연산을 사용한다는 거죠"

진우는 태우와 중희가 코드를 살펴 볼 수 있도록 잠시 여유를 두었다가 다시 설명했다.

"그런데 문제는 해독코드를 입력 받아서 암호를 푸는 것이 아니에요… 암호 문자열을 받아 연산을 거쳐 비교코드를 만든 후에 비교코드와 비교하고 그 후에 해독코드로 화일을 풀게 되어 있어서 해독코드만 알게 되면 비교코드를 모르게 되어 암호가 틀렸다는 메시지를 받을 것이고 비교코드만 알게 된다면 해독코드로 풀을 때는 저장된 메시지를 출력하는 에러가 나오게 되어 있죠…… 그러니깐 우선 해독코드를 구하게 되었을때 문자열을 어떻게 든간에 무작위로 만들어서 그 문자열로 해독코드를 구했을 때 맞아 떨어지는 문자열을 기억한 후에 그 문자열로 비교코드를 계산으로 구하여 암호가 걸린 헤더 부분의 비교코드가 있는 곳에 써 넣으면 되는 거에요… 그런 후에 파일을 뷰어 할 때 구한 문자열을 입력하면 암호는 풀리게 되는 것이죠……”

태우는 잠시 생각하더니 궁금한 듯 물었다.

"음, 그렇게 하면 암호해독코드를 구하는 것에서 문제가 생기지 않을까? 해독코드를 일일이 만들어서 문서 데이타를 풀어나갈 때 풀린 문서 데이타가 맞는 것인지를 알아낼 방법이 없게 되잖아????"

진우는 담담히 웃으며 고개를 끄덕였다.

"네, 분명히 그래요… 이런 경우는 암호화 데이타 영역의 구조를 알아야만 하는데 해커녀석이 사용한 암호화 데이터의 화일 구조를 구할 길이 없죠 하지만 이런 식의 암호화에는 커다란 구멍이 있어요……"

"구멍???"

"네, 시작되는 혜더부분에 암호가 들어가고, 거기서 엔터키 코드가 들어가도록 되어 있거든요…… 이후에 소스 내용이 그 뒤를 따라오게 만들어 놓은 형식이니깐 암호화를 풀려면 다른 건 필요 없고…… 이 규칙성만 따져 보면 되요 그러니깐 바이러스파일에 처음 나오는 앤터키 코드값을 찾아내서 이전 부분에 있는 숫자나 문자 같은 그러니깐 암호를 이루고 있는 문자는 무시해 버리고, 그 뒷부분만을 읽어 들이면 여기에 걸려져 있는 암호는 해독할 필요조차 없어지게 되는 거죠……"
태우와 중희는 진우의 설명에 짐작가는 게 있었던지 손바닥을 치며 동시에 외쳤다.

"암호 자체를 해독하는 것이 아니라, 아예 건너 뛰어버리면 되는구나!!!"

진우는 피식 웃으며 고개를 끄덕인 후에 덧붙였다.

"맞아요….. 그래서 바이러스 파일을 역 엔지니어링 그러니깐 디스어셈블링과 디버깅 기법을 이용해서 암호 체제를 아예 무시하고 바이러스 에디트를을 읽어들이도록 개조한 프로그램을 만들면 된다는거죠……"

중희와 태우는 서로 마주보며 어이없다는 듯 한숨을 내쉬었다.

"아, 우리는 왜 진작 그런 생각을 못 한거지!, 벌써 며칠째 고생고생 해도 못 푼걸 이렇게 간단히 풀어 버리다니….."

"해킹이나 크랙의 기본은 발상의 전환이 중요해요… 고지식하게 정통만 주장하다가는 제자리에 머물 수밖에 없죠……"

태우는 잠시 턱을 만지며 무엇을 생각하는지 싱글 벙글거렸다. 유진은 잘은 모르지만 일이 잘 풀려 나가고 있는 분위기를 느꼈던지 활짝 웃었다.

"이제 시스템을 복구 시킬수 있는거에요??"

태우는 걱정 없다는 듯 말했다.

"바이러스 코드만 뷰어 할 수 있으면 백신을 만드는 건 어려운 게 아니니깐……"

유진은 여전히 웃는 얼굴로 놀랍다는 듯 진우를 바라봤다.

"게임즈 프로그래머 3명이서 며칠동안 매달린 일을 이렇게 간단히 해결하다니......진우 정말 대단한가 보네….."

진우는 유진의 칭찬에 머쓱하게 웃었다. 유진은 커다란 눈으로 진우를 뚫어져라 바라보다가 고개를 돌려 태우에게 물었다.

"오빠 포상금 타면 진우몫도......"

태우는 갑자기 큰 소리를 내어 웃으며 유진의 말을 막고는 진우를 향해 말했다.

"하하하하, 그런데, 진우 네가 여기엔 무슨일로 온거야? 다음 수업 준비 안해도 되냐??"

진우는 그때서 자신의 목적을 깨달았는지 손바닥을 치며 중희를 바라봤다.

"아참!! 밥 먹으러 가는 도중에 잠깐 들린 거였는데……
"
태우는 과장되게 놀라는 척 하며 중희의 어깨를 툭툭쳤다.

"뭐야 그런거 였어?? 네놈이 또 사람을 기다리게 했구나…… 배고플 텐데 어서 가서 밥 먹어야지…… 끼니는 시간에 맞쳐 꼬박꼬박 챙겨먹어야지 안그러면 속 다 버린다구…… 난 괜찮으니깐 어서어서 가봐~~ "

태우는 거의 떠밀 듯 진우와 중희를 내 몰았다.

"아차, 그러고 보니 우리 3시에 수업 있잖아…… 서둘러서 밥 먹지 않으면 지각이라구 지각!"

중희는 사전 계획대로 태우의 행동에 동참하여 동아리실을 벗어나는데 협조하고 있었다. 진우는 동아리실에 걸려 있는 시계를 힐끗 바라보자 확실히 중희의 외침대로 서두르지 않으면 딱 지각할 여유 밖에 없었는지라 태우에게 순순히 떠밀려 나오면 인사했다.

"그럼, 저는 이만 가볼께요……"

유진은 얼떨떨해 하며 손을 흔들어 작별하고는 진우와 중희 모습이 사라지자 태우에게 따지듯 물었다.

"오빠 혹시?...... 포상금을 진우에게 나눠주는 게 아까워서 내 말을 막고…… 진우를 쫒아내듯 동아리실에서 내보낸 거에요?"

유진은 말을 하면서 어이없다는 듯 입을 떡 하니 벌렸다. 태우는 별거 아니라는 듯 회의용테이블 위에 앉으며 종이봉지에 담겨 진 빵 하나를 집어 입에 덮썩 물었다.

"돈이라는건 말이야…… 노동의 댓가로 받아야 하는거야…… 그래야 돈의 귀함을 알 수가 있지…… 우리처럼 며칠 동안 육체를 혹사시켜 가면서 버는 돈이야 말로 진정으로 값진 돈이라 할 수 있어……"

태우는 말을 중단하고는 한움큼 베어문 빵을 우적우적 씹으며 다시 설명했다.

"겨우 잠깐 동안 머리 굴렸다는 댓가로, 돈을 나눠 쓰기엔 포상금이 너무 적다구, 나중에 포상금 타면 성의 표시로 작은 기념품 하나 사주면 되지 뭐……"

"전부터 오빠가 진우 스카웃 한다.. 뭐 한다 그랬잖아요… 이참에 아예 진우를 우리 동아리에 가입시키면 되잖아… 그럼 따로 돈을 배분할 필요도 없이, 동아리 운영비로 사용하면 될 텐데…… "

태우는 유진의 설명에 아차 싶었는지, 입안에서 빵을 씹던 채로 얼이 빠진 사람처럼 멍하니 생각하다가 손가락을 튕기며 중얼거렸다.

"아차차차!!! 내가 왜 진작 그 생각을 못했지……. 억지로 계획을 짜내서 이용할 필요 없이….. 애시당초 내 밑으로 끌여 들여와서 그냥 부려먹으면 되는 거였는데 말이야……"

<다음회에 계속>





블로그 내용이 마음에 드시면 한 RSS 리더기로 구독해 주세요







◀ Prev 1  ... 263 264 265 266 267 268 269 270 271  ... 466  Next ▶

카테고리

분류 전체보기 (466)
IT (209)
게임 (109)
블로그 (11)
경제,경영 (2)
창작의 세계 (9)
마음의 등불 (37)
게임 왜 재미있을까? (2)
조금은 달콤한 러브송 (67)
잡학 (15)
Daum 블로거기자상 엠블럼


유쾌한 멀티라이터

멀티라이터's Blog is powered by Tattertools / Supported by Tatter & Media
Copyright by 멀티라이터 [ http://www.ringblog.com ]. All rights reserved.

Tattertools Tatter & Media DesignMyself!
멀티라이터's Blog is powered by Textcube. Designed by Qwer999. Supported by Tatter & Media.