디지털포렌식과 친해지기
  • 디지털포렌식전문가 2급 실기와 친해지기(실기)
    • 1. 디지털 포렌식 실기 준비하기
      • 1. BIT, BYTE, 파일 그리고 Hash
      • 2. 섹터와 사본 이미지 생성
        • 2-1. FTK Imager 활용 물리이미징(Registry 쓰기방지)
        • 2-2. EnCase 활용 물리이미징(EnCase 쓰기방지)
        • (연습용) 가상디스크 만들기
      • 3. 파티션과 파일시스템 복구
        • 3-1) 파티션과 파티션 테이블
          • 3-1.1) GPT 헤더, 파티션 Entry 복구
        • 3-2) 파일시스템과 파일시스템 복구
        • 3-3) 파일시스템 복구 실전 연습
      • 4-1. 무료도구 활용 분석연습
        • 0) 이미지 획득 및 파일시스템 복구
        • 1) 저장매체와 파일시스템 분석
        • 2) 파일과 친해지기
        • 3-1) 파일 관련 분석 1
        • 3-2) 파일 관련 분석 2
        • 4-1) 윈도우 아티팩트1
        • 4-2) 윈도우 아티팩트2
        • 5) 주요 응용 프로그램 아티팩트
          • 5-1) Sqlite 열어보기
        • 6) 키워드 검색 / Base64 Decode
        • 7) bitlocker
        • 8) 가상머신(참고)
        • 무료도구 활용 분석연습 정리
      • 4-2. EnCase 활용 분석연습
        • 0) 이미지 획득 및 파일시스템 복구
        • 1) 저장매체와 파일시스템 분석
        • 2) 파일과 친해지기
        • 3-1) 파일 관련 분석 1
        • 3-2) 파일 관련 분석 2
        • 4-1) 윈도우 아티팩트1
        • 4-2) 윈도우 아티팩트2
        • 5) 주요 응용 프로그램 아티팩트
          • 5-1) Sqlite 열어보기
        • 6) 키워드 검색 / Base64 Decode
        • 7) bitlocker
        • 8) 가상머신(참고)
        • EnCase를 활용한 분석연습 정리
      • 5. 주관식 - 기본 절차 및 증거법 관련
        • (정리 중) 디지털 증거관련 주요 판례
      • 6. 답안 제출 및 보고서 작성
      • 7. 요령 및 주의사항
    • 2. 실력 다지기
      • 1. 문제 저장매체 만들고 풀어보기
        • 기초 연습문제1-분석해보기(무료도구)
        • 기초 연습문제1-분석해보기(EnCase)
      • 2. 파일시스템 복구 연습
      • 3. NTFS 로그 분석 연습
    • 3. 실전 연습 문제
      • 2018 실전 연습 문제
        • 2018 실전 연습 - 분석해보기(무료도구)
        • 2018 실전 연습 - 분석해보기(EnCase)
      • 2019 실전 연습 문제
        • 2019 실전 연습 - 분석해보기(무료도구)
        • 2019 실전 연습 - 분석해보기(EnCase)
      • 2020 실전 연습 문제
        • 2020 실전 연습 - 분석해보기(무료도구)
        • 2020 실전 연습 - 분석해보기(EnCase)
      • 2023 실전 연습 문제(종합유형)
        • 2023 실전 연습 - 분석해보기(무료도구)
        • 2023 실전 연습 - 분석해보기(EnCase)
      • 2024 실전 연습 문제
        • 2024 실전 연습 - 분석해보기(무료도구)
        • 2024 실전 연습 - 분석해보기(EnCase)
    • 4. 기출 유형
  • 디지털포렌식과 친해지기
    • 1. BIT의 저장
      • 0) 준비사항!
        • 0-1) 주요 분석 도구 간단 소개 및 설정
        • 0-2) Python 을 이용한 개발 환경 구성
        • 0-3) Python 소스로 실행파일 만들기
      • 1) BIT, BYTES와 파일 그리고 Hash
        • 1-1) Hex Viewer 만들기
        • 1-2) BIT의 저장(참고)
      • 2) 저장매체와 섹터 그리고 물리이미징
        • 2-1) 가상 디스크 설정
        • 2-2) 물리이미징(raw) 실습
        • 2-3) 물리이미징 수집 도구 만들기(기초)
      • 3) 파티션
        • 3-1) MBR 파티션 테이블 구조
        • 3-2) GPT(GUID Partition Table) 구조
        • 3-3) 파티션 분석 도구 만들기(기초)
      • 4) 파일시스템 기초 분석
        • 4-1) 파일시스템 직접 만들어 보기
        • 4-2) FAT32 분석
          • 4-2.1) FAT32 분석(BR, Directory Entry - 데이터의 접근)
          • 4-2.2) FAT32 분석 2(FAT, LFN, 삭제)
          • 4-2.3) FAT32 분석 3 (특징과 분석 도구)
        • 4-3) NTFS 기초 분석
          • 4-3.1) NTFS 기초 분석(NTFS BR과 DATA 영역)
          • 4-3.2) $MFT와 MFT Entry
          • 4-3.3) MFT Entry의 주요 속성1($SI,$FILE,$DATA)
          • 4-3.4) MFT Entry의 주요 속성2(인덱스1, resident/Nonresident)
          • 4-3.5) MFT Entry 찾기(인덱스2, $ATTRIBUTE_LIST)
          • 4-3.6) NTFS 에서 파일의 접근 정리
          • 4-3.7) NTFS 주요 메타데이터 파일
          • MFT Entry 분석용
      • 5) 파티션과 파일시스템
      • 6) 사본 이미지 생성(논리/물리이미징)
      • 7) 파일과 친해지기
Powered by GitBook
On this page
  • 1. Python 소스 실행파일 만들기
  • 2. 아이콘 만들기(참고)
  • 2-1) 아이콘 변환 사이트 활용
  • 2-2) 아이콘 변환 도구 만들기(참고)
  • 3. 아이콘 적용(참고)
  • 4. 타이틀바 아이콘 추가(참고)
  1. 디지털포렌식과 친해지기
  2. 1. BIT의 저장
  3. 0) 준비사항!

0-3) Python 소스로 실행파일 만들기

Previous0-2) Python 을 이용한 개발 환경 구성Next1) BIT, BYTES와 파일 그리고 Hash

Last updated 5 months ago

1. Python 소스 실행파일 만들기

  1. 파이썬 소스를 실행파일로 만들어 봅시다..

  2. pyinstaller, auto-py-to-exe 2가지를 설치하려고 합니다. 다만 현재 윈도우에서 정상적으로 실행파일 생성을 위해서는 pyinstaller 버전을 어느정도 검증된 버전을 사용하도록 합시다. 먼저, 아래 명령어를 실행하도록 하자. > pip install pyinstaller==5.13.2

    > pip install auto-py-to-exe

  3. 아래 명령어를 실행하면 auto-py-to-exe가 실행되며, 버전 업데이트 표시를 하는데 아직은 최신버전이 안정적이지 않아 5.13.2버전을 사용하도록 합시다. > auto-py-to-exe

  4. 먼저 아래 소스를 test.py 를 생성하고, 아래 소스를 작성하여 저장하도록 합시다. (메모장이나, sublime 등 어떤것을 이용하여도 무관하다.) 아래 소스는 "프로그램 테스트" 글자가 보이고, 종료 버튼이 있는 간단한 GUI 프로그램입니다.

test.py
import tkinter as tk

# 메인 윈도우 생성
root = tk.Tk()
root.title("간단한 Tkinter 프로그램")
root.geometry("300x100")

# 레이블 생성 및 추가
label = tk.Label(root, text="프로그램 테스트")
label.pack(pady=10)

# 종료 버튼 클릭 시 프로그램 종료
def close_program():
    root.destroy()

# 종료 버튼 생성 및 추가
exit_button = tk.Button(root, text="종료", command=close_program)
exit_button.pack(pady=10)

# 메인 루프 실행
root.mainloop()
  1. cmd창에서 해당 소스가 있는 폴더에서 Python 명령어로 정상적으로 소스가 실행되는지 확인합시다. > python test.py

  2. 이제 이 소스를 실행가능 한 프로그램으로 만들어면.. 우선 auto-py-to-exe를 실행한 뒤 방금 작성한 소스를 지정해봅시다. > auto-py-to-exe One File, Windows Based 선택 후 하단의 [Convert .PY TO .EXE] 클릭 해봅시다.

  3. 완료가 되면 하단에 OPEN OUTPUT FOLDER를 선택하면 실행파일 경로를 열어줍니다. CLEAR OUTPUT를 선택 시 처음으로 돌아가서 프로그램 생성에 필요한 옵션을 재설정 할 수 있습니다.

  4. python test.py 와 동일한 기능을 하는 실행파일을 생성하여 주며 파이썬 소스로 만든 것을 실행파일로 만들어서 사용할 수 있습니다. 여러분들이 작성한 소스를 실행 프로그램으로 만들어서 활용 할 수 있으며, 파이썬이 설치되어 있지 않아도 실행이 가능한 것입니다.

아래 아이콘 만들기 및 적용, 타이틀바 아이콘 적용의 경우 필수는 아니고 추후에 완성도 높은 실행파일을 만들고자 할 때를 위한 것이니 필수는 아닙니다. 처음 공부하시는 분들은 그냥 이런식으로 할 수도 있구나 하고 한번 확인정도만 해두었다가 추후에 필요시 활용하도록 합시다.

2. 아이콘 만들기(참고)

  • 프로그램의 아이콘을 등록하는 방법을 알아보도록 합시다.

2-1) 아이콘 변환 사이트 활용

  • 인터넷에 그림파일을 아이콘으로 변환해주는 사이트는 매우 많습니다. 아무 사이트나 가서 그림파일을 업로드 하고 변환하도록 합시다.

2-2) 아이콘 변환 도구 만들기(참고)

  • 앞으로 간단한 필요 도구는 만들어서 사용해보도록 합시다. ChatGPT를 이용하여 변환도구 소스를 물어보고 직접 만들어 보도록 합시다.

  • 아이콘 변환 도구 소스를 이용하여 실행파일로 만들기

  1. 우선아래 최종 소스를 복사한 뒤 python 소스로 만들어서 저장하도록 합시다. 아래 소스를 생성한 전체 과정은 하단에 추가해 두었으니 마지막에 참고합시다.

img_to_ico.py
import os
import sys
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image

def select_file():
    # PNG 또는 JPG 파일 선택
    file_path = filedialog.askopenfilename(
        title="Select PNG or JPG file",
        filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")]
    )
    
    if file_path:
        try:
            # 이미지를 불러와서 크기 조정
            img = Image.open(file_path)
            img = img.resize((256, 256), Image.Resampling.LANCZOS)  # 이미지 크기 조정
            
            # 파일명을 가져와서 현재 디렉토리에 ICO로 저장
            file_name = os.path.splitext(os.path.basename(file_path))[0]  # 파일명만 추출 (확장자 제거)
            save_path = f"./{file_name}.ico"  # 현재 디렉토리에 저장 경로 설정
            
            # 파일 저장
            img.save(save_path, format="ICO")
            messagebox.showinfo("Success", f"ICO 파일로 변환 성공!\n저장 경로: {save_path}")
        except Exception as e:
            messagebox.showerror("Error", f"파일 변환에 실패했습니다: {e}")

def create_gui():
    root = tk.Tk()
    root.title("Image to ICO Converter")
    
    # 버튼 추가
    select_button = tk.Button(root, text="Select Image", command=select_file)
    select_button.pack(pady=20)

    root.geometry("300x150")
    root.mainloop()

if __name__ == "__main__":
    create_gui()
  1. 폴더를 만들고 해당 폴더에 python 소스를 저장하도록 합시다.

  2. python 저장한파일명.py 로 위 소스를 실행하여 보면 아이콘으로 변경 하고자 하는 그림파일을 선택하면 아이콘 파일로 변경하여 줍니다. 실행 파일과 같은 폴더에 저장됩니다.

  3. 또한 Python 이 설치되지 않았을 경우 사용할 수 있도록 1. Python 소스 실행파일 만들기에서 했던 방법처럼 Auto-py- to-exe를 이용하여 실행파일을 만들 수 있습니다.

  4. 변환이 완료 되면 하단에 output folder 를 열면, 실행파일을 만들 수 있으며, 앞으로 이것을 이용하여 그림파일을 아이콘으로 변환을 언제든지 할 수 있습니다. 이 실행파일은 아이콘 변환이 필요한 경우 계속 사용하여도 된다.

  5. 변환한 실행파일을 실행 한 뒤 원하는 이미지를 선택해봅시다.

3. 아이콘 적용(참고)

  1. auto-py-to-exe 를 실행 한 뒤 실행파일로 만들고자 하는 파이썬 소스를 선택 후 ICON 영역에서 위에서 만들어둔 아이콘을 선택하여 실행파일로 만들어 봅시다.

  2. 실행파일이 저장되는 곳을 가면 아이콘이 변경된 파일이 생성됩니다.

  • 그러나 혹시나 아래와 같이 아이콘이 변경되지 않는 경우 실행 파일을 우클릭 - 속성에서 확인 해보면 아이콘이 변경 되어 있습니다. 실제로는 아이콘이 변경된 상태이며, 다른데 경로에 복사해도 정상적으로 보입니다.

4. 타이틀바 아이콘 추가(참고)

  • 프로그램을 실행하면 상단 타이틀바 앞에 아이콘을 바꾸기 위해서는 약간의 소스 수정이 필요합니다

  • 특히, 실행파일을 하나(onefile)로 만들때 아래 소스를 꼭 포함하여야 합니다.

def resource_path(relative_path):
    try:
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)
전체 소스
import os
import sys
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image

def resource_path(relative_path):
    """ PyInstaller 패키징 시 리소스 경로를 찾기 위한 함수 """
    try:
        # PyInstaller에서 실행되는 경우 임시 폴더 경로
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

def select_file():
    # PNG 또는 JPG 파일 선택
    file_path = filedialog.askopenfilename(
        title="Select PNG or JPG file",
        filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")]
    )
    
    if file_path:
        try:
            # 이미지를 불러와서 크기 조정
            img = Image.open(file_path)
            img = img.resize((256, 256), Image.Resampling.LANCZOS)  # 이미지 크기 조정
            
            # 파일명을 가져와서 현재 디렉토리에 ICO로 저장
            file_name = os.path.splitext(os.path.basename(file_path))[0]  # 파일명만 추출 (확장자 제거)
            save_path = f"./{file_name}.ico"  # 현재 디렉토리에 저장 경로 설정
            
            # 파일 저장
            img.save(save_path, format="ICO")
            messagebox.showinfo("Success", f"ICO 파일로 변환 성공!\n저장 경로: {save_path}")
        except Exception as e:
            messagebox.showerror("Error", f"파일 변환에 실패했습니다: {e}")

def create_gui():
    root = tk.Tk()
    root.title("Image to ICO Converter")

    # 프로그램의 아이콘을 설정 (PyInstaller에서 패키징한 경우에도 사용 가능)
    icon_path = resource_path("icon.ico")
    try:
        root.iconbitmap(icon_path)
    except Exception:
        print("아이콘을 설정하는 데 실패했습니다. 파일이 존재하는지 확인하세요.")
    
    # 버튼 추가
    select_button = tk.Button(root, text="Select Image", command=select_file)
    select_button.pack(pady=20)

    root.geometry("300x150")
    root.mainloop()

if __name__ == "__main__":
    create_gui()
  1. 먼저 ChatGPT가 만들어준 전체 소스를 복사하여 소스코드에 붙여넣고 저장하자. 이때 하단 42줄에 icon.ico 부분이 소스 폴더와 같은 폴더에 위치 합시다. (전체경로를 넣어도 무방하나 우선은 편리하게 같은 폴더에 위치!)

  2. One File 옵션을 선택 한 후 [Additional Files] 에서 [Add files]를 선택 한 뒤 icon.ico 를 선택합시다.

  3. 이후 다시 실행파일을 생성한 뒤 실행을 해보면 아래와 같이 icon과 타이트바 아이콘도 적용 된것을 확인할 수 있습니다.

  • 전체 소스와, 위 소스를 chatGPT 한테 물어본 전체 내용을 적용한 전체 소스를 확인할 수 있습니다.

3줄 요약

  1. 파이썬 소스를 실행파일(exe)로 만들 수 있다면 추후에 Python 을 설치하지 않더라도 실행할 수 있는 프로그램을 만들 수 있어서 매우 유용하다.

  2. ChatGPT 등을 이용하면 간단한 기능을 하는 거의 모든 도구는 직접 다 만들 수 있으니 잘 활용하도록 하자.

  3. 다만 실행파일을 하나로만 만들때 아이콘을 넣는 부분에서는 약간의 소스코드 추가가 필요한것을 알고 있다가 나중에 필요시 참고하도록 하자.

생성이 완료되면, 알람이 표시되며, 같은 폴더에"파일명.ico"로 아이콘이 생성됩니다.