
Extension adds a new tab in Burp Suite called Extractor
قم بتنزيل مكتبة GSON من Maven
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
في Burp، انتقل إلى Extender/Options/Java Environment وحدد المجلد الذي نزّلت فيه مكتبة GSON من Google
أضف الامتداد من علامة تبويب Extender/Extensions في Burp. (الامتداد هو ملف jar الموجود في مجلد dist من المستودع).
استنسخ المستودع.
احفظ ملفات واجهة Burp في مجلد جديد بالانتقال إلى علامة تبويب Extender/APIs في Burp والنقر على زر Save interface files. ثم انسخ هذه الملفات إلى دليل src/burp من المستودع المستنسخ.
قم بتنزيل مكتبة GSON من Maven
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
من دليل extractor:
4. mkdir build
5. javac -cp gson-2.8.2.jar -d build src/burp/*.java
6. jar cf extractor.jar -C build burp
ثم حمّل ملف extractor.jar في علامة تبويب Extender في Burp. (ستحتاج أيضًا إلى توجيه مسار Burp إلى المجلد الذي خزنت فيه مكتبة GSON: Burp Extender > Options > Java Environment)
يجب أن يضيف علامة تبويب جديدة تسمى Extractor إلى Burp.

يضيف هذا الامتداد علامة تبويب جديدة في Burp Suite تسمى Extractor
داخل هذه العلامة يمكنك إضافة عقد إلى شجرة لوصف شكل البيانات في الطلبات أو الاستجابات. كل عقدة طرفية (Leaf) في تلك الشجرة ستنشئ علامة تبويب جديدة في كل مكان يُعرض فيه طلب أو استجابة، مع تحويل بيانات الطلب وفقًا لجميع العقد الأصلية وصولًا إلى العقدة الطرفية المحددة.
على سبيل المثال، إذا كان جسم الطلب عبارة عن حمولة XML تحتوي وسمًا محددًا يتضمن سلسلة مشفرة بـ Base64، فستبدو الشجرة كما يلي:

مع الإعداد أعلاه، سيحتوي كل طلب واستجابة الآن على علامة تبويب باسم Body>XML:tag_name>Base64، ويجب أن تحتوي تلك العلامة على البيانات المفكوكة من Base64 الموجودة في وسم XML tag_name في جسم الطلب. سيؤدي تغيير البيانات في تلك العلامة إلى ترميز البيانات بـ Base64 وحقنها مجددًا في نفس وسم XML في جسم الطلب (بحيث يمكنك تعديل الطلبات أثناء اعتراضها في Proxy/Intercept أو إنشاء حمولات في Repeater).
بدون معامل.
تقوم هذه العقدة بفك ترميز Base64 للبيانات الممررة إليها، وتعيد ترميزها عبر السلسلة عند تعديل البيانات على مستواها أو على مستوى أي من عقدها الفرعية.
بدون معامل.
تقوم هذه العقدة بفك ترميز URL الأساسي للبيانات الممررة إليها، انتبه إلى أن البيانات المعدلة داخل هذه العقدة أو أي من عقدها الفرعية قد تبدو مختلفة بعد إعادة ترميزها عبر السلسلة، حيث سيتم إعادة ترميز أحرف URL غير الصالحة فقط.
بدون معامل.
تفك هذه العقدة ضغط GZip للبيانات الممررة إليها وتعيد ضغطها بـ GZip إذا تم تعديلها هي أو أي من عقدها الفرعية.
بدون معامل.
تحوّل هذه العقدة البيانات الممررة إليها من ثنائي إلى سلسلة سداسية عشرية. وتعيد تحويل البيانات من سلسلة سداسية عشرية إلى ثنائي إذا تم تعديل بياناتها أو بيانات أي من عقدها الفرعية.
بدون معامل.
تحوّل هذه العقدة البيانات الممررة إليها من سلسلة سداسية عشرية إلى ثنائي. وتعيد تحويل البيانات من ثنائي إلى سلسلة سداسية عشرية إذا تم تعديل بياناتها أو بيانات أي من عقدها الفرعية.
معامل واحد:
تستخرج هذه العقدة البيانات من عقدة معامل URL واحدة من نوع x-www-form-urlencoded. يمكن استخدامها مباشرة كعقدة فرعية من Header لاستخراج معامل URL من عنوان الطلب، أو كعقدة فرعية من body إذا كان الجسم يحتوي فقط على معاملات بنمط URL، أو كعقدة فرعية لأي عقدة أخرى إذا كانت تحتوي على معاملات URL أو x-www-form-urlencoded. سيتم حقن البيانات المعدلة مرة أخرى في نفس موضع المعامل.
معاملان:
تُستخدم هذه العقدة لاستخراج معامل جسم من نوع multipart/form-data. سيتم حقن البيانات المعدلة مرة أخرى في نفس مكان المعامل.
معامل واحد:
تستخرج هذه العقدة البيانات من كوكي واحد، وسيتم حقن البيانات المعدلة مرة أخرى في الكوكي. يجب استخدام هذه العقدة كعقدة فرعية مباشرة من عقدة Header.
معامل واحد:
تستخرج هذه العقدة محتوى علامة ترويسة واحدة، وسيتم حقن البيانات المعدلة مرة أخرى في العلامة. يجب استخدام هذه العقدة كعقدة فرعية مباشرة من عقدة Header.
معامل واحد:
تستخرج هذه العقدة القيمة من أول عقدة XML تطابق معامل اسم عقدة XML. سيتم حقن البيانات المعدلة مرة أخرى في قيمة تلك العقدة نفسها.
معاملان:
تستخرج هذه العقدة قيمة المعامل من أول عقدة XML تطابق اسم عقدة XML. سيتم حقن البيانات المعدلة مرة أخرى في معامل تلك العقدة نفسها.
معاملان:
تستخرج هذه العقدة البيانات من حمولة JSON. يمكن استخراج البيانات من المستوى العلوي فقط للحمولة الممررة إليها؛ ومع ذلك يمكنك ربط هذه العقدة بعقد Json أخرى لاستخراج كائنات JSON المضمنة داخل كائنات JSON.
معامل واحد:
تقوم هذه العقدة بإجراء عملية AND على البيانات الممررة إليها مع البيانات من معاملها. يجب أن تكون البيانات الممررة إلى العقدة بصيغة ثنائية (استخدم عقدة HextoBin أولاً إذا لزم الأمر). سيتم إعادة تطبيق AND على البيانات المعدلة، ومع ذلك يرجى ملاحظة أن هذه العملية ذات قيمة قليلة لأن عامل AND ليس تقابليًا (لا يمكنك توقع أن تكون البيانات المعاد حقنها منطقية في سياقها).
معامل واحد:
تقوم هذه العقدة بإجراء عملية OR على البيانات الممررة إليها مع البيانات من معاملها. يجب أن تكون البيانات الممررة إلى العقدة بصيغة ثنائية (استخدم عقدة HextoBin أولاً إذا لزم الأمر). سيتم إعادة تطبيق OR على البيانات المعدلة، ومع ذلك يرجى ملاحظة أن هذه العملية ذات قيمة قليلة لأن عامل OR ليس تقابليًا (لا يمكنك توقع أن تكون البيانات المعاد حقنها منطقية في سياقها).
معامل واحد:
تقوم هذه العقدة بإجراء عملية XOR على البيانات الممررة إليها مع البيانات من معاملها. يجب أن تكون البيانات الممررة إلى العقدة بصيغة ثنائية (استخدم عقدة HextoBin أولاً إذا لزم الأمر). سيتم إعادة تطبيق XOR على البيانات المعدلة.
بدون معامل
لا تقوم هذه العقدة بأي معالجة: فهي تعرض فقط البيانات الممررة إليها، وهي مفيدة في الغالب لإضافة نقطة تحقق للتأكد من صحة البيانات الممررة عبر سلسلة من العقد عند نقطة محددة تم إدراج العقدة فيها.
معامل واحد:
تمرر هذه العقدة المحتوى عبر التعبير النمطي وتستخرج المجموعة الفرعية فقط، وهي مفيدة لتجهيز عقدة قبل تمريرها إلى عقدة أخرى.
مثال ==> Callback\\((.*)\\)
لديك خيار إنشاء العقد الخاصة بك بلغة جافا، حيث تم توفير ملف عقدة نموذجي في الكود باسم QueryNodeXXX.java، فقط انسخ والصق وأعد تسميته واتبع التعليمات الواردة داخله. وتذكر أيضًا إضافة عقدتك المنشأة حديثًا في Globals.java قرب نهاية القائمة (لا تغير أول سطرين من تلك القائمة إذا كنت لا تريد كسر أي شيء).