카테고리: Javascript

Javascript

magnific popup + 유튜브 자동재생 javascript 알아보기

홈페이지가 열리면 바로 유튜브 자동재생이 되게 하기

 

서버를 제작하기에 메인 홈페이지에 접속시 무조건 유튜브 자동재생이 되도록 스크립트를 짰다.

 

아래와 같이 세팅하면 된다.

 

우리가 수정할 곳은 주소1, 주소2, 주소3 부분만 하면된다.

넥슨게임, 자바스크립트를 통해 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일을 기준으로는 코드를 아무리 입력해도 파일 다운로드가 되지 않는다.

 

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

정말 해괴한 자바스크립트

개요

광고는 때로는 우리를 짜증나게 할 때도 있다.

 

일부 불법 스트리밍 사이트에 있는 광고나, 혹은 다른 광고들이 달갑지 않을 때가 있다.

 

혹은 주소의 정체를 보이고 싶지않아서, 해석하기 어렵게 난독화를 하는 스크립트도 있다.

 

따라서 오늘 새벽내내 스크립트들을 여러가지 확인해 보았다.

 

 

오늘의 스크립트

1) Fuck Adblock

 

Fuck Adblock 은 광고차단 스크립트 혹은 부가프로그램인 Adblock 계열이 감지되면 차단하는 스크립트다.

 

 

 

위와 같은형식으로 스크립트를 불러오면 작동을 한다. 물론 스크립트 실행을 위한 값들에 대해서는 직접 추가해야 되지만.

 

하지만 되게 특이하였다.

 

 

 

 

 

js/ads.js 에서 canrunads 값이 true 로 기본값이며 값이 true 가 유지면 그대로 스크립트를 나가지만, 이 값이 adblock 계열등에 의해(즉, ads.js 라는 자바스크립트가 실제 광고가 아님에도 차단)차단이 되어 undefined가 되면 false 로 나가서 body 부분을 제거하는 초강수를 두었다.

 

차단 계열은 광고 블록하는 계열의 스크립트가 ads 라는 단어를 인식할 때 해당 내용을 아예 클라이언트 단에서 차단하는것을 역으로 이용한 것이다.

 

실제 광고성 내용의 스크립트가 포함된게 아니라, 일부러 광고 차단 프로그램에 의해 감지하라고 내용물을 집어넣은 것이기 때문에 해당 부분만 예외처리로 허용하면 쉽게 우회할 수 있다.

 

 

내가 알아본 사이트는 스크립트를 4개정도로 심어놓아 대부분의 Adblock 계열을 body 부분을 삭제하는것으로 보인다.

 

이것을 뚫기 위해서 부단히 노력을 했었다.

 

 

 

2) 단축URL 계열 307 redirect?

 

onclick 을 할 경우 return move 값에 대해서 변동을 주는것으로 보인다.

 

 

3) base64 encode 계열 video 소스 난독화?

 

비디오 URL 주소를 보이지 않게 하기 위해 base64 로 인코딩을 하고 source 값에 URL을 넣는것으로 보이고 있다.

 

 

4) googlevideo.com 주소 파싱?

 

위 스크립트는 약 2~30분 주기로 인코딩된 내용이 바뀐다. 즉, 구글드라이브 등으로 저장된 영상의 주소를 시간마다 파싱해와서 그걸 적용하는 방식인데, 어떻게 감지를 하는지에 대해서 검색을 해봐야 할 듯 하다.

웹 홈페이지에 진동을 울리게 하기

웹 홈페이지에 진동을 일으키기

시작하기에 앞서…

어디서 많이 쓰이나?

 

사실 대부분 웹에서 진동을 일으키는 기능은 hoax 계열의 광고에서 많이 찾아볼 수 있다.

 

사용자를 당황하게 만들기 위해 대부분 진동과 함께 삐- 하는 소리를 울리게 하는 경우가 잦다.

 

진동 일으키기의 예시

 

원래이 진동울리게 하는것에 대한 순 기능은 말 그대로 웹브라우저 내에서 자바스크립트 만으로 스마트폰의 기능을 제어하기 위해 만든 기능일 뿐이다.

 

따라서 스마트폰 환경에서 안내 메시지를 함께 띄울 때 실패했다는 메시지와 함께 진동을 한번 일으킨다거나, 웹 홈페이지를 보면서 무언가 반응성 메시지를 띄워야 할 때 ‘화면에만 표시시키지 않고 스마트폰의 진동도 함께 울리면 더욱 더 사용자가 확실하게 알아챌 수 있기 때문에 사용할 것’ 이라고 본다.

 

 

 

코드

 

 

참고사항

Google Chrome 은 Webkit 을 prefix 로 넣어야 된다.

FireFox 는 11이면 moz 를 prefix 로 16부터는 없어도 자동으로 인식을 한다.