Python là ngôn ngữ “thông dịch” – chạy đến đâu biên dịch tới đó. Source code Python cứ lồ lộ ra ngoài ai cũng thấy được. Bài viết này chia sẻ cách giấu source code Python bằng cách chỉ publish file binary. Còn file code thì giữ lại, không giao cho người khác.
Các ngôn ngữ lập trình đều có khả năng dịch ngược – decompile file binary. Tuy nhiên giấu được chút nào hay chút nấy, đỡ hơn để source code lộ thiên.
Source code sử dụng làm ví dụ
Để làm ví dụ ta viết 2 file đơn giản, 1 file chứa function cần gọi và 1 file main. Giả sử file lib.py sẽ chứa các source code xử lý cần giấu đi.
lib.py
1 2 |
def function1(str): print("Received: " + str + ": OK") |
main.py
1 2 3 |
from lib import * function1("vo hung vi") |
Khi ta chạy file main.py thì kết quả sẽ là:
Compile file lib.py thành binary
File source code python sẽ được compile thành file *.pyc. Khi chạy file main.py thì Python tự động tạo folder __pycache__. Trong folder __pycache__ sẽ có file binary tên là lib.cpython-36.pyc. File này được sinh ra từ file lib.py
Trong trường hợp bạn muốn compile tất cả source code Python ra file *.pyc thì chạy câu lệnh để compile (lưu ý dấu chấm đại diện cho folder hiện tại):
python -m compileall .
Hoặc bạn chỉ định rõ folder cần compile:
python -m compileall D:\PROJECT\test
Rename file lib.cpython-36.pyc thành lib.pyc, sau đó replace file lib.py.
Chạy file main.py ta vẫn có kết quả như cũ:
File *.pyc được tự động tạo ra nếu như file code được import vào 1 file khác. Trong bài là file lib.py tự động sinh ra mỗi khi chạy file main.py. Mục đích là để tiết kiệm thời gian nếu như file lib.py được include vào nhiều nơi.
Tổng kết
File lib.pyc sẽ giấu được code Python với những người thích tìm hiểu, còn đối với dân chuyên nghiệp cũng không giấu được. Bài này chỉ share cách đơn giản để code Python không bị lộ thiên mà thôi.