[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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
64 [python][자료구조] "pdf 취소선 검출" How to identify strike-out text from PDF files using Python 졸리운_곰 2024.07.18 544
63 [python][자료구조] 오픈 소스 Python PDF 파서 라이브러리 file 졸리운_곰 2024.07.16 444
62 [python][자료구조] 벡터화 | Vectorization file 졸리운_곰 2023.12.21 330
61 [python][자료구조] Python의 Loop? NO! , Python의 Vectorization? OK!!! file 졸리운_곰 2023.12.21 473
60 [python][자료구조] Python - MySQL 데이터 추가, 삭제, 업데이트 졸리운_곰 2023.05.13 488
59 [python][자료구조] Python의 JSON - 문자열을 JSON으로 변환하는 방법 졸리운_곰 2023.05.06 456
58 [python][자료구조] [Python] Logging to MongoDB (로그 남기기) file 졸리운_곰 2023.03.24 428
57 [python][자료구조] [스파르타 웹 개발 종합] 파이썬으로 크롤링하고 DB에 저장하기(request, bs4, mongoDB 패키지 사용) 졸리운_곰 2023.03.12 461
56 [python][자료구조] [MongoDB] Document Query(조회) – find() 메소드 졸리운_곰 2023.03.08 315
55 [python][자료구조] Python(flask)으로 mongoDB 제어하기 – pymongo file 졸리운_곰 2023.03.08 604
54 [python][자료구조] django sqlite3 MySQL로 전환하기 file 졸리운_곰 2023.03.02 409
53 [python][자료구조] django에서 db.sqlite3 데이터를 mysql로 옮기기 졸리운_곰 2023.03.02 427
52 [python][자료구조] Python - JSON 파일 읽고 쓰는 방법 졸리운_곰 2023.02.04 480
51 [python][자료구조] [인코딩] 유니코드 인코딩 처리 (특히 json 입출력 시) 졸리운_곰 2023.02.04 363
50 [python][자료구조] Dropbox API 사용하기 (with python) 졸리운_곰 2022.12.03 306
49 [Python][자료구조] SQLAlchemy Tutorial(한글) - 2 졸리운_곰 2022.12.03 393
48 [Python]][자료구조] SQLAlchemy Tutorial(한글) - 1 졸리운_곰 2022.12.03 275
47 [python][자료구조] python anaconda 에서 mysql 접속 졸리운_곰 2022.01.25 657
46 [python 자료구조] 림코딩의 파이썬으로 csv 다루기 강좌 (읽기,쓰기,수정,추가) 졸리운_곰 2022.01.16 521
45 python - 읽은 후 kafka 메시지를 삭제하는 방법 졸리운_곰 2021.07.13 900
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED