Skip to content

ป้องกันโค้ด Python ด้วย Obfuscation

สวัสดีครับทุกท่าน หลาย ๆ ท่านที่เขียนโปรแกรมด้วยภาษา Python เมื่อต้องการนำโปรแกรมไปให้คนอื่นใช้งาน คงกลัวการแอบขโมยหรือแก้ไขโปรแกรม ทำให้บางท่านต้อง compile python เพื่อป้องกันการแก้ไข บทความนี้ผมจะไปรู้จักวิธีป้องกันโค้ด Python ด้วย Obfuscation

Obfuscation คืออะไร
อธิบายแบบง่าย ๆ คือการทำให้โค้ดอ่านได้ยากขึ้นโดยมนุษย์ครับ ตัวอย่างเช่น โค้ดที่ผมเขียน

print("Hello World")

แต่เมื่อถูกทำ Obfuscation

o=print

o("Hello World")

จะพบว่า โค้ดถูกทำให้อ่านยากขึ้นนิดหน่อยครับ ถ้ามีโค้ดเป็นหลาย ๆ สิบ หรือ หลาย ๆ ร้อยบรรทัด ถูกทำ Obfuscation กว่าจะแกะได้ต้องใช้เวลานานมากหรือไม่ก็เลิกแกะไปเลยครับ
ใน Python มีเครื่องมือที่ช่วยทำ Obfuscation ให้เลือกอย่างมากมาย ผมขอแนะนำ pyminifier ครับ http://liftoff.github.io/pyminifier/ สามารถติดตั้งได้ง่าย ๆ โดยสั่ง

pip install -U pyminifier

ส่วนวิธีใช้ ถ้าต้องการ

pyminifier --obfuscate ที่อยู่ไฟล์.py

แล้วโปรแกรมจะแสดงโค้ด Python ที่ผ่านการทำ Obfuscation ออกมาครับ
ตัวอย่างโค้ด 0.py

y = 0
x = int(input("input: "))
if x == y:
    print ("=" , y)
elif x < y:
    print ("<" , y)
elif x > y:
    print (">" , y)
else:
    print ("No, It isn't num.")

แล้วผมใช้ pyminifier ทำให้โค้ด Python ถูกทำให้อ่านยากขึ้นด้วยการทำ Obfuscation

pyminifier --obfuscate  0.py

ผลลัพธ์โค้ด

X=0
b=int
l=input
J=print
x=b(l("input: "))
if x==y:
 J("=",y)
elif x<y:
 J("<",y)
elif x>y:
 J(">",y)
else:
 J("No, It isn't num.")

รายละเอียดการใช้งานโมดูล pyminifier เพิ่มเติม อ่านได้ที่ http://liftoff.github.io/pyminifier/ ครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories ไม่มีหมวดหมู่

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

3 thoughts on “ป้องกันโค้ด Python ด้วย Obfuscation

    1. wannaphong

      ถ้าเป็น Python แบบปกติที่ไม่ผ่านการทำ Obfuscation ตอน compile แล้วจะเร็วตามมาตราฐานครับ แต่ถ้าผ่าน Obfuscation น่าจะช้ากว่าแบบเดิมหน่อยหนึ่งครับ จะโค้ดจะเห็นได้ว่ามีตัวแปรเพิ่มขึ้นมาครับ เวลาเรียกใช้งานมีการดึงตัวแปรไปเก็บไว้หน่วยความจำเพิ่มอีกครับ ขึ้นอยู่กับคุณภาพโค้ดที่เขียนและเครื่อง ระบบ เวชั่นของ Python ที่ compile ครับ

      Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *