일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Mail Header injection
- vigenere cipher
- base16
- Web Hacking
- Linux
- Masonic Cipher
- Fortran 90
- Pigpen Cipher
- Navajo alphabet
- assembly
- overthewire
- 비즈네르 암호
- sql injection
- base32
- 시저 암호
- php_extract
- Javscript
- AVR
- Qrcode
- BASE64
- 카이사르 암호
- reversing
- webhacking
- burpsuit
- cookie
- JavaScript
- Caesar Cipher
- aslr
- sha1
- Python
- Today
- Total
My Drive
pythonchallenge #05 - pickle 본문
# 다섯 번째 문제
발음해라?
소스를 보니 아래와 같았다.
peak hell과 비슷한 소리?
우선 banner.p를 들어가 보니 아래와 같았다.
아, peak hell은 피클(pickle)이라는 힌트를 주려는 것 같다. python에 pickle이라는 모듈이 있고, 아래는 자료를 pickle을 이용해 dump했을 때 파일에 써지는 형태이다(S, p1, p2 같은 것들이 보이면.... )
파일을 읽어서 처리해야 할 듯 하므로 파일로 저장해준다.
pickle모듈은 간단히 아래와 같이 사용한다. 자료를 파일에 쓸때는 dump, 파일을 자료로 쓸때는 load를 사용.
결과는 아래와 같이 나온다. 빈칸 95, 빈칸 14, # 5, .... 앞은 문자 뒤는 개수를 의미하는 듯 하다.
튜플들의 리스트 여러개로 이루어져 있으므로 적절히 파싱해서 빈칸을 95번 빈칸을 14번 #을 5번, ... 출력하게끔 코드를 고쳐보았다.
수정된 코드는 다음과 같다.
결과는 아래와 같다.
파이썬에서 print를 줄바꿈 없이 하기 위해서는 끝에 ,를 쓰는 방법이 있다. 하지만 위와 같이 빈칸은 없어지지 않는다.
아래와 같은 방법은 빈칸까지 없앨 수 있는 방법이다.
그러므로
http://www.pythonchallenge.com/pc/def/channel.html
위와같이 url을 바꿔주면 다음단계로 넘어간다.
※ pickle
주로 복잡한 자료를 파일에 쓰고 읽을 때 pickle 모듈을 사용한다.
아래와 같이 pickle.dump(obj, file[, protocol]) 함수로 자료를 파일에 쓴다.
>>> users = {'kim':'3kid9', 'sun80':'393948', 'ljm':'py90390'}
>>> f = open('d:/python21/exam/users.txt', 'w')
>>> import pickle
>>> pickle.dump(users, f)
>>> f.close()
>>> f = open('d:/python21/exam/users.txt')
>>> a = pickle.load(f)
>>> print a
{'sun80': '393948', 'kim': '3kid9', 'ljm': 'py90390'}
'writeup' 카테고리의 다른 글
pythonchallenge #07 - image (0) | 2014.12.09 |
---|---|
pythonchallenge #06 - zipfile (0) | 2014.12.03 |
pythonchallenge #04 - html (0) | 2014.12.01 |
pythonchallenge #03 (0) | 2014.11.30 |
pythonchallenge #02 - 파일 입출력 (0) | 2014.11.28 |