
أداة تراقب وتحلل وتحد من النطاق الترددي للأجهزة على الشبكة المحلية دون الحاجة إلى صلاحيات إدارية

هذا المشروع هو نسخة مفروعة (fork) مُصانة من bitbrute/evillimiter. المستودع الأصلي (upstream) لم يعد مُصانًا، لذا تستمر هذه النسخة المفروعة في التطوير - إصلاح الأخطاء، الميزات الجديدة، وتحديثات التوافق. انظر التغييرات الخاصة بالنسخة المفروعة أدناه.
أداة لمراقبة وتحليل وتقييد النطاق الترددي (الرفع/التنزيل) للأجهزة على شبكتك المحلية دون وصول مادي أو إداري.
evillimiter يستخدم انتحال ARP وتشكيل حركة المرور لتقييد النطاق الترددي للمضيفين على الشبكة. على الشبكات التي تدعم IPv6، يُستخدم انتحال NDP جنبًا إلى جنب مع انتحال ARP لقطع حركة مرور IPv6 للمضيف أيضًا، والتي كانت ستتجاوز حد/حظر IPv4 فقط.
تبحث عن إصدار متوافق مع Windows؟
تحقق من البديل مفتوح المصدر EvilLimiter for Windows.
شغّل هذه الأداة فقط على شبكة تملكها أو لديك إذن كتابي لاختبارها. انتحال ARP وNDP يعطل حركة مرور الآخرين عن قصد، والقيام بذلك على شبكة لا تتحكم فيها غير قانوني في معظم الأماكن.
سيتم تثبيت حزم Python المفقودة المحتملة أثناء عملية التثبيت.
evillimiter يحدد موقع tc وiptables وsysctl عبر PATH عند بدء التشغيل ويُظهر أخطاء واضحة إذا كان أحدها مفقودًا. يستدعي ثنائي iptables تحديدًا - على التوزيعات حيث يكون iptables عبارة عن طبقة توافق iptables-nft، يعمل هذا عمومًا، لكن جدار حماية يُدار بالكامل عبر قواعد nft أصلية دون تثبيت طبقة iptables ليس شيئًا تتحدث معه هذه الأداة.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
شغّلها باستخدام sudo (المقابس الخام (raw sockets)، iptables/tc تتطلب صلاحيات الجذر) - التشغيل هو ما يحتاج صلاحيات الجذر، وليس التثبيت:
sudo .venv/bin/evillimiter
ملاحظة: sudo python3 setup.py install (التعليمات القديمة) أصبح مهملًا في إصدارات setuptools الحديثة وغالبًا ما يفشل تمامًا مع ModuleNotFoundError: No module named 'setuptools' - sudo يشغّل Python الخاص بالنظام، والذي عادةً لا يحتوي على setuptools مثبتًا، على عكس Python الخاص بالبيئة الافتراضية (venv) الذي يديره pip لك. على التوزيعات التي تفرض PEP 668 (Arch، Debian 12+، ...)، يتم حظر التثبيت خارج البيئة الافتراضية تمامًا لهذا السبب.
بدلاً من ذلك، يمكنك تنزيل الإصدار المطلوب من صفحة الإصدارات.
اكتب evillimiter أو python3 bin/evillimiter لتشغيل الأداة.
evillimiter سيحاول حل المعلومات المطلوبة (واجهة الشبكة، قناع الشبكة، عنوان البوابة، ...) بنفسه، تلقائيًا.
يمكن إعطاء أي من العلامات أعلاه (باستثناء -f/--flush، وهو إجراء لمرة واحدة وليس تفضيلًا محفوظًا) قيمة افتراضية في ملف ini اختياري في ~/.config/evillimiter/config.ini (أو $XDG_CONFIG_HOME/evillimiter/config.ini). علامة سطر الأوامر تتجاوز دائمًا ملف الإعدادات.
[general]
interface = wlan0
colorless = true
auto_scan = true
log_file = /var/log/evillimiter.log
[watch]
interval = 30
range = 192.168.1.1-192.168.1.50
[watch] يحدد القيم الأولية التي تُضبط عادةً في وقت التشغيل عبر watch set interval/watch set range (انظر أدناه)، بحيث لا يلزم إدخالها في كل جلسة.
auto_scan (اختياري، معطل افتراضيًا) يشغّل scan ثم hosts تلقائيًا بعد بدء التشغيل مباشرة، بحيث لا تضطر لكتابتهما في كل جلسة.
evillimitertc/iptables التي تشكل حركة المرور خاصة بـ IPv4 فقط.watch (الذي يطابق عبر MAC) تتبعها؛ يبقى التقييد القديم مرتبطًا بعنوان MAC/IP لا يستخدمه أحد بعد الآن. يتم تمييز هذه العناوين كـ (random) في جدول hosts (بتها المُدارة محليًا مضبوط) بحيث يمكنك اكتشاف جهاز من المحتمل أن يظهر بهوية جديدة.كل ما يلي أُضيف في هذه النسخة المفروعة، فوق إصدار upstream الأخير (v1.5.0):
limit/block أيضًا حركة مرور IPv6 للمضيف بدلاً من IPv4 فقط~/.config/evillimiter/config.ini) للعلامات الافتراضية وإعدادات المراقبة-l/--log-file لحفظ رسائل النجاح/الخطأ في ملف--versionblock يحظر الآن أيضًا سلاسل INPUT/OUTPUT (حركة المرور من/إلى هذا الجهاز نفسه)، وليس فقط FORWARDwatch يعرض الآن حالة كل مضيف مُراقَب (متصل/غير متصل) ويضيف المضيفين تلقائيًا للمراقبة عند limit/blockانظر CHANGELOG لسجل الإصدارات الكامل، بما في ذلك إصدارات upstream.
تريد الإبلاغ عن خطأ، أو طلب ميزة، أو تقديم طلب سحب (pull request)؟ انظر CONTRIBUTING.md للقواعد المتعلقة بتقديم المشكلات وفتح طلبات السحب. يرجى أيضًا قراءة مدونة قواعد السلوك.
Evil Limiter - أنشأه في الأصل bitbrute، ويُصان الآن بواسطة DavidsonRafaelK - يُقدَّم "كما هو" و"مع جميع العيوب". لا يقدم المؤلف الأصلي ولا المُصان الحالي أي تصريحات أو ضمانات من أي نوع بشأن السلامة، أو الملاءمة، أو عدم وجود فيروسات، أو عدم الدقة، أو الأخطاء المطبعية، أو المكونات الضارة الأخرى لهذا البرنامج. هناك مخاطر متأصلة في استخدام أي برنامج، وأنت وحدك المسؤول عن تحديد ما إذا كان Evil Limiter متوافقًا مع معداتك والبرامج الأخرى المثبتة على معداتك. أنت أيضًا وحدك المسؤول عن حماية معداتك ونسخ بياناتك احتياطيًا، ولن يكون أي من الطرفين مسؤولاً عن أي أضرار قد تتعرض لها فيما يتعلق باستخدام هذا البرنامج أو تعديله أو توزيعه.
حقوق النشر (c) 2019-2026 بواسطة bitbrute، حقوق النشر (c) 2026 بواسطة DavidsonRafaelK للتغييرات الخاصة بالنسخة المفروعة. بعض الحقوق محفوظة.
Evil Limiter مرخص بموجب رخصة MIT كما هو مذكور في ملف الترخيص.
| الوسيطة | الشرح |
|---|
-h | يعرض رسالة المساعدة التي تسرد جميع وسائط سطر الأوامر |
-i [اسم الواجهة] | يحدد واجهة الشبكة (يتم حلها إذا لم تُحدد) |
-g [عنوان IP للبوابة] | يحدد عنوان IP للبوابة (يتم حله إذا لم يُحدد) |
-m [عنوان MAC للبوابة] | يحدد عنوان MAC للبوابة (يتم حله إذا لم يُحدد) |
-n [عنوان قناع الشبكة] | يحدد قناع الشبكة (يتم حله إذا لم يُحدد) |
-f | يمسح إعدادات iptables وtc الحالية. يضمن معالجة الحزم بشكل صحيح. |
--colorless | يعطل الإخراج الملون |
-l [مسار الملف]، --log-file [مسار الملف] | يلحق أيضًا كل رسالة نجاح/خطأ بهذا الملف (نص عادي، بدون رموز ألوان). |
--version | يطبع الإصدار المثبت ويخرج. |
| الأمر | الشرح |
|---|
scan (--range [نطاق IP]) (--intensity [1,2,3]) | يفحص شبكتك بحثًا عن المضيفين المتصلين. أحد أول الأشياء التي يجب فعلها بعد البدء.--range يتيح لك تحديد نطاق IP مخصص.--intensity يوازن بين السرعة والدقة: 1 سريع، 2 عادي (افتراضي)، 3 مكثف (مزيد من المحاولات/مهلة أطول، مفيد على الشبكات ذات فقدان الحزم). يبقى ثابتًا حتى يتم تغييره مرة أخرى - ينطبق أيضًا على عمليات إعادة الفحص الخلفية لـ watch.على سبيل المثال: scan --range 192.168.178.1-192.168.178.40 أو فقط scan لفحص الشبكة الفرعية بالكامل. |
hosts (--force) | يعرض جميع المضيفين/الأجهزة التي تم فحصها سابقًا ومعلومات أساسية. يعرض معرّفًا (ID) لكل مضيف مطلوب للتفاعل.--force يفرض عرض الجدول، حتى عندما لا يتناسب مع الطرفية. |
limit [ID1,ID2,...] [المعدل] (--upload) (--download) | يقيّد النطاق الترددي للمضيف(ين) المرتبط(ين) بالمعرّف المحدد. يحدد المعدل سرعة الإنترنت. تتم إضافة المضيف(ين) تلقائيًا إلى قائمة المراقبة.--upload يقيّد حركة المرور الصادرة فقط.--download يقيّد حركة المرور الواردة فقط.المعدلات الصالحة: bit، kbit، mbit، gbitيمكن أن يكون المعدل أيضًا up/down (مثل 200kbit/1mbit) لمعدلات رفع/تنزيل مستقلة - صالح فقط مع كلا الاتجاهين (بدون --upload/--download).على سبيل المثال: limit 4,5,6 200kbit أو limit all 1gbit أو limit 4 200kbit/1mbit |
block [ID1,ID2,...] (--upload) (--download) | يحظر اتصال الإنترنت للمضيف(ين) المرتبط(ين) بالمعرّف المحدد. تتم إضافة المضيف(ين) تلقائيًا إلى قائمة المراقبة.--upload يقيّد حركة المرور الصادرة فقط --download يقيّد حركة المرور الواردة فقط. |
netem [ID1,ID2,...] (--delay [مللي ثانية]) (--loss [%]) (--clear) | يحاكي تأخير/فقدان الحزم على المضيف(ين) - يتطلب أن يكون المضيف قد خضع بالفعل لـ limit، لأنه يلتصق بفئة tc الخاصة بتحديد المعدل الموجودة. يلتصق بأي اتجاه(ات) يكون المضيف مقيدًا فيه؛ لا توجد علامة اتجاه منفصلة.--clear يزيل netem مع إبقاء حد المعدل في مكانه.على سبيل المثال: netem 4 --delay 200ms --loss 10% أو netem 4 --clear |
free [ID1,ID2,...] | يلغي التقييد/الحظر عن المضيف(ين) المرتبط(ين) بالمعرّف المحدد. يزيل جميع القيود الإضافية. |
add [IP] (--mac [MAC]) | يضيف مضيفًا مخصصًا إلى قائمة المضيفين. سيتم حل عنوان MAC تلقائيًا أو يمكن تحديده يدويًا. على سبيل المثال: add 192.168.178.24 أو add 192.168.1.50 --mac 1c:fc:bc:2d:a6:37 |
monitor (--interval [الوقت بالمللي ثانية]) | يراقب استخدام النطاق الترددي لكل مضيف تم اكتشافه، وليس فقط المقيدين/المحظورين (الاستخدام الحالي، إجمالي النطاق المستخدم، ...).--interval يحدد الفاصل الزمني الذي يتم فيه تحديث معلومات النطاق الترددي بالمللي ثانية (الافتراضي 500 مللي ثانية).على سبيل المثال: monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [الوقت بالثواني]) | يحلل حركة مرور المضيف(ين) دون تقييد لتحديد من يستخدم مقدار النطاق الترددي.--duration يحدد مدة التحليل بالثواني (الافتراضي 30 ثانية).على سبيل المثال: analyze 2,3 --duration 120 |
watch | يعرض حالة المراقبة الحالية، بما في ذلك حالة كل مضيف مُراقَب (متصل/غير متصل) كما في آخر مسح. ميزة المراقبة تكتشف عندما يعيد مضيف الاتصال بعنوان IP مختلف. تتم إضافة المضيفين إلى قائمة المراقبة تلقائيًا عند limit أو block. |
watch add [ID1,ID2,...] | يضيف المضيف(ين) المحدد(ين) إلى قائمة المراقبة. على سبيل المثال: watch add 6,7,8 |
watch remove [ID1,ID2,...] | يزيل المضيف(ين) المحدد(ين) من قائمة المراقبة. على سبيل المثال: watch remove all |
watch set [السمة] [القيمة] | يغير إعدادات المراقبة الحالية. يمكن تغيير السمات التالية:range هو نطاق IP لفحص إعادة الاتصال.interval هو الوقت المنتظر بين كل فحص شبكة (بالثواني).على سبيل المثال: watch set interval 120 |
clear | يمسح نافذة الطرفية. |
quit | يخرج من التطبيق. |
?، help | يعرض معلومات الأوامر المشابهة لهذه. |
limit/block يبلغان عن فشل tc/iptables بدلاً من الادعاء بالنجاح بصمتByteValue للإجماليات في نطاق التيرابايت~/.config/evillimiter/history)، قابل للتنقل بـ ↑/↓hosts يعرض المعدل/الاتجاه المخصص للمضيفين المقيدين/المحظورين، بدلاً من مجرد "Limited"/"Blocked"scan --intensity [1,2,3] للموازنة بين سرعة الفحص والدقة (سريع/عادي/مكثف)auto_scan لتشغيل scan ثم hosts تلقائيًا عند بدء التشغيلmonitor يتتبع كل مضيف تم اكتشافه، وليس فقط المقيدين/المحظورينlimit يقبل معدلات up/down (مثل 200kbit/1mbit) لتقييدات رفع/تنزيل مستقلة في استدعاء واحدnetem [ID] --delay [مللي ثانية] --loss [%] لمحاكاة تأخير/فقدان الحزم على مضيف مقيد بالفعل (--clear لإزالته)