[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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
557 [python 데이터분석] Anaconda | Conda update 반영 안됨(update 후에도 버전 변경 없음) file 졸리운_곰 2024.11.18 431
556 [python 일반] 파이썬 디컴파일 방지 난독화 초간단 방법 file 졸리운_곰 2024.08.13 539
555 [Python 인공지능] 기계 학습의 A to Z : IPython notebook과 scikit-learn을 활용한 기계 학습 file 졸리운_곰 2024.08.10 523
554 [python 일반] [Python] python 예제 - 프로그램 실행 위치 확인 방법 3종 - os.getcwd,... 졸리운_곰 2024.07.28 451
553 [python 일반] [Python] How to capture output of Python's interpreter and show in a Text widget? 졸리운_곰 2024.07.26 230
552 [python 일반] [Python] How to Fix Python’s “List Index Out of Range” Error in For Loops 졸리운_곰 2024.07.26 284
551 [python 일반] [Python] Python 리스트에 특정 값이 있는지 체크하기 졸리운_곰 2024.07.26 418
550 [python 일반] [Python] 원하는 시간마다 파이썬 자동 실행 file 졸리운_곰 2024.07.25 337
549 [python 일반] [Python] pyinstaller] PyInstaller -i, --add-data로 아이콘(icon)을 포함하자 file 졸리운_곰 2024.07.19 428
548 [python][자료구조] "pdf 취소선 검출" How to identify strike-out text from PDF files using Python 졸리운_곰 2024.07.18 544
547 [python][자료구조] 오픈 소스 Python PDF 파서 라이브러리 file 졸리운_곰 2024.07.16 444
546 [Python 인터넷] Telegram bot! 봇 만들기 with 파이썬 file 졸리운_곰 2024.06.19 531
545 [Cython] [Python] 고성능 Python을 위한 Cython 활용하기 3편 file 졸리운_곰 2024.06.10 405
544 [Cython][Python] 고성능 Python을 위한 Cython 활용하기 2편 file 졸리운_곰 2024.06.10 361
543 [Cython] [Python] 고성능 Python을 위한 Cython 활용하기 1편 file 졸리운_곰 2024.06.10 551
» [python 일반] [Python] pyinstaller : 파이썬 컴파일 시 코드 암호화 & 복호화 file 졸리운_곰 2024.06.10 374
541 [python 수학] matplot ylim How to set the axis limits y축 범위 고정 졸리운_곰 2024.06.08 434
540 [python 수학] [PYTHON] bar 그래프에 백분율 표시하기 file 졸리운_곰 2024.06.08 476
539 [python 수학] [Python] 막대 그래프 (Bar Chart) file 졸리운_곰 2024.06.08 357
538 [python 일반] ** Date형식을 String형식으로 변환 ** 졸리운_곰 2024.06.08 297
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED