Cara Mengamankan Kode Python dengan Termux

Saya punya beberapa projek python yang diunggah ke github. Namun sayangnya, ada salah satu projek yang direcode atau dicuri kode sumbernya kemudian diganti credit nya. Ini terjadi karena saya tidak mengamankan kode python.

Kejadian tersebut sangat menjengkelkan karena kerja keras saya dalam menyusun kode python tidak diapresiasi sama sekali. Mungkin kalian juga ada yang mengalami hal serupa.

Jadi malas untuk mempublikasi kode python lagi bukan?

Namun sekarang ada banyak cara untuk mengamankan kode pyhton. Kita bisa menggunakan marshal, zlib, dan base64 untuk mengkompilasi / compile kode python ke bentuk yang tidak bisa dibaca oleh manusia. Saya mendapatkan informasi ini dari situs github.

Berikut langkah-langkah untuk memberikan enkripsi pada kode python.

Compile Python dengan Marshal, Zlib, dan Base64

Marshal, zlib, dan base64 adalah modul python yang berfungsi untuk mengubah kode python menjadi bentuk lain, tetapi tidak mengubah fungsi dan output kode. Intinya, membuat kode sumber python tidak bisa dibaca manusia tetapi masih bisa dibaca oleh mesin.

Marshal akan membuat serialisasi kode, zlib akan mengkompresi, dan base64 akan mengubah kode menjadi string ascii. Jadi ketika kode python dicompile ke marshal, zlib, dan base6, kode tersebut akan memiliki perlindungan berlapis.

Jadi bisa menghambat aktivitas decompile marshal.

Untuk melakukan compile python, kita bisa menggunakan terminal seperti linux, termux, dan sejenisnya.

Disini saya menggunakan termux karena bisa dijalankan di Android.

Python ke marshal

Istilah untuk mengubah python ke marshal adalah comarsh. Dan berikut cara melakukannya.

Pertama kita buat dulu file compilernya.

Silahkan salin kode di bawah ini:

import sys
import marshal

if len(sys.argv) != 2:
    print("Usage: python comarsh.py <filePython.py>")
    sys.exit(1)

file_path = sys.argv[1]

with open(file_path, "r") as file:
    file_content = file.read()

comp = compile(file_content, 'TermuxUser', 'exec')

print(marshal.dumps(comp))

Masukkan kode tersebut ke file baru dan beri nama comarsh.py

Selanjutnya siapkan file python yang akan dicompile.

Sebagai contoh, saya akan compile file hallo.py yang isinya print('hallo').

Untuk memulai compile, jalankan perintah python comarsh.py namaFile.py (contoh: hallo.py) di terminal termux.

Ini hasil dari python comarsh.py hallo.py.

img

Tips: Apabila kode python kamu cukup komplek dan panjang, tambahkan parameter > namaFileBaru agar hasil compile tersimpan ke dalam file baru. Ini adalah contoh perintah lengkapnya python comarsh.py namaFile.py > hasil.py.

Setelah kode python berubah menjadi bentuk marshal, tambahkan kode marshal.loads agar kode python bisa dijalankan.

Ini kodenya:

import marshal
enc = kodeMarshalDisini
exec(marshal.loads(enc))

Dan ini screenshotnya:

img

Python ke zlib

Kamu dapat memilih untuk mengubah kode python langsung ke bentuk zlib atau dari python ke marshal lalu ke zlib.

Caranya akan sama.

Namun, hasil dari compile python ke marshal dan hasilnya dicompile lagi ke zlib akan memiliki perlindungan ganda. Saya akan contohkan yang ini.

Pertama, masukkan hasil compile python ke marshal ke dalam sebuah file. Disini saya memberi nama file tersebut dengan hasilmarshal.py.

Selanjutnya salin kode compile zlib berikut dan tempelkan di file baru. Beri nama file tersebut colib.py.

import zlib
import sys

if len(sys.argv) != 2:
    print("Usage: python colib.py <FileCompile.py>")
    sys.exit(1)

file_path = sys.argv[1]

with open(file_path, 'rb') as file:
    nilai_enc = file.read()
    enc = zlib.compress(nilai_enc)
    print(enc)

Jalankan file compile zlib dengan perintah python colib.py namaFileHasilMarshal.py.

Ini screenshot dari hasil python colib.py hasilmarshal.py

img

Tips: Apabila kamu ingin compile dari python langsung ke zlib, maka masukkan nama file python yang akan dicompile setelah colib.py. Contoh: python colib.py filePython.py.

Setelah kode menjadi bentuk zlib, tambahkan kode zlib.decompress agar dapat dijalankan dengan python.

Ini kodenya:

import zlib
enc = kodeZlibDisini
exec(zlib.decompress(enc))

Namun, jika kode zlib adalah compile dari hasil marshal, maka tambahkan juga marshal.loads. Jadi bentuknya akan seperti ini:

import marshal, zlib
enc = kodeZlibDisini
exec(marshal.loads(zlib.decompress(enc)))

Python ke base64

Sama seperti sebelumnya, kamu bisa memilih kondisi berikut untuk mengenkripsi kode python dengan base64.

  • python >> base64
  • python >> marshal >> base64
  • python >> zlib >> base64
  • python >> marshal >> zlib >> base64

Kondisi paling umum adalah dari kode python diubah ke marhal, kemudian hasilnya diubah lagi ke zlib, dan hasil zlib diubah ke base64.

Namun pola tersebut rawan didecompile. Hal ini karena ada beberapa tools decompile yang alogaritmanya menggunakan pola tersebut.

Jadi sebaiknya, pilih pola enkripsi base64 yang lain.

Semua pola memiliki proses atau cara compile yang sama. Sesuaikan saja hasil akhirnya,

Berikut langkah-langkah mengamankan kode python dengan base64.

1. Salin kode base64 compiler

Ini kodenya:

import base64
import sys

if len(sys.argv) != 2:
    print("Usage: python cobas.py <FileCompile.py>")
    sys.exit(1)

nilai_enc = sys.argv[1].encode()
enc = base64.b64encode(nilai_enc)
print(enc)

Tempelkan ke dalam file baru dan berikan nama cobas.py.

2. Siapkan file python yang akan dienkripsi dengan base64

Kamu boleh menggunakan file yang berisi kode python asli atau kode yang sudah dicompile ke dalam bentuk marshal ataupun zlib. Intinya, file tersebut harus berektensi .py.

Disini saya akan mengenkripsi file final.py

3. Jalankan base64 compiler

Caranya ketik perintah python cobas.py namafile.py lalu tekan enter.

Ini screenshot dari hasil python cobas.py final.py.

img

Setelah kode menjadi bentuk base64, tambahkan baris kode base64.b64decode agar kode dapat dieksekusi dengan python.

Ini kodenya:

import base64
enc = kodeBase64Disini
exec(base64.b64decode(enc))

Apabila kode yang diencode ke base64 adalah hasil marshal atau zlib, maka tambahkan juga kode pemuatnya.Saya sudah menulisnya di bagian atas. Untuk memperjelas, saya akan menulisnya kembali di bawah ini.

  • Marshal = marshal.loads
  • Zlib = zlib.decompress

Jadi kodenya akan menjadi:

import marshal, base64
enc = kodeBase64Disini
exec(marshal.loads(base64.b64decode(enc)))

atau

import marshal, zlib, base64
enc = kodeBase64Disini
exec(marshal.loads(zlib.decompress(base64.b64decode(enc))))

Kesimpulan

Kita perlu mengamankan kode python dengan cara mengubahnya ke bentuk lain seperti marshal, zlib, atau base64. Tujuannya agar kode asli tidak direcode atau dicuri oleh orang yang tidak bertanggung jawab. Ikuti semua langkah-langkah yang sudah saya tunjukan dengan baik agar kode python kamu memiliki keamanan berlapis.

Apabila ada hal yang ingin kamu tanyakan, silahkan tinggalkan komentar.

Tinggalkan Balasan