webhacking/client

Enigma Group basic/javascript 12

qkqhxla1 2014. 11. 1. 17:03

date = new Date();

year = date.getYear();

pass = 1337;

  

for(i = 1; i <= year; i++)

{

    pass += year * i * year;

}

 if(pass == 318338237039211050000) 

{

  alert("Good job!");

    window.location.href = year + ".php";

}

else

{

    alert("Sorry, did you fail already?!");

    window.location.href = "./index.php";

}


year을 구해야된다. 그냥 브루트포싱인것 같아서 파이썬으로 돌리려다가 숫자가 엄청나게 크다는걸


발견했다.

for i in range(0,50000):

    pass_ = 0

    for j in range(1,i):

        pass_ += i*j*i

    if pass_==318338237039211050000:

        print 'answer =',i

print pass_


대충 이런식으로 50000만 돌려봐도 결과 pass_는 위의 318338237039211050000보다 현저하게


작은데 시간은 엄청나게 오래걸린다. 반복문은 자바스크립트가 훨씬 빠르게 돌아가므로 자바스크립트로


돌리기로 했다. 위 파이썬 코드와 비슷한 자바스크립트 코드를 짜본 결과 


반복문을 10만번을 돌렸는데도 파이썬 1만번보다 더 빠른 속도로 결과가 출력된다.


완벽하게 코드만 돌리면 나오는 이진 탐색으로 짜려고 했는데 시간이 오래걸린다. 그냥 내가 눈대중으로


어느정도 더 크게, 또는 작게 하는 형식으로 하는게 훨씬 빠를것같다. 그래서 그렇게 했음...


값을 높이고 내리고 해봤더니 158847일때 결과값이 나왔다.



<script>
year = 158847;
pass = 1337;
  
for(i = 1; i <= year; i++)
{
  	pass += year * i * year;
	if(pass == 318338237039211050000) 
 	{
		document.write("i="+i+" year="+year+" pass="+pass+"
"); alert("Good job!"); } } </script>


'webhacking > client' 카테고리의 다른 글

Net-Force javascript 6  (0) 2014.12.04
Net-Force javascript 1~5  (0) 2014.12.03
Enigma Group basic/javascript 11  (0) 2014.11.01
Enigma Group basic/javascript 10  (0) 2014.11.01
Enigma Group basic/javascript 9  (0) 2014.11.01