- 요새 기사준비하느라
  오랜만에 포스팅하는 글이다 :)

최근 다양한 워게임 사이트를 풀면서 전부다 올리고 싶었지만 정리도해야하고 아직 못올린게 많다ㅜㅜ

오늘은 기사 공부하다가 기분전환겸.. 서니나타스 사이트를 풀어 글을 쓰려한다.
너무 쉬운건 안올릴까하다가 조금 완전성(?) 있게 모든 문제를 올려보고 싶어서 1번 부터 쓴다 :)

서니나타스의 1번 문제!




(문제1)



아래는 문제 화면이다.



(문제 화면)



알고보니 너무... 간단한 문제였는데
혼자 심각해서 엉뚱땅을 파 시간이 걸렸다..
위에 있는 코드는 ASP코드이다.
(이 사실을 난 몰랐었다....ㅜㅜ)
(신기하다ㅎㅎ)

나는 처음에 위에 & 기호가 & 연산을 하라는 줄 알았다...
그래서.. &연산의 특징을 테스트해보았다.



(&연산 테스트)


저번에 테스트해볼때는 교환법칙이 성립되었는데
이번에 뭔진 모르겠지만
C = A & B
C = C & B ?... 

무튼 이런 고민에 휩싸였을 때
& 기호가 그냥 문자열을 합치는 기호면 어이없겠다 라는 생각이 들었다.

즉.. 치환하기 전 결과에서
2번째부터 2글자
4번째부터 6글자.
@admin@@@@@
이런 식으로 나오게 하면 된다.

위 치환과정을 생각해서 답을 생각하면
i -> in
@admi

a -> aad
ami

ami 로 입력하면
aadmin이 되고

결과가 admin이 된다..



(ami 입력)



(해결)



허무했던 문제ㅎㅎ


'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS : Challenge WEB 6  (0) 2017.03.28
SuNiNaTaS : Challenge WEB 5  (0) 2017.03.27
SuNiNaTaS : Challenge WEB 4  (2) 2017.03.23
SuNiNaTaS : Challenge WEB 3  (0) 2017.03.22
SuNiNaTaS : Challenge WEB 2  (0) 2017.03.22


아.... 어제오늘 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


오랜 만에 간단한 웹 문제를 풀어볼것이다.

오늘 푼 문제는 xcz.kr 의 18번문제 웹 문제이다.
아주 아주 아주 기본적인 문제라고 Title에 적혀있다..!

문제 화면이다.



(문제 화면)



설명에 소스보기를 클릭한다!
소스가 나와있다.
보니 php 코드로 이루어져있고
난독화가 되어있다.
변수 이름을 요상하게 지어놓은 것이다.



(소스 코드)



보기 힘드니
Notepad++ 를 받아서 여기서 코드를 확인하였다. (눈이 아프니까)

난독화 또한 풀어주었다.
아래는 난독화 풀은 코드이다.
난독화를 풀었다는 이야기는 내가 보기 쉽게 어려운 변수들을 쉬운 변수이름으로 바꾸어 놓았다는 뜻이다.



(문제 코드)



먼저 눈에 띄는 것은 아래 빨간 박스



(폼 체크?)



여기서 보면 쿠키값 c와 GET방식으로 전달받은 변수 g, 그리고 POST방식으로 전달받은 변수 p가 선언되어있고
이 값들이 비어있으면 Wrong T.T 가 나오게 되어있다.

우선 내가 이 3개의 값을 채워서 넘겨줘야한다는 것을 파악하였다.

쭉 소스코드를 이어서 보면
test function이 있다. 만약 아래에서 이 함수를 쓰지 않으면 무시했겠지만
아래 이 함수를 사용하니까 분석해보았다.



(test function)



이 함수는 변수를 받아서 특정 형태로 변형하는 것이다.
ord 함수는 문자를 아스키 코드로 변환하는 것이다.

ord 함수가 없다면 원래
test 변수가 들어가면
- t - e - s - t 이렇게 출력되는 함수이다.
즉 여기서 t의 아스키 값, e의 아스키값 ... 등으로 변환하여
 - t - e - s - t 값을 출력하는 함수이다.

아래 코드는 확대해서 봐야한다.
conn 이라고 내가 이름지어준 변수인데
위에서 보면
conn 변수는 $g . $cookieval; 으로
GET방식 변수와 쿠키값이 연결된 값이다.
또 twinp 변수는 $twinp = $p;  값으로 p와 같은 값이다.



(소스 코드)



이 코드를 분석하면
conn의 값이 test 함수에 들어가서 출력한 값이 위에 표시된 값인지 또는
twinp의 값이 위에 적혀있는 값인지 체크하여 맞으면 key를 보여준다.

GET 혹은 POST 둘 중 하나의 변수만 맞게 써줘도 되지만
뭐하러!
그냥 두개 다 정답을 보내겠다!

정리하면
conn에는 givemepassword  
twinp에는 keyplz!
의 값이 들어가면 된다.
conn은 g와 cookieval의 값을 연결한 것이므로 작전을 짜면

나는
cookie 값 c = passowrd 를
GET 변수 g = giveme 를
POST변수 p = keyplz! 를
넣어서 보내겠다.

먼저 쿠키 값을 설정할 것이다.
F12에서
아래와 같이 쿠키를 입력한다.



(쿠키 입력)





(입력된 모습)




그리고 POST 방식으로 보내려면
form 태그를 사용해야하므로
form 태그를 만들어준다.



(Form 태그 작성)



그리고 action 변수 url에 g의 값을 GET방식으로 동시에 전달하기 위하여
?g=giveme 를 적었다.
여기서 go 버튼을 누르면 이 값들이 전송되게 Form태그를 만들었다.

이제 이 태그를 한줄로 이어서 아래와 같이 입력해준다. (F12 콘솔에서)



(만들어진 코드)




(코드 입력)



입력하면 아래와 같이 go 버튼이 하나 나온다.



(go 버튼 클릭)



클릭을 하면 우리가 설정해주었던 값들이 전부 전달되고
아래와 같이 Key가 나오게 된다.


(정답 화면)


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

xcz.kr - prob21(Web)  (0) 2017.02.24
xcz.kr - porb13 (network)  (0) 2017.02.03
xcz.kr - porb17 (network)  (0) 2017.02.03


XSS 취약점을 공부한 후
이 것에 관해 직접 해보고 싶은 마음에
XSS Wargame을 여기저기 찾아본 결과
구글에서 만든 XSS GAME사이트라는 좋은 사이트를 찾게 되었다.

level1 부터 시작해볼것이다 :)

level1의 화면이다.



(문제 1 화면)



아래의 인터넷 창에서 alert()으로 팝업창을 띄우면 된다는 이야기이다.
스크립트코드로 alert() 코드를 띄운다는 것은
마음만 먹으면 악성 코드도 실행 시킬 수 있다는 것으로
분명 위험한 취약점이다.

먼저 아래 화면에서 Search 버튼을 눌러
사용자의 입력값이 어떻게 전달되는지 확인해보았다.



(전달 방식 확인)



확인해보니
url을 통해 전달되는 GET방식으로 전달 되고 있다.
또 화면에 Enter query here...  는 우리가 기본값으로 전달된 값임을 확인 할 수 있는데

더 정확하게 확인하기 위하여 소스코드를 분석해보았다.



(소스코드 분석)



코드를 보니 query라는 변수에 검색 입력값이 들어가고
화면에 뿌려주는 코드에서 query가 들어간것을 확인 할 수 있다.
이렇게 html코드에 들어가는 변수를 직접 사용자가 건들일 수 있다면
위험한 코드이다.
우리는 이부분을 이용하여 공격할 것이다.

query 변수에 들어가는 검색 입력란에
<script> alert("XSS");</script>
코드를 입력 할 것이다.



(XSS 공격)



검색을 하니 XSS 코드가 삽입되었고
팝업창이 떴다.



(공격 성공)



이렇게 level1은 간단히 넘어갈 수 있었다.



'WarGame > XSS Game' 카테고리의 다른 글

XSS GAME - level 6  (1) 2017.04.03
XSS GAME - level 5  (0) 2017.04.03
XSS GAME - level4  (1) 2017.04.01
XSS GAME - level3  (0) 2017.03.31
XSS GAME - level2  (0) 2017.03.31





오늘은 코딩을 해보았다.
Training 문제로 간단한 문제를 풀었다.


(Prime Factory 문제)



문제는 이렇다.
100만 이상의 숫자의 소수를 구한다.
그 소수의 합 또한 소수인 수를 구한다.

이런 소수를 2개 구한다.
그리고 이어주면된다.

예를 들어
1234567 과 2345678 을 구했다 치면
12345672345678을 답으로 적으면 된다.

이 문제를 풀기위해 소수의 합의 소수를 구해야해서
중복되는 코드가 있으므로 함수를 만들어서 사용했다.

첫번째로 만든 함수는 소수인지 판별하는 것이다.



(소수 판별 함수)



소수 판별 함수는
flag 변수를 두어서
만약 나누어지는 값이 발견되면 flag를 1로 주어 return하고
없다면 그대로 0으로 나간다.
즉 밖에서 보면 0이 나오면 소수이고 1이 나오면 소수가 아니다.


두번째로 구한 소수의 자릿수를 전부 더해주는 함수이다.



(자릿수 더하기 함수)



이 함수의 설명은 코드 보는 것과 같다.
각 자리수의 10의 거듭제곱으로 나누어 각 수를 더해서
return 한다.

이 두가지 함수를 이용해서
계산한다.

처음 시작은 100만으로 시작해서 하나씩 증가시키면서 검사한다.



(완성 코드)



두가지 변수에 가득 차면 반복문이 종료된다.



(실행 결과)



실행 결과를 복사 해서
정답에 넣으면!



(정답)



정답이 된다. :)

간단한 문제지만
30? 40분은 걸렸던거 같다..!

오랜만에 해서 그런가 보다
자주 해야겠다 :)



'WarGame > WeChall' 카테고리의 다른 글

WeChall - (Coding) Training: Programing 1  (0) 2017.01.26




13번 문제이다. 이 또한 네트워크 관련 문제이다! :)
(문제에 나와있는데, 내 생각엔 이게 결정적인 힌트지 않았을까 싶다.)

문제화면이다.



(문제 화면)



다운로드를 클릭한다.




(다운로드!)



하니..!
pcap 파일이라고 뜨지 않고 그냥 파일이라고 뜬다..!
?.?
?.??



(다운파일)



HxD로 열어보니 pcap 시그니쳐랑 똑같다. (뭐야..)
와이어샤크로 열어보았다.

열렸다. (뭐야...)



(덤프패킷)



제일 먼저 살펴볼 것은 http 통신으로
어떤 데이터 혹은 파일을 주고 받았는지 체크해보아야한다.
체크!
필터링 http


(필터링 http)



필터링한 패킷중 HTTP Stream으로 확인해보니
png 파일. 그림파일이 전송되었던것을 확인 할 수 있었다.



(png 파일)



이 응답의 끝을 보니..



(???)



끝이 조금 이상하다..?
png 파일의 끝 형식이 아니다.

패킷을 보니 teasure라고 써있던데 3개로 쪼개져서 보내졌던거 같다.
HxD로 세 패킷의 데이터를 덤프해서 이어주면
png 파일이 된다.



(리커버리!)



사진을 열어보면.!





(답)




답이 나온다!

이걸 무턱대고 답칸에 적으면 오답이 나온다.
(나도 그랬다)

문제를 잘 보면
md5로 해쉬한 값을 입력하라고 나와있다.
md5는 해쉬알고리즘 중 하나이다.

인터넷에 md5 암호화 검색하면 사이트 많이 나오니까
거기서 암호화를 한 후 
답 입력하면
통과 :)

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

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


네트워크 패킷 분석 문제를 조금 더 풀어보고 싶어서
이곳저곳 찾다가 찾은 사이트 xcz.kr 이다.
재밌는 형식의 워게임들이 있다.

여기에 있는 문제들도 풀어야겠다 :)

다른 문제보다 17번문제 네트워크 관련을 풀어보았다.


(문제화면)



상황은
패스워드를 잃어버렸다
패스워드를 찾으라~ 라는 문제다
뭘까!
일단 다운로드!



(다운로드 클릭)



다운받아보니 패킷 덤프 파일이다!
(내가 찾던 문제!)
(하지만 생각보다 쉬워서... 쉬우니 이 문제는 직접 풀어보세요 :) )



(문제)



이 덤프 파일에 ID와 패스워드가 있다는 말이다.
로그인을 하거나 회원가입 어쨋든 인터넷을 이용했을 테니
http 통신을 먼저 살펴봐야한다.
패킷 필터링으로 http


(http 패킷 필터링)



패킷 내용들을 보니 join_ok와 통신한 내용들이 보인다.
join 회원가입을 한 흔적이므로 이 패킷을 살펴보았다.



(회원가입 패킷)



패킷 내용은 HTTP Stream으로 확인하였다.



(HTTP Stream 클릭)



내용을 살펴보니..!
아이디와 비밀번호, 이메일 정보가 들어있다.


(패킷 내용)



잘보니 우리가 원하는 id가 아니라는 것을 알 수 있다.
우리가 원하는 아이디는 zzang 어쩌구다.

회원가입 페이지 패킷을 살펴서 찾았다.



(정답 패킷내용)



우리가 원하는 패스워드를 찾았다.

:)



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

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



Wechall 이라는 워게임 사이트가 있다.

여기서 여러 문제를 해결하면서 실력을 쌓을 수 있다.

오늘 풀이를 할 문제는 Coding 카테고리의 Training이다.



(Training: Programing 1 선택)



초록색으로 표시된 이유는 내가 한번 풀었기 때문에
초록색으로 표시된 것이다.

들어가보면



(문제화면)



문제를 보면 this link를 들어가서 받은 메세지를 다시 보내라는 뜻이다.

일단 this link에 들어가보자



(메세지)



메세지가 보인다.
이 메세지를 다시 보내라는 것이다.
어디로?

아래 드래그한 주소로!


(솔루션 보낼 곳)


뒤에 the_message부분에 우리가 받은 코드를 입력해서 전송하면 된다.

물론 시간제한이 1.337초 이므로 손으로는 불가능하며
네트워크 통신도 원활해야한다...

먼저 파이썬 챌린지에서 했던 urllib.request를 이용해 접근해보겠다.!




(??..)



url로 접속하니 로그인을 한 후
해당 쿠키로 접속을 해달라고 메세지가 왔다.

즉, 그냥 url만 보내면 안되고
접속했을 때의 쿠키값을 HTTP 헤더에 포함시켜서 보내야하는 것이다.!

와이어샤크로 나의 쿠키값을 확인해보겠다.



(쿠키값 확인)



와이어샤크로
나의 쿠키값을 확인 할 수 있다.

이제 이 값을 포함시켜서 url접속할 것이다.



(쿠키 추가)



쿠키를 추가한 모습이다.
그리고 code에 decode하여 우리가 원하는 문자열을 받았다.



(결과화면)



우리가 보내야할 코드가 잘 전달 되었다 :)

이제~ 이 값을 url 뒤에 붙여서 전송할것이다.



(답 전송)



전송 하고나서 수신된 메세지는 텍스트로 오기때문에 읽기가 힘들다...
그래서
와이어샤크로 확인을 해야한다.
와이어샤크로 확인!


(..?)



정답이다! 하지만,, timeout... 1.63초로..
현재 카페에서 하고있어서 빠르지 못했나보다..

다시 여러번의 시도를 한 후에야 통과했다. ( 네트워크가 빠른 곳에서 하는걸 추천한다.)



(정답화면)



나는 이미 한번 풀었기 때문에
이미 풀었던 문제라고 메세지가 돌아왔다.

문제 해결!


'WarGame > WeChall' 카테고리의 다른 글

WeChall - (Training) Prime Factory  (0) 2017.02.13



이번 문제도
신기하지만
요상한 문제였다.

문제화면이다. 5번!



(5번 문제화면)




소리내서 읽어봐라??

일단 소스코드로!



(소스코드)



banner.p 라고 보인다.
주석으로 peak hell 비슷한 말이라고 힌트를 줬는데
피클? p 파일을 읽어봤다.



(banner.p 코드)



???.?
이건 뭐지
규칙도 없고
의미도 없는 듯했다.
banner.p로 url 수정해서 들어가면 되나?


(??)



다운하라는 화면이 떳다.
음.! 파일이구나

나는 급히(천천히)
python.org의 참조문서를 찾았다.
p를 눌러서 뭐가있나 보는 순간 피클? 이 있었다.
피자먹는 피클인줄 알았는데
심오한 뜻이 있었다.




(pickle 자료화면)



내용을 찾아보니
파일을 직렬화, 역직렬화 시켜주는 모듈.. 이라고 나와있었다.

내용을 더 찾아봤다. (당연히 도통 무슨소린지)

찾아보니
텍스트 파일이 네트워크로 전송될 때 텍스트 파일그대로 날라가지 않고
직렬화 시켜주어야하는데 그 때 쓰는 모듈이라고 나와있었다.
즉 텍스트 파일을 바이너리로 바꾸어주고 그 바꾸어준 파일이
스트림형태로 소켓에서 입출력 되는 것이다.

그건 그런거시고
문제의 데이터값을 입력해보았다.



(피클 입력)



(피클 입력)



음.. 그래도 규칙(?) 이 나름있는
언어로 바뀌었다. 형태를 보니 튜플이고 리스트였다.

일단 파일을 하나 만들어서 출력해보았다.



(출력 화면)





(출력화면)




음..
왼쪽 부분은 비거나 #이 들어가고
오른쪽 숫자는 합이 일정한거 보니 규칙이 있어보였다.

#의 개수에 따라 결과가 나오는 듯 했다.
반복문을 돌면서 출력!



(for 출력)





(출력화면)



이제 확실해졌다.
오른쪽 숫자는 개수이다.왼쪽은 들어갈 것으로 공백하고 #이 있다.

공백 몇개, # 몇개, 공백 몇개 이렇게 되있다.

일단 빈 문자열을 만들어주고
한행씩 돌면서 문자를 입력했다.




(완성코드)




(실행화면)



실행 결과로 channel이 나왔다.
멋있는 화면이다(?)

해왔던데로 url에 channel 입력


(정답으로 넘어간 화면)



정답이다!

덕분에
피클이라는 모듈을 공부하게 된 계기가 되었다.



'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 4번  (0) 2017.01.09
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 2  (0) 2017.01.01
Python Challenge - 1  (0) 2017.01.01


4번 문제또한
새로운 문법을 공부할 수 있는 좋은(?) 계기가.. 되었다.

문제 화면이다.




(4번 문제 화면)




(사진을 클릭한 화면)



44827을 url 끝에 입력하고 들어가니 비슷한 패턴의 숫자가 또 나와서
입력하였다.

세번째(?) 인가..



(손이 아플꺼야 화면)



정확히 이게 맞나 싶은 생각이 들때
이 문구가 나왔다.

이런식으로 계속 들어가야 정답이 나오는데
손으로는 힘들겠다.. 라는 생각이 들었다.

새로운 방법이 필요했고
파이썬에서 제공하는 url 관련 기능을 이용하기로 했다.




(파이썬 문서 참조)



여기 에 있는 것들 중에 urllib.request를 사용할 것이다.

먼저 url 내용을 가져오는 작업을 (실험? 을 통해) 하였다.




(문구가 나오는 화면)



내용을 가져오는 것은 read() 인것 같다.
이 내용을 보니 byte 형식이길래
decode를 해야겠다고 생각이 들었고

decode를 하였다.



(decode 화면)



decode 한 순간
내용이 사라졌다..
이 문제로 굉장히 난감하고 힘든 나날들을 보냈다.

데이터 내용을 접근만 하면 사라져서..

그리고 해결책을 찾아냈다.
urlopen으로 바로 여는게 아니라 그렇게 하면 안됬다.
request.Request로 얻어온 내용으로 open을 하고 그 내용을 read로 읽어 들인 후
decode를 하면 내용을 뽑아 올 수 있었다.

문서를 찾은것이라기보다 이것저것 노가다의 시도 끝에...



(24번째가 숫자이다.)



(뒤에 입력해야할 값을 뽑아냈다.)



이제 뒤에 입력할 내용까지 뽑아내는데 성공했다.

이제 이 값을 url주소에 입력하면서 반복적인 작업을 해줘야한다.

while 문으로 코드의 길이가 없으면 중지되게 계속 반복문을 돌렸다.



(처음 시도)



(결과화면)



아.. 3번째는 팔아프다는 어쩌구 문구 때문에 24번째가 아니었다.

고민없이 뒤에 94485를 수동으로 입력 후 다시 진행



(다른 문구)



2를 나누어서 다시 계속 진행하라고 했다.

음.. 16044를 2 나누어서 8022로 다시 진행




(8022 다시 진행)



(이번엔 또 다른...)



뭔가 착오가 있다고 나왔다.

일단 지금까지 규칙대로 nothing 뒤에 있는 저 숫자
63579를 입력했다.



(63579 입력)



(??! 정답?)



마지막에
peak.html이 나왔다.

내가 보던 정답 유형과 비슷해서 정답이라는게 느껴졌다.



(정답 입력)



(정답!)



정답이다.! :)

뒷걸음치다 소잡은 느낌이긴 하지만..

url 파이썬을 공부하게 된.. 계기가 되었다.

4번 해결..!



'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 5  (0) 2017.01.18
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 2  (0) 2017.01.01
Python Challenge - 1  (0) 2017.01.01

+ Recent posts