The Heungsub

Text Post

me2Virus 제작기

me2PHeungP

최근에 me2PHP를 포크한 me2PHeungP[미투피흥피] 프로젝트를 개설했습니다. me2PHP가 최신 me2API 스펙을 반영하지 않은 것이 포크 사유였기에 요 며칠간 me2PHeungP에 이런저런 최신 스펙들을 추가하고 있었습니다. 그 중 하나가 콜백기능입니다. 이것을 사용할 경우 포스팅 작성 시 포스팅아이콘을 원하는 이미지로 바꾸고 아이콘을 클릭하면 삽입될 웹 문서나 이미지, 동영상, 음원의 URL을 지정할 수 있습니다.

me2Nick 콜백문서

콜백기능을 지원하자마자 우선 일전에 만들었던 me2Nick에 적용해보았습니다. 잘 작동하는걸 보고 흡족해하다가 문득 궁금증이 생겼습니다. 이 안에 스크립트를 넣으면 실행될까? 간단히 다음 코드를 추가해봤습니다.

<script type="text/javascript">
//<![CDATA[
    alert('Heung, world!');
//]]>
</script>

콜백 문서에서 스크립트 실행

실행 되는군요. 이때부터 장난기가 발동해 me2Nick 콜백문서를 보게되면 2초간 그 페이지의 모든 아이콘과 프로필사진이 제 프로필사진으로 바뀌도록 만들었습니다. 그리고 나선 사진을 제 맘대로 바꾼 것에 대한 사과 메시지를 미투데이 알림창으로 뿌려주고자 JavaScript 콘솔을 이용해 미투데이 페이지에 현재 살아있는 객체들을 살펴보았습니다.

아이콘 바꿈

살펴보면서 더 대단한 것도 할 수 있겠단 것을 깨달았습니다. 남의 미투데이에 포스팅을 올리거나 특정한 me2App에 막대한 량의 토큰을 후원시키거나, 심지어 일시정지나 탈퇴도 마음대로 제어할 수 있을 것 같았습니다. 그때 떠오른 것이 예전에 본 FaceBook 바이러스였습니다. FaceBook 프로필페이지에 삽입된 JavaScript 코드가 이 페이지를 열람한 다른 회원의 프로필페이지에 자동으로 복제되는—그렇다고 유해하지는 않은—바이러스였죠. 그것에 모티브를 얻어 me2Virus를 만들기에 이르렀습니다.

me2Virus

복제될 포스팅은 콜백문서를 지녀야하므로 me2PHeungP를 사용해야했습니다. 그러기 위해 타겟이 될 미친의 사용자키와, 그 미친의 미투데이에 포스팅할 PHP 문서가 필요했습니다. 내부 도메인 XHR을 이용해 사용자키를 획득하는건 무척 쉬웠으며 외부 도메인으로 XHR을 날리는 것도 간단했습니다. 미투데이 페이지들에 이미 붙어있는 Prototype 프레임워크 덕분이었죠. 이로써 포스팅을 복제하는데 성공한 것입니다.

var me2day = {
    notify: notification_message.show_message
            .bind(notification_message),
    request: function(url, options) {
        url += '?' + $H(options.parameters).toQueryString();
        options.parameters = {url: url};
        options.method = 'get';
        return new Ajax.Request(
            'http://me2day.net/get_html', options
        );
    }
};

하지만 너무 위험해보였습니다. 포스팅아이콘을 누르자마자 가차없이 포스팅이 복제돼버리다보니 테스트 하다 올라간 복제포스팅만 8개였습니다. 최대한 매너 있는 바이러스가 되게끔 차후 감염을 막을 수 있는—면역력 체크박스도 추가하고, 스스로로부터는 감염되지 않게 하며, 확산 경로를 분석해 나중에 공개하기 위해 모든 복제 상황을 기록토록 했습니다.

최초의 숙주

그러고 나서 최초의 숙주를 공개한 게 6월 4일 새벽 2시 55분이었습니다. 다음날 일어나 출근하기 전에 확인한 직접 감염자 수는 서른 명이 넘어있었고 전체 감염자 수는 140명 대에 이르렀습니다. 생각보다 빠른 확산 속도에 조금 놀랐습니다. 그러나 출근하고 나니 감염 되지 않는다는 사람들이 속출했습니다. 분명히 출근 전까지만 해도 잘 됐었는데 말이죠.

알고보니 me2Virus가 사용하는 Basic 등급 애플리케이션키는 24시간동안 150개로 포스팅 작성이 제한되어 있기 때문이었습니다. 따라서 만박 님과 꽃띠앙 님께 Premium Partner를 요청하는 동시에 우선 (버려진)me2Time 애플리케이션키를 사용하도록 바꿔놓았습니다. 그리고 누구나 스스로의 애플리케이션키를 등록해 자신만의 새로운 최초의 숙주를 만들 수 있게끔, 그 숙주로부터 전염되는 모든 me2Virus가 선조의 애플리케이션키를 사용하게끔 개선했습니다. 전염이 다시 시작되었죠.

그때 꽃띠앙 님께서 연락하여 기존에는 콜백문서에서의 스크립트 실행을 전혀 막지 않았으나, 이제부터는 화이트리스트에 등록된 콜백문서 이외에는 스크립트가 실행되지 않을 것이라고 알려주셨습니다. 다행히 me2Virus에 악의는 없었기 때문에 화이트리스트에 등록해주셨으며, 애플리케이션키도 Premium Partner 등급으로 올려주셨습니다. 안심하면서도 약간은 아쉬웠습니다. 알림창 띄우는 스크립트 같은 경우 안전하면서도 굉장히 유용히 쓰일 수 있는데 앞으로 다른 콜백 애플리케이션에서는 볼 수 없을 것이기 때문입니다.

미투데이 알림창

꽃띠앙 님 덕분에 이제 me2Virus는 합법적으로 제한 없이 확산되기 시작했습니다. 각각 me2Virus의 감염 경로와 전염 규모도 볼 수 있도록 개선했으며, 이 확산 경로를 어떻게 하면 멋지게 시각화할 수 있을지도 계속 고민 중입니다.

me2Virus 콜백화면 설명서

현재 최초의 숙주가 감염시킨 하위숙주(하위숙주의 하위숙주들도 포함한)는 700개를 넘어섰으며, 전체 숙주는 1,800개에 도달했습니다. 감염경로는 스무 단계까지 깊어졌고, 한 사람이 가장 많게는 27번 감염되었습니다. 이제 열기도 식고 면역력을 지닌 사용자도 330명을 넘어서 더이상 첫날만큼 빠른 확산은 기대할 수 없게 되었습니다. 그럼에도 불구하고 느리지만 꾸준히 확산되는 모습에 전 만족스럽답니다.

사용자 분들의 동의 없이 멋대로 포스팅 올라가게 만든 점 사과드립니다. 그래도 포스팅 주소와 전염 경로 이외에 그 어떤 정보도 저장하지 않고, 감염 즉시 알려줌으로써 1분 간의 삭제 기회와 감염거부 기능을 제공하니 가벼운 맘으로 지켜봐주시면 감사하겠습니다.

전염에 성공한 최초의 숙주들

참, 이제 최초의 숙주를 만들때 메시지도 마음대로 설정할 수 있습니다. 모쪼록 많이 이용해주시길.

View Comments
Posted on Monday, June 8, 2009.

Comments powered by Disqus

Previous Next