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/ ครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

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