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 ครับ
ลบ