Python obfuscation (난독화)

2022. 7. 5. 01:51IT

python obfuscation, 파이썬 난독화에 대한 포스팅이다. 

Script 방식 언어는 쉽게 소스 코드를 얻을 수 있어 중요한 Logic이 쉽게 노출될 수 있다는 문제가 있다. 다른 언어들도  Reverse Engineering을 통해서 알고리즘을 빼려는 시도들도 있긴하다.

 

어쨌거나 나의 지적 재산권을 방어하기 위한 최소한의 장치는 필요하다. 다양한 무료 툴들이 존재하기 때문에 입맛에 맞게 취사 선택을 할 수 있다. 난독화라고 표현한 것과 같이 소스코드를 읽기 어렵게 바꿔준다는 것이지 100% 알고리즘을 숨길 수는 없다. 유료 툴 중에는 기능이 뛰어나다고 하니 상용화할 프로그램이라면 유료 툴을 고려해 봐야 한다.

 

그 중에서 내가 선택한 툴은 https://pyarmor.readthedocs.io/en/latest/ 이다.

https://pyarmor.readthedocs.io/en/latest/ 

 

PyArmor’s Documentation — PyArmor 7.6.0 documentation

© Copyright 2018 - 2020 Dashingsoft Corp. Revision 6de0ba50.

pyarmor.readthedocs.io

 

사용하기 쉽고 실행화일로도 바로 만들어 준다고 하니 간편할 것 같았다. 첫 난독화 툴이니 검증은 나중에 하는 것으로 하자. 

 

설치는 Terminal에서 pip install pyarmor로 아래와 같이 한다. 그리고 이 툴을 사용하기 위해서는 pyinstaller도 설치가 되어 있어야 한다. (pip install pyinstaller)

 

위의 링크로 들어가보면 documentation이 잘 되어 있다. Main Page --> Common Option을 들어가보면 다양한 방법을 통해 난독화를 할 수 있으니 검토해 보자. 

가장 간단한 방법으로 맨 처음 나온 것은 다음과 같다.

 

pyarmor --silent obfuscate main.py

 

 

명령을 터미널에 입력하고 나면, 아무런 표시도 나오지 않아  '이게 뭐지?'라는 생각이 잠시 들었다. pyinstaller를 이용해 실행화일을 만들때, dist 폴더가 만들어진다. 이 프로젝트는 한번도 pyinstller를 사용하지 않았었기 때문에 해당 폴더가 없어야 하는데 dist 폴더가 생성이 된 것을 볼 수 있었다. 그래서 해당 폴더에 들어가니 난독화된 py 파일들과 실행파일이 보인다.

 

난독화된 파일들을 살펴보니 다음과 같다.

처음 찾은 툴이고 사용방법도 너무 쉬웠고 결과도 만족스럽다. 

이 툴을 이용해 난독화 된 파일을 다시 읽기 쉽게 복원할 수 있는 방법이 있는지 찾아보는 것이 이 툴을 검증하는 방법이 될 것 같다. 

 

간단한 프로그램은 위와 같이 잘된다.

 

그런데 크기가 큰 프로그램을 난독화하니 실행파일이 만들어지지도 않고 난독화된 파일을 실행하려고 해도 에러가 발생한다. 원인을 찾다가 난독화시에 --silent 대신에 -d를 옵션으로 주고나니 다음과 같은 에러가 나왔다. 

 

RuntimeError: Too big code object, the limitation is 32768 bytes in trial version

 

아무 생각없이 사용하려고만 했고, 무료라고 생각을 했는데 아니었다. 라이선스에 대한 안내는 다음과 같이 홈페이지에 게시되어 있다.

 

 

링크를 따라가서 라이선스 비용을 확인하니 81,417원이라고 나온다. 구매를 할까 고민스럽다.

반응형

'IT' 카테고리의 다른 글

#2/12 아두이노 로봇 HowTo  (0) 2022.11.04
#1/12 아두이노 로봇 HowTo  (0) 2022.11.04
Python 얕은 복사와 깊은 복사  (0) 2022.06.17
Pyside6 Custom QTextEdit  (0) 2022.05.30
Python Menu & Toolbar  (0) 2022.05.25