아.... 어제오늘 21번문제를 풀었다.
하루죙일 푼건 아닌데
너무 노가다성이 짙었다. (난독화...때문에...)
중간에 오기가 생겨서 끝까지 풀어봤다.


21번 문제 화면이다.!


(21번 문제 화면)



주어진 단서는 소스보기 뿐!
소스보기를 한다.



(소스 화면)



?.....
딱봐도 난독화다.
그래도 코드가 짧기 때문에 그나마 다행이다. (그래도 오래걸린다)

우선 오래볼거기 때문에 흰화면은 눈이 아프므로
Notepadd++ 에 옮겨서 분석하기로 한다.
원래 코드는 아스키 코드로 되어있는데
전부 해석해서 옮겼다. (파이썬 프로그램으로 코드를 짰다. 너무오래걸려서...)

아스키코드만 해석한 화면이다.


(아스키코드 해석)



하하... 아직 갈길이 멀다.

그래도 난독화 되어있다.
인내심을 가지고 같은 변수이름을 찾아서 ( 컨트롤 F ) 난독화를 정리해주면
아래와 같이 깔끔하게? 된다.



(난독화 정리)



...
여기까지 했으면 끝이다.
여기까지가 귀찮고 귀찮지만 귀찮은 작업이 끝났다.
짝짝짝
여기까지 친구랑 얘기하면서 설설 했다.

이제부터 본격적인 코드 분석이다. (여기부터는 어렵지 않다.)
위에서부터 하나씩 분석해보겠다.



(아스키 코드로 변환)



아스키 코드로 변환하는 것인데 5글자를 아스키코드로 바꾸어 전부 더해주는 함수이다.
여기서 b변수가 처음에 "" 빈 문자열로 출력되서 문자열이라고 생각했는데
뒤에 ord() int가 반환되는 함수가 나와서 아리송했다.
결과는 h함수에 들어오는 값을 한자한자 5글자 아스키코드로 바꾸어 전부 더해주는 함수이다.

그 다음으로는 아래와 같다. (아주 익숙한 문자열도 보인다)



(입력값 코드)



KEY는 우리가 찾아야할 정답으로 보인다.

mun이라는 변수에 GET방식으로 전달받는 key변수 값을 저장한다.
그 후 mun이라는 변수에 들어온 문자열을 "-" 으로 분리하여 배열로 a변수에 저장한다.
그 후 a 배열의 값을 체크하는데 이로써 알 수 있는 것은
a의 배열에는 5개의 값이 들어있고 알파벳과 숫자로 이루어진 문자열이어야한다는 점이다.
그렇지 않으면 Error!를 출력한다.

핵심에 맞는 조건값을 찾는 과정이다.



(키 코드)



이 코드는 if문으로 이루어져있고 이 조건들을 전부 만족하면 KEY를 출력하게 되어있다.

조건들을 정리하여 보았다.
조건
1. a배열 첫번째 요소 조건
a배열 첫번째 요소가 첫번째부터 2글자가 숫자이다.
a배열 첫번째 요소가 5번째 글자가 숫자면 안된다. 
a 배열의 첫번째 요소를 h 함수에 넣은 값이 312보다 크고 333 보다 작아야한다. 즉 아스키코드로 전부 바꾸면 312~333 사이의 값이어야한다.

a첫번째 요소 -> "11X1a"

2. a배열 두번째 요소 조건
a 배열 두번째 요소의 첫번째 글자가 숫자면 안된다.
a 배열 두번째 요소의 4번째 5번째 값이 숫자여야한다.
a배열의 두번째 요소 h함수 값이 300~326이다.

a 두번째 요소 -> "a3399"

3. a배열 세번째 요소 조건
a배열의 세번째 요소 첫번째 글자는 숫자가 아니다.
a배열의 세번째 요소 두번째 글자는 숫자이다.
a배열의 세번째 요소의 h함수 값이 349 ~ 407 사이이다.
 
a 세번째 요소 -> "a1d88"

4. a배열 네번째 요소 조건
!is_numeric(substr(${a}[3],0,2)) => a 배열의 4번째 요소의 첫번째 두번째 값은 숫자가 아니다.
is_numeric(substr(${a}[3],2,3)) => a 배열의 4번째 요소의 세번째 4번째 5번째값은 숫자이다.
h(${a}[3])>357&&h(${a}[3])<359 => a 배열의 4번째 요소는 357 ~ 359 값이다.

a 4번째 요소 -> "aa668"

5. a배열 다섯번째 요소 조건
(h(${a}[0])+h(${a}[1])+h(${a}[2])+h(${a}[3])) / 4  반올림한 값인 340
h함수에 넣었을때 340이 되어야한다.

a 5번째 요소 "aa011"

이 모든 요소들의 조건을 -으로 구분하여 입력하여 주면 된다.!



(정답 화면)




이 문제는 어렵지 않다.
다만 귀찮고 귀찮았던 문제일 뿐이다.!



'WarGame > xcz.kr' 카테고리의 다른 글

xcz.kr - prob18(Web)  (0) 2017.02.22
xcz.kr - porb13 (network)  (0) 2017.02.03
xcz.kr - porb17 (network)  (0) 2017.02.03

+ Recent posts