[python 일반] [Python] pyinstaller : 파이썬 컴파일 시 코드 암호화 & 복호화

pyinstaller 실행파일 암호화

흔히들 파이썬 코드 숨기는 방법으로 컴파일을 하곤 한다.

파이썬 코드를 컴파일하여 실행파일로 만들면 내부 코드를 볼 수 없기 때문이다.

하지만 파이썬 컴파일의 단점은 복호화가 쉽기 때문에 마음만 먹으면 코드를 까볼 수 있다는 사실...

따라서 파이썬 코드를 배포할 때는 암호화가 가장 중요한 이슈로 떠오르곤 한다.

오늘은 그 중 파이썬 코드 암호화 중 비교적 간단한 방법을 소개해보고자 한다.

pyinstaller 로 코드를 컴파일 했기 때문에 해당 패키지에서는 암호화 방법이 없나 찾아보던중 key 옵션이 있다는걸 발견했다.

사용법은 아주 간단하다.

pyinstaller --key="12345" main.py

요렇게 --key로 암호를 지정해주면 복호화 할때 키가 필요하다는 것.

실제로 해보니 에러가 떴지만

안내 사항대로 pip install tinyaes 를 해주니 잘 실행되었다.


pyinstaller 실행파일 복호화

실행파일 복호화도 간단하다.

https://github.com/WithSecureLabs/python-exe-unpacker

요 깃허브를 clone 한 다음에 스크립트를 사용하여 복호화하면 된다.

자세한 복호화 과정은 아래의 블로그 참고.

https://item4.blog/2018-11-04/Extract-Python-Code-from-PyInstaller-EXE-File/

 

요렇게 스크립트를 사용하여 exe파일을 복호화해주면-

python python_exe_unpack.py -i main.exe

복호화 실패가 뜨는걸 확인할 수 있다.

암호화가 잘 된 거겠쥬?

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

key 없이 컴파일한 실행파일을 복호화하면??

 

복호화가 바로 된다!

+) 덧

아래 블로그를 보니 key값을 알아내서 복호화 시킬 수 있다고 한다 ㄱ-

나는 따라해봤는데 에러가 나며 복호화가 안되었긴한데... 그래도 key를 알아낼 수 있다는 점에서 치명적인듯.

https://blog.system32.kr/286

 

+) 덧 2

pyinstaller 도큐먼드에서도 소스코드를 숨길려면 cython 을 쓰라고 권고하긴 한다.

https://pyinstaller.org/en/stable/operating-mode.html#hiding-the-source-code

 

pyInstaller 는 컴파일된 Python 스크립트(.pyc 파일)을 제공하는데, 원칙적으로는 코드 분해를 할 수 있다고...

cython 은 파이썬 모듈을 C로 변환하고 C를 어셈블리어로 컴파일하기 때문에 훨씬 더 보안성이 높다고 한다.

근데 cython은 Linux 환경에서만 잘 동작하고 Window에서는 먹통인 경우가 많다고 한다 ㅠㅠ

64bit에선 어찌저찌 되긴하는듯...

Linux 환경에서 실행파일 생성할 일이 있다면 cython 을 써봐야겠음!

 

[출처] https://m.blog.naver.com/skfnsid123/223002958441

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
87 [python 일반] 파이썬에서 도커 사용하기: 기초부터 배포까지 졸리운_곰 2024.12.01 410
86 [python 일반] 파이썬 디컴파일 방지 난독화 초간단 방법 file 졸리운_곰 2024.08.13 539
85 [python 일반] [Python] python 예제 - 프로그램 실행 위치 확인 방법 3종 - os.getcwd,... 졸리운_곰 2024.07.28 451
84 [python 일반] [Python] How to capture output of Python's interpreter and show in a Text widget? 졸리운_곰 2024.07.26 230
83 [python 일반] [Python] How to Fix Python’s “List Index Out of Range” Error in For Loops 졸리운_곰 2024.07.26 284
82 [python 일반] [Python] Python 리스트에 특정 값이 있는지 체크하기 졸리운_곰 2024.07.26 418
81 [python 일반] [Python] 원하는 시간마다 파이썬 자동 실행 file 졸리운_곰 2024.07.25 337
80 [python 일반] [Python] pyinstaller] PyInstaller -i, --add-data로 아이콘(icon)을 포함하자 file 졸리운_곰 2024.07.19 428
» [python 일반] [Python] pyinstaller : 파이썬 컴파일 시 코드 암호화 & 복호화 file 졸리운_곰 2024.06.10 374
78 [python 일반] ** Date형식을 String형식으로 변환 ** 졸리운_곰 2024.06.08 297
77 [python 일반] [Python] strftime과 strptime file 졸리운_곰 2024.06.07 377
76 [python 일반] How to Run a Periodic Background Task in Python 졸리운_곰 2024.06.07 324
75 [python 일반] *win32ctypes.pywin32.pywintypes.error when using pyinstaller in VS Code - Possible Virus/Trojan? 졸리운_곰 2024.06.07 453
74 [python 일반] 【Python】The 'pathlib' package is an obsolete backport of a standard library ・・・ 졸리운_곰 2024.05.30 318
73 [Python 일반] 파이썬 exe 파일 만들기 졸리운_곰 2024.05.30 307
72 [Python] 클립보드 무엇인가? Pyperclip을 통한 자동화 file 졸리운_곰 2024.05.06 364
71 [Python] PyQt와 PySide에 대한 잡설 file 졸리운_곰 2024.04.25 253
70 [python 일반] How to Update All Python Packages : 설치된 파이썬 패키지 모두 업데이트 하기 file 졸리운_곰 2024.03.16 604
69 [python, C++] Interfacing C++ and Python with the Python API : C++ 및 Python과 Python API의 인터페이스 file 졸리운_곰 2023.08.18 302
68 [python 일반] 파이참 에러 : Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding file 졸리운_곰 2023.07.06 354
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED