일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- php_extract
- 시저 암호
- Mail Header injection
- vigenere cipher
- webhacking
- Navajo alphabet
- base16
- 카이사르 암호
- aslr
- Python
- overthewire
- base32
- reversing
- Qrcode
- Linux
- Web Hacking
- Fortran 90
- sha1
- AVR
- sql injection
- Pigpen Cipher
- Javscript
- cookie
- BASE64
- JavaScript
- assembly
- burpsuit
- Caesar Cipher
- 비즈네르 암호
- Masonic Cipher
- Today
- Total
My Drive
pythonchallenge #06 - zipfile 본문
# 여섯 번째 문제
마찬가지로 사진만 있어서 소스를 보았다.
아래 주석에는 별다른 이야기가 없고, 눈에 띄는 단어는 zip이라는 주석이다.
혹시나해서 url을 .zip으로 바꿔보니 아래와 같이 파일을 다운받을 수 있었다.
http://www.pythonchallenge.com/pc/def/channel.zip
910개의 텍스트 파일이 압축되어있엇다. readme.txt라는 파일이 아래은 아래와 같은 내용을 담고 있었고, 909개의 파일은 모두 지난 4번 문제와 비슷하게 이루어져 있었다.(Next nothing is ______)
시작 숫자는 90052이다.
처음에는 뭣도 모르고 우선 압축을 푼 후 아래와 같이 쉽게 코드를 짤 수 있었다.
결과는 아래와 같이 잘 나왔다.
그런데 comments를 모으라니???
알고보니 압축할 때는 comments라는 파일 설명을 쓸 수가 있었다.
아래 그림 맨 오른쪽 줄을 보면 알 수 있다. 저거를 순서대로 모아야 하는 것 같다.
이번에는 zipfile 모듈을 이용하여 압축을 풀지 않고 파일과 comments에 접근하는 방법을 이용하여 프로그램을 작성하였다.
결과는 아래와 같이 잘 나왔다.
전과 마찬가지로 빈칸 없이도 할 수 있다.
그러므로
http://www.pythonchallenge.com/pc/def/hockey.html
위와같이 url을 바꿔주면 다음단계로 넘어가는 줄 알았는데, 아래와 같이 떴다.
공기에 있고, 문자를 잘 봐라???
아... 자세히 보니 hockey는 OXYGEN이라는 단어로 이루어져 있었다.
따라서
http://www.pythonchallenge.com/pc/def/oxygen.html
위와같이 url을 바꿔주면 다음단계로 넘어간다.
※ zipfile
zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) : zipfile 객체 생성
ZipFile.namelist() : 압축되어 있는 파일 목록을 리턴
ZipFile.open(name[, mode[, pwd]]) : 압축되어 있는 파일을 압축해제하여 open
ZipFile.infolist() : 아래와 같은 zipinfo를 리턴
* zipinfo
- ZipInfo.filename
- ZipInfo.date_time (index 0:year, 1:month, 2:day, 3:hours, 4:minutes, 5:seconds)
- ZipInfo.comment
- ZipInfo.extra
- ZipInfo.create_system
- ZipInfo.create_version
- ZipInfo.extract_version
- ZipInfo.reserved
- ZipInfo.flag_bits
- ZipInfo.volume
- ZipInfo.internal_attr
- ZipInfo.external_attr
- ZipInfo.header_offset
- ZipInfo.CRC
- ZipInfo.compress_size
- ZipInfo.file_size
ZipFile.extract(member[, path[, pwd]]) : 현재 디렉토리에서 한 파일 압축 해제
ZipFile.extractall([path[, members[, pwd]]]) : 현재 디렉토리에 있는 모둔 파일 압축 해제
ZipFile.setpassword(pwd) : 패스워드 설정 (압축 해제 시 필요)
ZipFile.read(name[, pwd])
ZipFile.write(filename[, arcname[, compress_type]])
'writeup' 카테고리의 다른 글
pythonchallenge #08 - bz2 (0) | 2014.12.09 |
---|---|
pythonchallenge #07 - image (0) | 2014.12.09 |
pythonchallenge #05 - pickle (0) | 2014.12.02 |
pythonchallenge #04 - html (0) | 2014.12.01 |
pythonchallenge #03 (0) | 2014.11.30 |