Metadata-Version: 2.4
Name: lshlhom
Version: 1.0.0
Summary: Protect Python files with 6-layer encryption
Home-page: https://t.me/yy22ff
Author: shlhom
Author-email: adojod1231@gmail.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: Arabic
Classifier: Intended Audience :: Developers
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-python
Dynamic: summary

# lshlhom

**Encrypt Python files with 6 layers of protection.**
**تشفير ملفات Python بـ 6 طبقات حماية.**

بالإنجليزية، مكتبة تشفير ملفات بايثون بطريقة تقنية، مبنية على 6 طبقات حماية متتالية.
عندك أداة بايثون وعايز توزعها للناس، بس ما بدك حد يشوف الكود أو يعدله؟ هذه المكتبة تسوي لك هذا الشي.

---

## Install / التثبيت

    pip install lshlhom

ما تحتاج أي مكتبة خارجية. كل شي مدمج داخل المكتبة.

---

## Usage / الاستخدام

    import lshlhom

    lshlhom.tshfer("my_tool.py")

بعد ما تشغل هذا الكود، بتحصل على ملف جديد اسمه:

    my_tool_shlhom.py

هذا الملف هو نفس الأداة بس مشفرة. وزعه للناس. يشتغل عندهم عادي، بس ما يقدرون يشوفون الكود الأصلي ولا يعدلونه.

---

## Advanced Usage / الاستخدام المتقدم

### تغيير اسم الملف الناتج

    lshlhom.tshfer("my_tool.py", output="protected.py")

### تغيير حجم الملف الناتج (كيلوبايت)

    lshlhom.tshfer("my_tool.py", size_kb=1200)

الحجم الافتراضي هو 800 كيلوبايت. زيده إذا بدك حماية أكبر.

### استخدام دالة بديلة بنفس الوظيفة

    lshlhom.protect("my_tool.py")

نفس الشي بالضبط، بس الاسم بالإنجليزي.

---

## What actually happens / شو يصير بالضبط

المكتبة تطبق 6 طبقات حماية على ملفك، بالترتيب التالي:

### 1. تحويلات AST (Abstract Syntax Tree)

- **إعادة تسمية المتغيرات**: كل متغير في الكود يتحول إلى اسم عشوائي مبني على hash
- **تشويش تدفق التحكم**: كل دالة تتحول إلى  loop مع state machine
- **تشفير النصوص**: كل string أو bytes في الكود يتشفر بـ SM4-CBC

### 2. Marshal Serialization

تحويل الكود إلى bytecode بايثون عبر ، ثم ضغطه بـ .

### 3. XOR Stream مزدوج

طبقتين من XOR بمفاتيح عشوائية، طبقة فوق طبقة.

### 4. تشفير SM4-CBC

خوارزمية SM4 هي التشفير الوطني الصيني الرسمي، بديل AES في الصين. قوية وسريعة.

### 5. ضغط Huffman

ضغط البيانات بطريقة Huffman tree مخصصة.

### 6. ترميز Base91

ترميز Base91 بدل Base64 — أكثر كثافة وأقل حجماً.

### 7. ELF Binary (اختياري)

إذا كان عندك  و  أو  مثبتين، المكتبة تبني ELF binary حقيقي من الكود المشفر، وتضيفه داخل الملف الناتج. إذا ما كانوا مثبتين، تستخدم  بديل.

---

## How the output file works / كيف يشتغل الملف الناتج

الملف الناتج () يشتغل بأي مكان فيه Python 3.7 أو أحدث. ما يحتاج مكتبات. لما يشغله المستخدم:

1. الملف يفتح نفسه
2. يفك الطبقات الست
3. يشغل الكود الأصلي

كل هذا يصير في الذاكرة فقط. الكود الأصلي ما يحفظ في أي مكان.

---

## Requirements / المتطلبات

- Python 3.7 أو أحدث
- لا يحتاج أي مكتبة خارجية
- للحماية الأقصى (ELF binary): يحتاج  و  أو 
- المدعوم رسمياً: Termux, Linux, Android
- يعمل على Windows و macOS في الوضع بدون ELF

---

## Use Cases / متى تنفعك

- عندك أداة بايثون وبدك توزعها للناس
- ما بدك حد يشوف المنطق الداخلي
- ما بدك حد يعدل الكود
- ما بدك حد يسرق الفكرة
- بدك تحمي كودك من النسخ

## When not to use / متى ما تنفعك

- إذا الكود يحتاج أداء عالي جداً (التشفير يأخذ ثواني عند التشغيل الأول)
- إذا الملف فيه بيانات ضخمة مدمجة (رح يكبر حجم الملف)
- إذا بتوزع الكود مفتوح المصدر (هذه المكتبة ضد الفكرة)

---

## Author / المؤلف

- Email: adojod1231@gmail.com
- Telegram: @yy22ff

---

## License

MIT
