29 มีนาคม 2558

Published มีนาคม 29, 2558 by with 0 comment

แนะนำการป้องกันโค้ด Python

บทความนี้จะพาผู้อ่านไปแนะนำวิธีการป้องกันโค้ดในภาษา Python กันครับ


หลังจากที่บทความ Decompiler Python ถอดโค้ดจากไฟล์ pyc กับ Decompiler ใน Python 3 ด้วย unpyc3 ได้ถูกเผยแพร่ออกไป ได้เกิดคำถามว่า เราจะป้องกันโค้ด Python ได้ยังไง บทความนี้จะพาไปแนะนำการป้องกันโค้ด Python กันครับ

การป้องกันโค้ดของ Python นั้น ทำได้ไม่ถึง 100% เพราะ Python ไม่ได้ถูกออกแบบมาให้มี obfuscated และด้วยหลักปรัชญาของภาษา Python เอง ที่โค้ดถูกเปิดและง่ายต่อการเปิดเผยและปรับเปลี่ยน

การป้องกันด้วยการทำ obfuscated

ดูวิธีการได้ที่ ป้องกันโค้ด Python ด้วย Obfuscation
-ข้อดี สามารถป้องกันโค้ดได้ระดับหนึ่งสำหรับนักเริ่มต้น
-ข้อเสีย ไม่สามารถป้องกันได้แบบ 100% และประสิทธิภาพของโปรแกรมอาจจะลดลงบ้าง

การป้องกันด้วยการคอมไพล์ให้เป็น python bytecode (.pyo, .pyc)
เป็นการป้องกันด้วยการคอมไพล์ให้เป็น .pyc
-ข้อดี ไฟล์ .pyo, .pyc ต้องใช้ python ให้ตรงกับเวชั่น รุ่น ระบบปฎิบัติการที่ถูกคอมไพล์มาเท่านั้นที่จะรันไฟล์ .pyo, .pyc ได้  จึงสามารถป้องกันได้ระดับหนึ่ง เพราะเครื่องมือถอดโค้ดอาจมีบางส่วนที่ไม่สามารถถอดโค้ดได้แบบ 100% หากภาษา Python รุ่นอื่นมีคำสั่งใหม่ ๆ เพิ่มขึ้นมา

-ข้อเสีย ไม่สามารถป้องกันได้แบบ 100% และเครื่องมือถอดโค้ดมีการพัฒนาอย่างต่อเนื่อง (เป็นดาบสองคมครับ)

การป้องกันด้วยการแปลงเป็น byte-code-compiled
เครื่องมือที่สามารถทำได้ มี py2exe  , cxfreeze , Cython และ Nuitka เป็นต้น
-ข้อดี โค้ดทำงานได้รวดเร็วเพราะได้แปลงเป็น byte-code-compiled แล้ว
สามารถป้องกันได้
-ข้อเสีย ไม่สามารถป้องกันได้ 100 % หากผู้ที่ทำการถอดโค้ด เป็นผู้ที่มีประสบการณ์มาก่อน อาจถอดโค้ดได้ และใช้เวลาพอสมควร ขึ้นอยู่กับความซับซ้อนของโค้ด (แต่ยากพอสมควร)

การป้องกันโค้ด Python โดยแปลงเป็นภาษาอื่นแล้วนำไปคอมไพล์

ตัวอย่างเครื่องมือนี้มี Cython (ภาษา C) , Jython (ภาษา Java) , IronPython (ภาษา C#) และ Nuitka (ภาษา C++) โดยแปลงโค้ดเป็นของภาษาอื่น ๆ แล้วจึงนำไปใช้งาน

-ข้อดี ป้องกันได้ระดับหนึ่งตามความสามารถของภาษานั้น และช่วยป้องกันการถอดโค้ดย้อนมาถึง Python ได้ระดับหนึ่ง เพราะต้องใช้เวลาพอสมควร ขึ้นอยู่กับความซับซ้อนของโค้ด (แต่ยากพอสมควร)

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

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)