파이썬 첼린지(Python Challenge) - now there are pairs - 6

2015. 7. 14. 06:57IT관련

반응형

출처: http://www.pythonchallenge.com/pc/def/channel.html




왠 지퍼 사진이...

여기에는 Paypal 버튼만 있다. donate하라는 건가? html 소스를 봐도 특별한게 없다.

python challenge level 6로 검색해 보니 사진에 힌트가 있더라.

http://www.pythonchallenge.com/pc/def/channel.zip 을 받아서 압축을 풀어 본다.


엄청난 갯수의 텍스트 파일이 쏟아져 나오는데...

하나를 열어보면 "Next nothing is xxxxx" 라는 내용이 적혀 있다.

결국은 이전 문제와 비슷하게 xxxxx에 해당하는 파일을 읽고 거기에 나온 파일을 계속 찾아가라는 의미인듯.



찾아보니 46145.txt는 "Next nothing is "라는 문구 대신 "Collect the comments." 라는 내용이 있어 작성한 프로그램은 종료된다. 

또 찾아보니 이번 문제는 python의 zipfile 라이브러리를 이용하여 channel.zip의 comment를 보라는 거란다. 귀찮네.


ZIP file의 구조는 아래와 같다.

위 그림을 보면 Local header라는데에 comment가 들어 있을거 같아 보인다.
위키피디아를 좀 더 확인해 보면 Central directory file header는 local file header의 확장판이라고 한다.
여기에 comment가 포함되어 있음을 확인할 수 있다.

Central directory file header
OffsetBytes

Description

 04Central directory file header signature = 0x02014b50
 42Version made by
 62Version needed to extract (minimum)
 82General purpose bit flag
102Compression method
122File last modification time
142File last modification date
164CRC-32
204Compressed size
244Uncompressed size
282File name length (n)
302Extra field length (m)
322File comment length (k)
342Disk number where file starts
362Internal file attributes
384External file attributes
424Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the .ZIP file.
46nFile name
46+nmExtra field
46+n+mk

File comment

Python의 zipfile library는 써본적이 없으니 python.org와 python challenge로 검색해서 소스를 확인해 보고 작성했다.


코드를 보면 ZipFile object는 아마도 dictionary 형태로 ZipInfo를 관리하는것 같다. 파일이름이 key일듯...

그리고 ZipFile object로 압축되어 있는 파일의 내용을 바로 읽을 수도 있더라. 

반드시 마지막엔 ZipFile.close()는 해 줄 것.


그러면 콘솔에 HOCKEY라는 문구가 출력된다.

자.. hockey.html로 가보자... 


it's in the air. look at the letters.


뭔소리야 이거..




반응형