태그: CSOnline

넥슨게임, 자바스크립트를 통해 NGM 으로 게임 다운로드 하기

개요

636px-Nexon_Logo.svg.png

 

자바스크립트는 웹에서 사용하는 클라이언트에서 명령어를 처리하는 웹 언어중 하나다.

 

이 언어는 넥슨 웹사이트에서도 잘 쓰이고 있는데, 아래 설명할 자바스크립트 방식을 이용하면 된다.

 

넥슨 홈페이지는 이런 방식으로 게임 실행을 수행하기 때문에 이 방식을 통하면 여러 많은 정보를 유저가 직접 수행할 수 있다는 장점이 있다.

 

 

사용법

스크립트 실행전, 기초정보 확인

이미지_3.png

나는 카스온라인을 기준으로 정보를 알아냈다. 카스온라인의 게임 코드는 “73737” 이란 코드 이다.

이 코드를 기반으로 ‘역으로 다른 게임코드를 집어넣으면 어떻게 실행될 것인가?’ 에 대해서 실험을 해보았다. 당연히 성공.

그럼, 이 코드가 어떤식으로 불러와지는지를 확인하자.

게임 실행에 필요한 자바스크립트

이미지_5.png

넥슨 웹 홈페이지의 게임 시작은 아래와 같은 자바스크립트를 통해 실행이 되는것을 우리는 웹 홈페이지의 소스코드를 통해 확인할 수 있었다.

 

그럼 이 코드를 기반으로 역으로 다른 게임의 코드번호를 알아내는것이 가능할까?

 

가능은 하다. 하지만 찾는 노력이 필요하다.

 

이미지_4.png

나는 이 이미지를 촬영했을 당시, 서든어택2는 G-Star CBT 용으로만 가능했기 때문에 서든어택2의 게임 실행 코드를 넥슨 홈페이지에서 찾아서 이를 역으로 수행할 수 있도록 코드번호를 확인했다.

 

서든어택2의 게임 코드는 “74278” 이란 코드임을 확인했다.

이렇게 코드를 알아냈고, 게임 실행 자바스크립트도 알아냈는데, 현재 알아낸 스크립트 만으로는 게임 실행을 할 수 없다.

아래와 같은 방식으로 좀더 세부적으로 확인해야 게임 시작 스크립트가 어떤 방식으로 동작하는지를 확인할 수 있다.

실제로 자바스크립트를 수행하는 것을 알아보기

이미지_6.png

넥슨 홈페이지의 자바스크립트를 찾아본 결과, 위에 작성했던 스크립트인 GnxGameStartOnClick 이란 스크립트가 아래와 같은 코드를 통해 게임실행을 한다는것을 확인했다.

 

그렇다. 카스온라인 홈페이지에서는 게임 실행을 할 때, GnxGameStartOnClick(); 이란 스크립트를 이용하지만

 

이 스크립트는 PS.game.startGame({ gameCode: 73737 }); 라는 코드를 다시 불러와서 실제로 게임 실행을 시키는 것이다.

 

즉, gameCode 를 적은 것이 무엇이냐에 따라 다른게임이 실행될 수 있다는것을 확인했다.

 

위에서 확인한 서든어택2의 코드가 74248 이므로 이를 역으로 이용해 gameCode 란에 73737 대신 74248 로 넣고 수행을 하면 작동을 한다는 것이다.

 

이미지_7.png 이미지_9.png

실제로 적용을 해보면 위와 같은 식으로 게임 다운로드가 가능하다.

이 이미지 촬영당시에는 두 게임은 실제로 오픈된 게임이 아니기에 다운로드만 가능했다.

그런데, 게임코드까지 알아냈고, 자바스크립트도 아는데 어떻게 실행을 시키냐 인데… 아래와 같이 하면 알 수 있다.

실제로 자바스크립트를 수행하기

이미지 1.png

 구글 크롬 기준으로 F12키를 눌러 개발자 도구를 연다.

콘솔 도구창에서 우리는 위에서 알아낸 정보를 바탕으로 PS.game.startGame 이가 게임을 실행한다는 것을 알아냈으니 이 게임실행코드를 바탕으로 원하는 게임을 실행한다.

이미지 상에서는 카스온라인의 게임 코드인 73737을 실행했다.

이미지 2.png

스크립트를 수행하면 자동으로 게임이 반응하면서 실행을 할 것이다.

끝으로

이를 이용해서 넥슨 게임에서 다운로드가 일반적으로 불가능했던 게임을 쉽게 미리 다운로드 하여 내용물을 알아낼 수 있다.

 

하지만, 이렇다 해서 실제로 종료된 게임을 다시 복구하는것은 불가능하다. 다운로드 서버에 파일이 없는경우 저 스크립트가 아무런 소용이 없다.

 

파일 자체를 불러올 수 없기 때문에 서든어택2 같은경우 2017년 03월 07일을 기준으로는 코드를 아무리 입력해도 파일 다운로드가 되지 않는다.

 

이처럼 이것을 역으로 이용해서 게임 다운로드를 할 수 있도록 하면 무언가 도움이 되지 않을까 하고 작성해본다.

카스온라인 패치파일 먼저 다운로드 받기

개요

 

카스온라인을 하다보면 어떤 파일패치가 이루워질지 확인하는 방법이 공지사항 패치 안내 공지일 것이다.

 

하지만 이것은 패치가 어떻게 될것인지만 알려줄 뿐, 실제 파일 다운로드는 진행이 되지 않는다.

 

이 때, 업데이트될 파일을 미리 다운로드 받는 방법이 있다면 어떻게 될까?

 

따라서 카스온라인의 패치 파일을 미리 다운로드 하여 어떤 패치가 이루워질지, 패치파일의 정보를 NAR Cracker 등으로 열어서 확인하여 파일에 변화가 있는지, cso_koreana.txt 에 변경된 string 이 무엇인지를 미리 파악할 수 있다.

 

어떻게 다운로드 받는지 한번 알아보자.

 

다운로드 방법

 

우선 간단하다.

 

카스온라인의 CDN(콘텐츠 전송 네트워크, 영어로는 Content Delivery Network 혹은 Content Distribution Network 로 파일을 여러 노드를 가진 네트워크에 저장하여 효율적으로 콘텐츠를 저장하기 위해 만들어진 시스템을 뜻한다.) 홈페이지를 확인하여 파일의 유무를 판단하고, 다운로드를 진행하면 된다.

 

우선 카스온라인의 CDN 홈페이지는 아래와 같다.

 

http://cso.dn.nexoncdn.co.kr

 

cso_cdn_01.png

 

이 홈페이지에 접속하면 403 Forbidden 만 뜨고 어떠한 정보도 알려주지 않는다. 원래 그렇다.

 

하지만 카스온라인의 패치파일을 미리 다운로드 받는 방법은 너무나도 간단하다.

 

예를들어서 2016년 12월 08일에 첫번째 패치가 이루워진다고 가정하자.

 

그럼 주소는 이렇게 작성해야 된다.

 

http://cso.dn.nexoncdn.co.kr/cso16120801/

 

이게 무슨뜻인지 눈치챈 사람도 있을 듯 하지만, 모르는 사람도 있을 듯 하므로 뒤에 추가될 주소에 대해 설명을 하겠다.

 

cso : 카스온라인의 줄인말이다.

16 : 2016년도의 줄인말이다. 즉, 2016년 패치일 때는 16 이라고 작성해야 된다.

12 : 12월 이다. 위에 12월 08일 패치라 하였으므로 12를 적어야 된다.

08 : 08일 이다. 위에 12월 08일 패치라 하였으므로 08을 적어야 된다.

01 : 첫번째 패치다. 패치 내용이 첫번째 이고, 두번째 패치가 이루워지는경우 02 를 작성하면 된다.

 

그럼 응용을 한번 해보자.

 

카스온라인의 패치가 2016년 12월 09일 세번째 패치를 한다고 가정한다면 뒤에 들어갈 주소는 cso16120903 이 되야 한다.

 

그런데 만약 12월 08일 홈페이지를 들어갔다 해서 목록이 짜잔 하고 나오면 좋겠지만 절대 그렇지 않다. 굳이 홈페이지를 방문해야 될 이유가 없기 때문에 404 아니면 403 아니면 200(Found, 이 홈페이지에서는 파일 다운로드를 의미) 만 뜰 것이다.

 

따라서 이 홈페이지가 정말 파일이 있는지 없는지의 여부를 파악하는 방법은 이렇게 하면 된다.

 

403 Forbidden 과 404 Not Found  의 차이

 

cso_cdn_02.png cso_cdn_03.png

위 이미지는 403 페이지와 404 페이지를 촬영한 것이다.

차이점을 느끼는가? 403은 접근 거부, 404는 페이지를 찾을 수 없음의 뜻이다.

즉, 403이 있다는것은 파일이 올라왔다는것을 의미하며, 404는 파일이 안올라왔거나 찾을 수 없다는 뜻이다.

404가 표시된다면 파일이 아직 안올라왔거나 주소를 잘못 친 것이므로 업로드가 될 때 까지 기다리거나 주소가 올바른지 확인을 하는게 좋다.

403이 표시된다면 파일이 올라왔다는 뜻이므로 다운로드 받을 준비가 되었다.

패치 파일 미리 다운로드 받는 법

 

카스온라인의 패치 방식은 스크립트 파일을 다운로드 받고 이 스크립트에 따라 해시값을 분석 후 정상파일인지를 확인하여 디컴파일 된 파일을 다운로드 후 내부 기능을 통해 컴파일이 된 후 적용이 되는 방식이다.

 

우선 script 라는 파일을 다운로드 받아야 된다.

 

다운로드 받는 방법은 매우 간단하다.

 

만약 2016년 12월 08일 첫번째 파일의 스크립트를 다운로드 받으려면 아래와 같이 주소를 입력하면 된다.

 

http://cso.dn.nexoncdn.co.kr/cso16120801/script

 

그럼 파일이 하나 다운로드 받아질 것이다.

 

다운로드 받아진 파일을 notepad 나 notepad++ 등 문서파일을 열 수 있는 프로그램으로 열어보자.

 

cso_cdn_04.png

우리가 눈여겨 봐야 될 것은 cstrike.nar / dstrike.nar / estrike.nar (estrike.nar 이 일정 용량이상 되어서 추가 파일이 필요할 경우 알파벳 순서대로 늘어날 것이다. 예를들어 fstrike.nar 등과 같이 바뀔것이다.) 이다.

나머지 주소들은 comp 라는 확장자가 포함된 파일이기 때문에 파일이 암호화 되어있으므로 일반적인 방법으로는 열 수 없다.

따라서 패치에 제일 용량을 많이 차지하며 가장 중요한 부분인 파일들을 다운로드 받는것이 좋다.

대부분 최신버전으로 다운로드 받아지는 파일은 cstrike.nar / dstrike.nar 보다는 최근에 만들어진 estrike.nar 파일로 들어가게 될 것이다.

이 파일을 중점적으로 보면된다.

이 파일들을 미리 다운로드 받으려면 해당 주소에 직접 방문하면 된다.

만약 업데이트 될 파일을 미리 집어넣고 실행하면 어떻게 될까?

 

cso_cdn_05.jpg

 

개인적으로 실험을 해보았으나 아쉽게도 접속이 되지 않는다.

 

클라이언트 버전이 맞지 않다는 오류와 함께 게임 실행이 안되므로 아쉽지만 패치된 파일을 먼저 게임에 실행할 수 없다.

 

 

 

파일을 미리 다운로드 받는 이유?

 

cso_cdn_06.png

 

아무래도 cso_koreana.txt 파일에 포함된 string 문구를 확인하여 다음에 어떤 패치가 이루워질지를 미리 파악할 수 있는 중요한 요건이 되기 때문이다.

 

또한 models 폴더를 열어봐 어떤 무기가 패치될지, sprites 폴더를 열어봐 어떤 hud 가 추가되어 새로운 무기가 나올지등을 미리 확인할 수 있기 때문에 여러모로 미리 패치될 파일을 열어보면 좋은 경험이 될 수 도 있다.

 

또는 패치 후 다운로드 하는 파일들을 미리 다운로드 받아 빠른 서버 접속을 통해 1-3 서버의 1번방을 차지할 수 있는 좋은 환경이 될 수 있다.

 

파일들을 미리 다운로드 받으면 여러모로 이점이 있으니 카스온라인에 엄청난 관심을 가진 사용자라면 한번쯤 눈요기를 해보는것도 나쁘지 않을 것 이다.

 

 

여담

 

카스온라인 CDN 의 옛날 주소는 아래와 같다.

 

http://csonline.nefficient.co.kr/

물론 지금은 당연히 접속되지 않는다.