Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

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

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
haptyc — مكتبة بايثون لـ Turbo Intruder تضيف دعم موضع الحمولة وأنواع الهجوم Sniper/Clusterbomb/Pitchfork مع توليد اختبارات قائم على الوسوم لاختبار الاختراق عبر HTTP. | Kitploit
أدوات/GitHubGitHub/defparam/haptyc
توليد الحمولةأمن الويبالاختبار العشوائياختبار الاختراق
GitHubdefparam/haptyc

haptyc

مكتبة بايثون لـ Turbo Intruder تضيف دعم موضع الحمولة وأنواع الهجوم Sniper/Clusterbomb/Pitchfork مع توليد اختبارات قائم على الوسوم لاختبار الاختراق عبر HTTP.

عرض المستودع
941526منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة


Haptyc


إطار عمل لتوليد الاختبارات

tag

ما هو Haptyc؟

Haptyc هي مكتبة Python تم بناؤها لإضافة دعم مواقع الحمولات (Payload Positions) وأنواع الهجمات Sniper/Clusterbomb/Batteringram/Pitchfork إلى Turbo Intruder. بينما يحقق Haptyc هذه الأهداف بشكل جيد، فإنه يقدم أيضًا طريقة أبسط للتعبير عن تسلسلات الاختبار بشكل عام. على الرغم من أن هذه المكتبة صُممت لاستهداف Turbo Intruder، إلا أنها لا تعتمد بشكل صارم على Turbo Intruder ويمكن استخدامها في أي مكان يتطلب توليد اختبار في سياق Python. للأسف، في الوقت الحالي، نظرًا لأن Haptyc بُنيت لمفسر Jython، فهي تدعم فقط Python 2.7 (على الرغم من أن التغييرات المستقبلية ستعمل على إصلاح ذلك).

ما هي وسوم Haptyc (Haptyc tags)؟

وسوم Haptyc هي وسوم يمكن للمختبر استخدامها لتعليق حمولة إدخال أصلية. يمكن للمختبر استخدام وسوم متعددة لإحاطة أجزاء رئيسية من البيانات في طلب HTTP لتغليفها كحمولة موضعية. عند توليد الاختبارات، سيقوم Haptyc بتحليل جميع الوسوم في الحمولة الأصلية وتوليد اختبارات وفقًا للوظائف المرتبطة بأسماء الوسوم. عندما يقوم Haptyc بتقييم وسم Haptyc، فسينفذ وظيفة الوسم المرتبطة (تسمى هذه تحويل Haptyc) لحمولة اختبار لوضعها في موضع الوسم المقابل في الطلب. تستلم كل وظيفة وسم وسيطه data ووسيطه state. قد يحتوي وسيط data على البيانات الداخلية للوسم أو قد يحتوي على تسلسل حمولة اختبار آخر. وسيط state هو كائن حالة مرتبط بالوسم حيث يمكن تخزين الحالة بين تكرارات الاختبار. دعنا نستعرض مثالاً.

المثال 1: تكرار قائمة بسيط

الحمولة الأصلية:

GET /animal/[+GuessAnimal]dog[+end] HTTP/1.1

فئة Haptyc وتحويل Haptyc:

from haptyc import *

original = "GET /animal/[+GuessAnimal]dog[+end] HTTP/1.1"

class TestLogic(Transform):
	@ApplyList(["snake","cat","owl","lion"])
	def test_GuessAnimal(self, data, state):
		return data + "?original=" + self.inner() + "&attempt=" + str(state.iter)

TestFactory = TestLogic(original)
for test in TestFactory:
	print(test)

الاختبارات المولدة:

GET /animal/snake?original=dog&attempt=0 HTTP/1.1
GET /animal/cat?original=dog&attempt=1 HTTP/1.1
GET /animal/owl?original=dog&attempt=2 HTTP/1.1
GET /animal/lion?original=dog&attempt=3 HTTP/1.1

في المثال أعلاه، نرى كيف يمكن التعبير عن الاختبارات بطريقة بسيطة باستخدام Haptyc. أولاً، يتم استيراد مكتبة Haptyc. ثانيًا، قمنا بتعريف البيانات الأصلية مع تعليقات وسوم Haptyc (GuessAnimal). بعد ذلك، يتم تعريف فئة TestLogic وتمديدها كفئة Transform. داخل هذه الفئة، يتم تسجيل كل طريقة تبدأ بـ test_ كوسم Haptyc للتقييم في الحمولة الأصلية. نستخدم مزخرف منطق (decorator) لتطبيق منطق الحالة لهذا التحويل Haptyc. في هذه الحالة، نستخدم المزخرف @ApplyList(list) لإخبار Haptyc بتوليد اختبار لكل عنصر في القائمة المحددة ووضع ذلك العنصر في تحويل Haptyc كوسيط data. داخل التحويل، نعيد نسخة مطفرة (mutated) من البيانات لإدراجها مرة أخرى في موضع الوسم. في هذه الحالة، يكون التحوير هو عنصر القائمة كبيانات متسلسلة مع البيانات المحاطة بالوسم (dog) ثم متسلسلة مع قيمة iter في كائن الحالة. أخيرًا، يظهر باقي كود Python إنشاء كائن TestFactory وتوليد جميع الاختبارات في حلقة for. هذا مثال على هجوم نمط Sniper القياسي الذي يستهدف موضع حمولة واحد. لنلق نظرة بعد ذلك على أنماط هجوم أخرى.

المثال 2: Clusterbomb

الحمولة الأصلية:

GET /animal?type=[%type]dog[%end]&name=[%name]fido[%end] HTTP/1.1

فئة Haptyc وتحويل Haptyc:

from haptyc import *

original = "GET /animal?type=[%type]dog[%end]&name=[%name]fido[%end] HTTP/1.1"

class TestLogic(Transform):
	@ApplyList("snake","cat","owl","lion")
	def test_type(self, data, state):
		return data
		
	@ApplyList("Frank", "Lisa", "Jin", "Tooth")
	def test_name(self, data, state):
		return data

TestFactory = TestLogic(original)
for test in TestFactory:
	print(test)

الاختبارات المولدة:

GET /animal?type=snake&name=Frank HTTP/1.1
GET /animal?type=snake&name=Lisa HTTP/1.1
GET /animal?type=snake&name=Jin HTTP/1.1
GET /animal?type=snake&name=Tooth HTTP/1.1
GET /animal?type=cat&name=Frank HTTP/1.1
GET /animal?type=cat&name=Lisa HTTP/1.1
GET /animal?type=cat&name=Jin HTTP/1.1
GET /animal?type=cat&name=Tooth HTTP/1.1
GET /animal?type=owl&name=Frank HTTP/1.1
GET /animal?type=owl&name=Lisa HTTP/1.1
GET /animal?type=owl&name=Jin HTTP/1.1
GET /animal?type=owl&name=Tooth HTTP/1.1
GET /animal?type=lion&name=Frank HTTP/1.1
GET /animal?type=lion&name=Lisa HTTP/1.1
GET /animal?type=lion&name=Jin HTTP/1.1
GET /animal?type=lion&name=Tooth HTTP/1.1

أظهر المثال 1 كيفية تقييم التحويلات بنمط Sniper باستخدام علامة '+' في الوسم [+tag][+end]. يوضح المثال 2 كيف يمكننا استخدام تحويلين/موضعين لشن هجوم بنمط Clusterbomb. كما ترى، نستخدم وسطين تحويل منفصلين يسمى [%type][%end] و [%name][%end]. تخبر علامة '%' Haptyc بتقييم هذه التحويلات بنمط Clusterbomb، أي لكل حمولة في التحويل الأول يتم إنشاء اختبار مع الحمولة من التحويل الثاني. عدد الاختبارات هو عدد اختبارات كل تحويل مضروبًا في بعضها البعض.

المثال 3: Pitchfork/BatteringRam

باستخدام نفس كود Python تمامًا، يمكننا تغيير نمط الهجوم من Clusterbomb إلى Pitchfork عن طريق تغيير '%' إلى '#'. تضع هجمات نمط Pitchfork الحمولات الموضعية بالتوازي. عدد الاختبارات هو أقل عدد اختبارات بين جميع التحويلات المشاركة.

الحمولة الأصلية:

GET /animal?type=[#type]dog[#end]&name=[#name]fido[#end] HTTP/1.1

الاختبارات المولدة:

GET /animal?type=snake&name=Frank HTTP/1.1
GET /animal?type=cat&name=Lisa HTTP/1.1
GET /animal?type=owl&name=Jin HTTP/1.1
GET /animal?type=lion&name=Tooth HTTP/1.1

المثال 4: التحويلات الثابتة (Persistent Transforms)

الحمولة الأصلية:

GET /animal?type=dog&id=[+idor]0[+end]&process=[@randbool]False[@end] HTTP/1.1

فئة Haptyc وتحويل Haptyc:

from haptyc import *
import random

original = "GET /animal?type=dog&id=[+idor]0[+end]&process=[@randbool]False[@end] HTTP/1.1"

class TestLogic(Transform):
        @ApplyIteration(10)
        def test_idor(self, data, state):
                return str(state.iter)

        def per_randbool(self, data):
                return random.choice(["True", "False"])

TestFactory = TestLogic(original)
for test in TestFactory:
        print(test)

الاختبارات المولدة:

GET /animal?type=dog&id=0&process=False HTTP/1.1
GET /animal?type=dog&id=1&process=True HTTP/1.1
GET /animal?type=dog&id=2&process=False HTTP/1.1
GET /animal?type=dog&id=3&process=True HTTP/1.1
GET /animal?type=dog&id=4&process=False HTTP/1.1
GET /animal?type=dog&id=5&process=True HTTP/1.1
GET /animal?type=dog&id=6&process=False HTTP/1.1
GET /animal?type=dog&id=7&process=True HTTP/1.1
GET /animal?type=dog&id=8&process=False HTTP/1.1
GET /animal?type=dog&id=9&process=False HTTP/1.1

التحويلات الثابتة يُشار إليها بعلامة '@' ووظائف التحويل تبدأ دائمًا بـ per_ لأن هذه التحويلات ليست تكرارية، فهي لا تنشئ اختبارات أو تحتفظ بحالة. هذه التحويلات هي مجرد تحويلات بسيطة (naive) يمكنك تطبيقها في أي مكان في الحمولة لتحويل بدون حالة دون التأثير على التحويلات الحافظه للحالة. نظرًا لأنها لا تفرض أي اختبارات، فلا يمكنك توليد اختبارات باستخدام التحويلات الثابتة وحدها، فهي مصممة ليتم خلطها مع التحويلات التكرارية. في المثال أعلاه، لدينا تحويل بنمط Snipe مكون من 10 اختبارات يضع معرفًا متزايدًا. لدينا أيضًا تحويل ثابت يضع قيمة منطقية عشوائية في موضعه.

المثال 5: استخدام state و state.init

قد تكون هناك حالات يرغب فيها المختبر في إجراء بعض المعالجة/التهيئة قبل بدء تسلسل الاختبار. لدعم ذلك، يقوم Haptyc بتنفيذ جميع التحويلات المشاركة لمرحلة تهيئة قبل تنفيذ التحويل لتوليد الاختبار. يمكن استخدام خطوة التهيئة لأداء أي تهيئة يطلبها المختبر ووضعها في كائن الحالة. لهذا، يمكن للمختبر استخدام state.init كقيمة منطقية لتحديد ما إذا كان التنفيذ في مرحلة التهيئة. سيتم تجاهل أي بيانات يتم إرجاعها من خطوة التهيئة.

الحمولة الأصلية:

GET /animal?data=[+b64mutate]SGVsbG8gSGFja2VyIQ==[+end] HTTP/1.1

فئة Haptyc وتحويل Haptyc:

from haptyc import *
import base64

original = "GET /animal?data=[+b64mutate]SGVsbG8gSGFja2VyIQ==[+end] HTTP/1.1"
تنزيل الأداة