Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 피들러
- FTZ
- webhacking.kr
- ARP Redirect
- C언어
- C
- 써니나타스
- Linux
- 석문초등학교
- setCookie
- 명품자바프로그래밍
- 리버싱
- 웹
- 파이썬챌린지
- 파이썬
- 대외활동
- 쏙쏙캠프
- 암호수학
- 리눅스
- 웹해킹
- 자바
- pythonchallenge
- 경기대학교
- 실습문제
- java
- 해커스쿨
- SuNiNaTas
- Web
- hackerschool
- html5
Archives
- Today
- Total
Hongfluenza
[pythonchallenge]파이썬 챌린지2번 문제 본문
2번 URL 주소 : http://www.pythonchallenge.com/pc/def/ocr.html
2번 문제의 URL을 입력하면 다음과 같은 화면이 나온다.
recognize the characters. maybe they are in the book,
but MAYBE they are in the page source.
'page source' 라는 힌트를 얻어 2번 URL의 페이지 소스 속에 힌트가 있을 것이라는 걸 예상할 수 있었다.
소스 페이지의 주석처리 부분이 힌트인 것 같았다.
비슷한 문자들이 쓸데없이 너무 많은 것 같아 일단은 문자별로 분류를 해보기로 했다.
일단 주석처리 부분을 복붙해서 pythonchallenge2.txt 파일을 만들었다.
1 2 3 4 5 | from collections import Counter f=open('C:\Temp\pythonchallenge2.txt','r') s=f.read() print(Counter(s)) | cs |
구글링을 통해서 Counter 모듈을 사용하면 List나 String의 각 항목의 갯수를 셀 수 있다는 것을 알았다.
이를 통해서 주석 처리 부분을 항목별로 분류하면
1 | Counter({')': 6186, '@': 6157, '(': 6154, ']': 6152, '#': 6115, '_': 6112, '[': 6108, '}': 6105, '%': 6104, '!': 6079, '+': 6066, '$': 6046, '{': 6046, '&': 6043, '*': 6034, '^': 6030, '\n': 1219, 'a': 1, 'e': 1, 'i': 1, 'l': 1, 'q': 1, 'u': 1, 't': 1, 'y': 1}) | cs |
다음과 같은 결과가 나왔다.
앞쪽의 6000 몇 개나 되는 다량의 문자는 쓸모가 없다고 생각되어,
한 개씩 있는 알파벳을 모아보았다.
a,e,i,l,q,u,t,y
이게 무엇일까 고민하다가 대충 조합해보니
equailty
라는 단어였음을 알 수 있었다.
2번 url의 ocr 부분을 equailty로 바꾸어 주면 문제를 해결할 수 있다.
이 문제를 통해서 사용한
파일 입출력과 Counter 모듈을 다시 공부해 정리해야겠다.
'CHALLENGE > pythonchallenge' 카테고리의 다른 글
[pythonchallenge]파이썬 챌린지3번 문제 (0) | 2019.01.26 |
---|---|
[pythonchallenge]파이썬 챌린지1번 문제 (2) | 2019.01.02 |
[pythonchallenge]파이썬 챌린지 0번 문제 (2) | 2019.01.02 |