قد لا ترغب في إجراء هندسة عكسية لنصوص بايثون الحاسمة بواسطة جهات ضارة. إليك كيف يمكنك حمايتها.

لغة Python سهلة القراءة للغاية ولها استخدام واسع النطاق. بينما تشجع إمكانية القراءة هذه على التعاون ، إلا أنها تزيد من مخاطر الوصول غير المصرح به وسوء الاستخدام. يمكن لمنافسيك أو الجهات الخبيثة نسخ الخوارزميات الخاصة بك ومنطق الملكية دون ضمانات مناسبة. سيؤثر هذا سلبًا على تكامل البرنامج وثقة المستخدمين.

يؤدي تنفيذ إجراءات أمنية قوية ، مثل التعتيم والتحقق من الترخيص ، إلى تقوية برنامجك ضد التهديدات المحتملة. حماية نصوص بايثون ليست مجرد ممارسة ؛ إنها استراتيجية مهمة لضمان سرية ابتكاراتك والحفاظ على ثقة المستخدمين في المشهد الرقمي.

فهم بيرمور

بيرمور هي مكتبة سطر الأوامر. يساعد في حماية البرامج النصية وحزم Python وتشويشها. إنه يحول كود Python الأصلي إلى نموذج يصعب فهمه مع الحفاظ على وظائفه. تقوم عملية التعتيم بإعادة تسمية المتغيرات والوظائف والفئات إلى أسماء غير وصفية. كما أنه يزيل التعليقات ويعيد هيكلة الكود. هذا يجعل من الصعب إجراء هندسة عكسية للكود أو التلاعب به أو نسخه.

يمكن لـ Pyarmor تأمين نصوص Python النصية الفردية والحزم الكاملة وحتى إضافة التحقق من الترخيص إلى التعليمات البرمجية الخاصة بك.

instagram viewer

تثبيت مكتبة Pyarmor

تم إدراج Pyarmor في فهرس حزمة Python (PyPI). استخدم النقطة لتثبيته عن طريق تشغيل الأمر التالي:

pip install pyarmor

ليس من الضروري أن تقوم بتثبيت Pyarmor في نفس الدليل الذي يستضيف مشروعك. يمكنك تثبيته في أي مكان على جهاز الكمبيوتر الخاص بك وتكون قادرًا على تأمين أي نصوص Python من أي دليل.

ومع ذلك ، إذا كنت ترغب في تشغيل البرامج النصية المؤمنة دون الحاجة إلى تثبيت Pyarmor على الجهاز الهدف ، فأنت بحاجة إلى تثبيته في نفس الدليل الذي يستضيف مشروعك. هذا لأن البرامج النصية المؤمنة ستحتوي على مراجع إلى وقت تشغيل Pyarmor ، والتي يجب أن تكون موجودة من أجل تشغيل البرامج النصية.

تأمين نصوص بايثون الفردية

يعد تأمين البرامج النصية الفردية باستخدام Pyarmor أمرًا بسيطًا. سيكون النص التالي الذي يضيف رقمين بمثابة مثال.

defadd_numbers(num1, num2):
result = num1 + num2
print("The sum of {} and {} is: {}".format(num1, num2, result))

# Example usage
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)

استخدم سطر الأوامر للتنقل إلى الدليل الذي قمت بتثبيت Pyarmor فيه. ثم قم بتشغيل الأمر التالي لتشفير البرنامج النصي والتشويش عليه. يستبدل main.py باسم البرنامج النصي الخاص بك.

pyarmor gen --output dist main.py

بعد تشغيل الأمر ، يقوم Pyarmor بإنشاء مجلد جديد باسم حي. بداخله يوجد البرنامج النصي الآمن الخاص بك.

افتح البرنامج النصي الآمن لرؤية محتوياته.

تُظهر لقطة الشاشة أعلاه الإخراج بعد تشويش Pyarmor وتشفير نص الإضافة البسيط. لا يمكنك الآن معرفة ما يفعله النص بمجرد النظر إليه.

لتشغيل البرنامج النصي الآمن ، افتح الجهاز الطرفي أو موجه الأوامر وانتقل إلى الموقع الذي يحتوي على ملف حي الدليل. ثم استخدم الأمر التالي لتشغيل البرنامج النصي:

python dist/main.py

يستبدل main.py مع اسم البرنامج النصي الخاص بك. يجب أن يعمل النص كما لو كان بدون تشويش. اختبرها جيدًا للتأكد من أن جميع الوظائف تعمل كما تتوقع.

حماية حزم بايثون بأكملها

يمكن أن تحتوي الحزم على وحدات قليلة أو مئات الوحدات حسب الغرض منها. يمكن أن تكون حماية كل وحدة على حدة أمرًا شاقًا. لحسن الحظ ، تتمتع Pyarmor بالقدرة على تأمين حزمة كاملة دون الحاجة إلى تحديد كل وحدة على حدة.

افترض أن لديك حزمة بايثون بسيطة مسماة عينة_حزمة بالهيكل التالي:

sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py

أنت تستطيع إنشاء العديد من الوحدات كما تريد.

لتشفير الحزمة وتشويشها ، افتح Terminal أو موجه الأوامر وانتقل إلى الدليل الذي توجد فيه الحزمة الخاصة بك. ثم قم بتشغيل الأمر التالي:

pyarmor gen -O dist -r -i sample_package

يستبدل عينة_حزمة باسم الحزمة الخاصة بك. سيقوم هذا الأمر بتشفير دليل الحزمة والتشويش عليه وحفظ الإخراج المحمي في ملف حي الدليل. استخدم الحزمة المحمية كما تفعل مع أي حزمة Python أخرى.

على سبيل المثال. لاستخدام الحزمة النموذجية أعلاه ، قم بإنشاء برنامج نصي جديد داخل ملف حي الدليل:

from my_package import module1, module2

module1.say_hello()
module2.do_something()

عند تشغيل الكود ، يجب أن تعمل الحزمة كما كانت قبل تأمينها.

التحكم في الوصول إلى البرنامج النصي الخاص بك

قد ترغب في تحديد الوقت الذي يقوم فيه المستخدم بتشغيل البرنامج النصي الخاص بك. على سبيل المثال خلال الفترة التجريبية.

لتحديد مقدار الوقت الذي يتم فيه تشغيل النص البرمجي ، استخدم الأمر التالي عند تشويش النص البرمجي.

pyarmor gen -O dist -e 30 main.py

يستبدل 30 بعدد الأيام التي تريد أن يكون البرنامج النصي فيها نشطًا. يمكنك أيضًا استبداله بتاريخ محدد. بعد انتهاء الأيام تنتهي صلاحية البرنامج النصي.

يمكنك اختبار هذه الوظيفة عن طريق تحديد تاريخ في الماضي. هذا من شأنه أن يجعل تشغيل البرنامج النصي يؤدي إلى حدوث خطأ. استخدم الأمر التالي لإخفاء النص البرمجي بتاريخ انتهاء الصلاحية:

pyarmor gen -O dist -e 2022-01-01 main.py

ثم قم بتشغيل البرنامج النصي الآمن.

يوضح الخطأ أن مفتاح الترخيص منتهي الصلاحية وبالتالي لا يمكن تشغيل البرنامج النصي.

الموازنة بين الأمن والكفاءة

بينما تقدم Pyarmor آليات تشويش قوية لتعزيز أمان الكود الخاص بك ، فهي كذلك مهم لتحقيق التوازن بين تدابير الأمان والحفاظ على كفاءة وأداء برمجة. يمكنك تحقيق ذلك من خلال:

  • تقييم الحاجة للتعتيم: إذا كان برنامجك يتضمن خوارزميات خاصة أو بيانات حساسة أو منطق عمل فريد ، فإن التعتيم مفيد للغاية. ومع ذلك ، بالنسبة للنصوص مفتوحة المصدر ذات الحد الأدنى من مخاوف الملكية الفكرية ، فإن المفاضلة بين الأمان والأداء تميل أكثر نحو الكفاءة.
  • تقييم تأثير الأداء: Obfuscation يقدم وقت تشغيل إضافي بسبب العمليات والتحويلات الإضافية المطبقة على الكود. هذا التأثير ضئيل بالنسبة للنصوص الصغيرة ولكنه يصبح أكثر وضوحًا للمشاريع الكبيرة. يجب عليك تقييم الآثار المترتبة على أداء التشويش بعناية وإجراء اختبار للتأكد من أن برنامجك لا يزال مستجيبًا وفعالًا.
  • إجراء تحديثات وصيانة دورية: قم بانتظام بتحديث التعليمات البرمجية والتراخيص وآليات الأمان المبهمة للبقاء في صدارة الثغرات الأمنية المحتملة. وازن هذا مع الحاجة إلى تقليل الاضطرابات للمستخدمين.

هل يمكن لشخص ما كسر الشفرة المبهمة؟

يشير تكسير البرامج إلى عملية إزالة حماية النسخ أو آليات الترخيص لتطبيق برمجي. من أجل الحصول على وصول غير مصرح به إلى وظائفه الكاملة دون دفع ثمنها. من المهم ملاحظة أن التعتيم على برنامجك لا يحميه تمامًا من المفرقعات.

من خلال التصميم والموارد الكافية ، يمكن فك الشفرة الغامضة. هذا هو السبب الذي يجعلك تهدف إلى إجراء تحديثات وصيانة منتظمة لإصلاح أي ثغرات مشتبه بها.