Season 1/워게임

Old - 54 Write Up

작성자 - LRTK

?의 위치에서 값이 계속 변경이 되더니, 마지막엔 ?이 되었다.

 

무슨 기능인지는 잘 모르겠다. 그래서 개발자 도구에서 코드를 살펴보았다.

function run(){
    if(window.ActiveXObject){
        try {
            return new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {
            try {
                 return new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e) {
                 return null;
            }
        }
    }
    else if(window.XMLHttpRequest){
        return new XMLHttpRequest();
    }
    else{
        return null;
    }
}
x=run();
function answer(i){
     x.open('GET','?m='+i,false);
  x.send(null);
  aview.innerHTML=x.responseText;
  i++;
  if(x.responseText) setTimeout("answer("+i+")",20);
  if(x.responseText=="") aview.innerHTML="?";
}
setTimeout("answer(0)",1000);

코드 중에서 ?의 값을 변경하는 JS코드를 가져왔다.

 

run 함수는 서버와 통신할 객체를 선언을 해주는 역할이며,
answer 함수는 서버 객체에 값을 보내고, 반환 받은 값을 ?에 출력하는 역할이다.

 

서버에 0부터 1씩 증가된 m을 보내주는데, 반환값이 없으면 ?을 출력하는 것이다.

 

나는 answer 함수의 코드를 조금 수정하였다.

aview.innerHTML += x.responseText;
i++;
if(x.responseText) setTimeout("answer("+i+")",20);

aview.innerHTML의 값이 계속 변하는게 아니라, 더해지는 것으로 변경
반환값이 없으면 ?으로 변경되는 조건을 삭제하였다.

 

수정된 answer 함수를 개발자 도구의 콘솔에 실행하면, 밑과 같이 Flag 값이 출력이 될 것이다.

'Season 1 > 워게임' 카테고리의 다른 글

Old - 19 Write Up  (0) 2021.05.16
Old - 07  (0) 2021.05.16
Old - 39 Write Up  (0) 2021.05.15
Old - 38 Write Up  (0) 2021.05.15
Old - 26 Write Up  (0) 2021.05.15
Contents

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.