본문 바로가기

디지털포렌식(Digital forensic)/키(key)

[파일] ZIP 파일 만들기 코드

반응형

 

python이 설치되어 있다는 가정하에 진행한다.

파이썬 설치와 실행은 간단하므로 다른 포스팅을 ref. 해주길


먼저, 아래와 같은 jpg파일을 준비한다.

파일이름은 example.jpg로 바꾼다.

 



파이썬 코드를 이용하여 jpg파일을 zip파일로 변환하는 코드를 다음과 같이 만들고

파일명은 zipzip.py로 한다.

 

zipzip.py
0.00MB

 

import zipfile

def compress_file(input_filename, output_filename):
    with zipfile.ZipFile(output_filename, 'w') as zipf:
        zipf.write(input_filename, arcname=input_filename)

# Example usage:
input_file = 'example.jpg'
output_zip_file = 'example.zip'
compress_file(input_file, output_zip_file)

 

zipzip.py 파일을 다음과 같이 cmd에서 실행한다.

 

example.jpg 파일이 example.zip 파일로 압축되었다.

zip파일이지만 파일의 크기는 변화가 없다.

 

알집의 egg파일로 압축을 해보았다.

 

egg를 사용해서 압축해도 압축파일의 크기는 변하지 않는다.
이유는?

이미 JPEG 파일이 압축된 형식이기 때문이다.

 

 

 

 

JPEG는 손실 압축을 사용한다.

파일 크기를 줄이기 위해 압축 과정에서 일부 정보가 영구적으로 삭제되게 된다.

이미 압축된 JPEG 파일을 ZIP 압축을 사용하여 압축하려고 하면

추가로 압축할 수 있는 원본 데이터가 없기 때문에 효과가 없다.
ZIP 압축은 텍스트 파일이나 특정 유형의 바이너리 파일과 같이 중복되거나 압축되지 않은 

데이터가 많이 포함된 파일을 압축할 때 효과가 있다. 

 

HxD로 example.jpg를 열어보면 다음과 같다.

 

마찬가지로 HxD로 example.zip을 열어보면 다음과 같다.

우측 상단을 보면 원본 파일이 example.jpg이고 JFIF였다는 정보를 볼 수 있다.

 

 

zip으로 압축된 파일을 열어보면 다음과 같이 원본 jpg 이미지가 포함되어 있음을 확인할 수 있다.

 


 

압축 파일의 종류와 분석에 대한 정보는 다음 기회에...

 

 

728x90