Global Match & Replace (GMR) (إضافة Burp Suite)
Global Match & Replace (GMR) تمدّد Burp Suite بقواعد مطابقة/استبدال لتطبيقها عامًا أو عبر أدوات متعددة من اختيارك (Repeater, Intruder, Proxy, إلخ). وتوفّر فروقات (diffs) لكل طلب واستجابة لترى بالضبط ما الذي تغيّر.
يستخدم هذا الامتداد واجهة Burp Montoya API.
الميزات
- مطابقة/استبدال عام عبر أدوات Burp (وليس Proxy فقط)
- محرك قائم على القواعد مع استهداف لكل قاعدة (طلب/استجابة + اختيار الأدوات)
- نوعان من القواعد: Simple (مع أحرف بدل) و RegEx
- دعم متعدد الأسطر لكل قاعدة للمطابقة عبر فواصل الأسطر
- لوحة اختبار القواعد مع إبراز المطابقات والاستبدالات
- عرض GMR Diff في محرّري الطلبات/الاستجابات يعرض المحتوى الأصلي مقابل المعدَّل
- حفظ الجلسة للقواعد وفروقات GMR (مع حجم ذاكرة مؤقتة قابل للتهيئة)
التثبيت
من إصدار GitHub
- نزّل أحدث
burp-global-match-replace-*.jar من صفحة Releases.
- في Burp Suite: Extensions → Installed → Add
- اختر Java كنوع الامتداد وحدّد ملف JAR.
البناء من المصدر
سيكون JAR في build/libs/.
ملاحظة: يستهدف هذا المشروع Java 21 bytecode لتوافقه مع Burp. استخدم Java 21+ لتشغيل البناء (اضبط JAVA_HOME وفقًا لذلك).
نظرة عامة على القواعد
لكل قاعدة الخصائص التالية:
- Enabled: ما إذا كانت القاعدة نشطة.
- Target: ما إذا كانت القاعدة تنطبق على الطلبات أو الاستجابات.
- Match Type:
- Simple: مطابقة نص حرفي مع دعم أحرف البدل.
- RegEx: دعم كامل للتعبيرات النمطية.
- Multiline:
- Off:
. لا تطابق أسطرًا جديدة.
- On:
. تطابق أسطرًا جديدة (DOTALL).
^ و $ تعملان دائمًا لكل سطر (MULTILINE مفعّل).
- Tools: أدوات Burp التي تنطبق عليها القاعدة.
- Match / Replace: نمط المطابقة ونص الاستبدال.
- Comment: ملاحظة حرة للقاعدة.
ملاحظة: إذا لم يتم تحديد أي أدوات، فلن تعمل القاعدة.
المطابقة البسيطة (مع أحرف البدل)
تطابق القواعد البسيطة نصًا حرفيًا مع أحرف بدل اختيارية:
* → أي عدد من الأحرف
? → حرف واحد بالضبط
بشكل افتراضي (عند إيقاف multiline)، لا تعبر أحرف البدل فواصل الأسطر. إذا كان multiline مفعّلًا، يمكن لـ * و ? أن يمتدّا عبر أسطر جديدة.
لمطابقة * أو ? حرفيًا، ضع قبلها شرطة مائلة عكسية:
\\* → * حرفيًا
\\? → ? حرفيًا
\\\\ → شرطة مائلة عكسية حرفية
مثال (سطر واحد):
غيّر وكيل المستخدم.
Match: User-Agent: *
Replace: User-Agent: Mozilla/5.0 (...) Chrome/123
مطابقة RegEx
قواعد Regex هي تعبيرات نمطية Java قياسية. يستخدم المحرك دائمًا MULTILINE، ويستخدم DOTALL فقط إذا كان Multiline مفعّلًا. وهذا يعني:
^ و $ يطابقان حدود الأسطر افتراضيًا
. لا تطابق أسطرًا جديدة إلا إذا كان multiline مفعّلًا
مثال (سطر واحد):
إزالة ترويسة.
Match: ^X-Test:.*$\r?\n
Replace:
ملاحظة: $\r?\n في النهاية يزيل سطر الترويسة ونهاية السطر. استخدام $ فقط سيُبقي فاصل الأسطر في مكانه.
مثال (متعدد الأسطر):
إزالة تعليقات HTML.
Match: <!--.*?-->
Replace:
Multiline: ON
لوحة القواعد (تبويب Suite)
يوفر تبويب Suite إدارة كاملة للقواعد واختبارها:
قائمة القواعد
الأعمدة:
- Enabled: تبديل القاعدة تشغيل/إيقاف
- Target: طلب / استجابة
- Match Type: Simple / RegEx
- Multiline: “On” عند التفعيل
- Tools: قائمة الأدوات المحددة
- Match / Replace / Comment
الأزرار
- Add: إنشاء قاعدة جديدة
- Edit: تعديل القاعدة المحددة
- Duplicate: استنساخ القاعدة المحددة (تُنشأ معطّلة لتعديلها بأمان)
- Remove: حذف القاعدة المحددة
لوحة اختبار القاعدة
- الصق طلب/استجابة نموذجيًا في Sample Input
- حدد قاعدة
- انقر Test Selected Rule
يبرز ناتج الاختبار:
- النص المطابق في المدخلات
- نص الاستبدال في المخرجات
- مجموعات الالتقاط في Regex (بألوان مختلفة)
عرض GMR Diff
عندما تعدّل قاعدة طلبًا أو استجابة، يظهر تبويب “GMR Diff” داخل محرر الطلب/الاستجابة (في أدوات مثل Proxy وRepeater وIntruder وغيرها).
سيتم تمييز الطلبات/الاستجابات المعدّلة باللون الأصفر، وتُعيّن الملاحظة إلى “Global Match & Replace”.
ما يعرضه
- ملخص لجميع القواعد التي طُبّقت
- لوحتا الأصلية والمعدّلة
- الاختلافات المميزة
- أزرار التالي/السابق للتنقل بين التغييرات
متى يظهر التبويب
يظهر تبويب GMR Diff فقط إذا عدّلت قاعدة الرسالة فعلًا. إذا لم تُطبَّق أي تغييرات، لن يظهر التبويب. قد يكون هذا محيّرًا أحيانًا إذا كان هناك مثلًا GMR Diff على الطلب فقط أو الاستجابة فقط.
التمييز
- تعرض اللوحتان تمييز الاختلافات للمناطق المتغيرة
- أزرار التنقل (
< و >) تتنقل عبر التغييرات
- يعرض العداد عدد التغييرات المكتشفة والموضع الحالي
الحفظ والإعدادات
ما يُحفظ في الجلسة
- القواعد (بما في ذلك إعداد multiline والتعليقات وما إلى ذلك)
- فروقات GMR (المحتوى الأصلي/المعدّل + ملخصات القواعد المطبّقة)
لوحة الإعدادات
تتضمن صفحة إعدادات الامتداد:
- سقف ذاكرة GMR diff المؤقتة (MB)
- يتحكم في مقدار تاريخ الفروقات المخزّن في الجلسة
- تخزّن الذاكرة المؤقتة المحتوى الأصلي/المعدّل بالإضافة إلى ملخصات القواعد المطبّقة
- تستخدم سياسة إخلاء LRU: تُتخلص من أقدم الفروقات أولًا عند تجاوز السقف
- القيم الأكبر تُبقي الفروقات لعدد أكبر من الطلبات التاريخية
ملاحظات / تفاصيل السلوك
- القواعد البسيطة لا تفسّر
$1 أو المراجع العكسية في الاستبدالات.
- قواعد Regex تدعم
$1 و$2 وما إلى ذلك في الاستبدالات.
- مفتاح Multiline يؤثر فقط على كيفية تطابق الأنماط، وليس على سلوك الاستبدالات.
- سجل GMR Diff يُخزَّن مؤقتًا ويُحفظ في الجلسة (وفقًا لسقف الحجم).
الترخيص
GPL v3