Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sniffles — سنيفلز: مولد التقاط الحزم لتقييم أنظمة كشف التسلل والتعبيرات العادية | Kitploit
أدوات/GitHubGitHub/petabi/sniffles
التقاط وتحليل الحزمالتهرب من IDS/IPSالاختبار العشوائيأمن الشبكاتاختبار الاختراقكشف التسلل
GitHubpetabi/sniffles

sniffles

سنيفلز: مولد التقاط الحزم لتقييم أنظمة كشف التسلل والتعبيرات العادية

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

الأكثر شعبية

عرض الكل →

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

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

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

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

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

Sniffles هي أداة لإنشاء التقاطات حزم ستختبر أنظمة كشف التسلل (IDS) التي تستخدم أنماطًا ثابتة أو تعبيرات نمطية لاكتشاف السلوك المشبوه. تعمل Sniffles ببساطة شديدة. تأخذ مجموعة من التعبيرات النمطية أو القواعد وتختار عشوائيًا تعبيرًا نمطيًا أو قاعدة واحدة. ثم تقوم بإنشاء محتوى بناءً على تلك القاعدة أو التعبير النمطي. بالنسبة للسلاسل الثابتة، يعني هذا إضافة السلسلة مباشرة إلى البيانات (ربما مع إزاحات أو خيارات أخرى وفقًا لقواعد Snort). بالنسبة للتعبيرات النمطية، تكون العملية أكثر تعقيدًا إلى حد ما. يتم تحويل التعبير النمطي إلى NFA (آلة محدودة غير حتمية) ويتم اختيار مسار عشوائي عبر NFA (من البداية إلى النهاية). ستتطابق البيانات الناتجة مع التعبير النمطي. أخيرًا، يمكن ضبط Sniffles على المطابقة الكاملة أو المطابقة الجزئية. مع المطابقة الكاملة، ستتطابق بيانات الحزمة بالتأكيد مع قاعدة واحدة على الأقل أو تعبير نمطي (على الرغم من أن بعض خيارات Snort لا تؤخذ في الاعتبار بشكل كامل). المطابقة الجزئية ستحذف الحرف الأخير من تسلسل الأحرف المطابق إلى تسلسل لا ينبغي أن يتطابق (قد يتطابق مع قاعدة أخرى على الرغم من ذلك). يجب أن تتسبب القواعد المطابقة في أكبر عبء على نظام IDS. وبالتالي، من الممكن تحديد مدى كفاءة IDS في التعامل مع أسوأ حالات حركة المرور. ستتسبب حركة المرور ذات المطابقة الجزئية في عبء كبير بقدر حركة المرور المطابقة. أخيرًا، يمكن لـ Sniffles أيضًا إنشاء حركة مرور تحتوي على بيانات عشوائية تمامًا. توفر هذه البيانات العشوائية أفضل سيناريو محتمل لأن البيانات العشوائية من غير المرجح جدًا أن تتطابق مع أي قواعد. وبالتالي، يمكن معالجتها بأقصى سرعة. وبالتالي، تتيح Sniffles إنشاء التقاطات حزم لأفضل وأسوأ حالات تشغيل الفحص العميق للحزم في IDS.

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

أخيرًا، يمكن لـ Sniffles أيضًا فعل الكثير لتوليد حركة مرور شبكة عشوائية. افتراضيًا، حركة المرور العشوائية هي TCP أو UDP أو ICMP وأحادية الاتجاه. ومع ذلك، يمكنها أيضًا توليد حركة مرور TCP مع ACKs ومصافحات وإنهاءات لكل دفق. ستقوم بإنشاء أرقام تسلسلية ومجاميع اختبار صحيحة. علاوة على ذلك، يمكن تعيين عناوين MAC وفقًا للتوزيعات المطلوبة، ويمكن تعريف عناوين شبكة IP بواسطة مساحات العناوين المحلية والخارجية. بالإضافة إلى ذلك، من الممكن محاكاة عمليات المسح ضمن التقاط حركة المرور.

التثبيت

يتطلب: Python 3.3+ ووحدة SortedContainers

تتكون Sniffles من الملفات التالية:

  • rulereader.py: محلل القواعد.
  • ruletrafficgenerator.py: أداة توليد تدفقات المحتوى.
  • sniffles.py: البرنامج الرئيسي الذي يدير العملية.
  • sniffles_config.py: يعالج إدخال سطر الأوامر وخيارات Sniffles.
  • traffic_writer.py: يكتب حزمة إلى ملف متوافق مع pcap. لا يتطلب libpcap.
  • vendor_mac_list.py: يحتوي على معرفات MAC الفريدة للمنظمات المستخدمة لتوليد عناوين MAC شبه واقعية بدلاً من مجرد تجميع الثمانيات بشكل عشوائي.
  • examples/vendor_mac_definition.txt: ملف اختياري لتحديد توزيع عناوين MAC جزئية أو كاملة.
  • ملفات pcre (pcre_chartables.c pcre_compile.c pcre_globals.c pcre_internal.h pcre_newline.c pcre_tables.c pcre.h pcrecomp.c pcreconf.py ucp.h).
  • nfa.py: لاجتياز NFA.
  • regex_generator.py: الكود الخاص بتوليد تعبيرات نمطية عشوائية.
  • rand_rule_gen.py و feature.py و : وحدات لتوليد مجموعات قواعد عشوائية.

للتثبيت:

  1. انتقل إلى الدليل الأعلى.
  2. اكتب python3.x setup.py install.
  3. سيقوم هذا بتثبيت التطبيق على نظامك.

ملاحظات التثبيت:

  1. لم يتم اختبار هذا مع Windows ولا مع Linux. تم اختباره على FreeBSD و Mac OS X.
  2. استخدم python3.x setup.py build للبناء محليًا، ثم انتقل إلى دليل المكتبة، وابحث عن lib واستخدم python3.4 -c "from sniffles import sniffles; sniffles.main()" للتشغيل محليًا.

التنسيقات المدعومة:

  • Snort: قواعد التنبيه في Snort (يجب أن تبدأ القاعدة بالتوجيه Alert). يتم التعرف على وسوم المحتوى وتحليلها بشكل صحيح. يتم تحليل وسوم PCRE بالمثل بشكل صحيح. تتم معالجة وسوم HTTP بشكل متسلسل لذا قد لا تنشئ الحزمة المطلوبة. يمكن تعديل المحتوى (أو محتوى PCRE أو HTTP) بواسطة distance و within و offset. يمكن للقاعدة استخدام خيار التحكم في التدفق، على الرغم من أن اتجاه البيانات فقط مشتق من هذا. يتم تجاهل خيار nocase ويتم استخدام الحالة المقدمة. يتم تجاهل جميع الخيارات الأخرى. يتم تحليل قيم الرأس وسيتم إنشاء حزمة تلبي تلك القيم. إذا تم استخدام مساحات عناوين الشبكة المحلية والخارجية، فسيتم استخدام المساحة الصحيحة للمتغيرات $HOME_NET و $EXTERNAL_NET على التوالي. مثال:

    alert tcp $EXTERNAL_NET any -> $HOME_NET 8080 (msg:"SERVER-APACHE Apache Tomcat UNIX platform directory traversal"; flow:to_server; content:"/..|5C|/"; content:"/..|5C|/"; http_raw_uri;

  • التعبيرات النمطية: تعبيرات نمطية خام بواقع تعبير واحد في كل سطر مكتوبة إما كـ abc أو /abc/i. يدعم حاليًا الخيارات i و s و m. يتم تجاهل الخيارات الأخرى. مثال:

    /ab*c(d|e)f/i

  • تنسيق قاعدة Sniffles الموضح أدناه.

خيارات سطر الأوامر:

  • -a TCP Ack: إرسال إقرار TCP لكل حزمة بيانات مرسلة. إيقاف افتراضيًا. حزم الإقرار لا تحتوي على بيانات افتراضيًا.

  • -b بيانات ثنائية الاتجاه: سيتم إنشاء البيانات في كلا اتجاهي دفق TCP. سيتم تشغيل ACKs. هذه الميزة متوقفة افتراضيًا.

  • -B [بروتوكول حركة مرور الخلفية:النسبة المئوية]: قم بتعيين بروتوكول واحد على الأقل بقيمة بين 1 و 100 لإنتاج حركة مرور خلفية. تمثل هذه القيمة النسبة المئوية من إجمالي كمية حركة المرور. البروتوكولات المتاحة: FTP, HTTP, IMAP, POP و SMTP. على سبيل المثال: "http:20,ftp:30,smtp:10". أدخل رقمًا واحدًا فقط كقيمة الوسيطة لتوليد حركة مرور عشوائية. على سبيل المثال: "80".

  • -c عدد: عدد التدفقات المراد إنشاؤها. سيحتوي كل تدفق على حد أدنى من حزمة واحدة. ستكون الحزمة بين نقطتي نهاية كما هو محدد بالقاعدة أو بشكل عشوائي. سيزيد tcp_handshake و tcp_teardown و packets_per_stream من عدد الحزم لكل تدفق. حاليًا، تتدفق البيانات في اتجاه واحد فقط. إذا تم استخدام الخيار -b، يجب أن تتدفق البيانات في كلا الاتجاهين. أيضًا، يمكن لقواعد Sniffles تخصيص تدفق البيانات في كلا الاتجاهين.

  • -C التدفقات المتزامنة: عدد التدفقات التي ستكون مفتوحة في وقت واحد. بأفضل جهد بمعنى أنه إذا كان هناك تدفقات أقل من عدد التدفقات المتزامنة المحددة، فسيتم استخدام جميع التدفقات الحالية. على سبيل المثال، إذا كان هناك 1000 تدفق فقط متبقي، ولكن عدد التدفقات المتزامنة قد تم ضبطه على 10000، فسيتم كتابة 1000 تدفق فقط في ذلك الوقت. القيمة الافتراضية هي 1000. إذا تم استخدامه مع المدة، فسيتم الحفاظ على التدفقات -C طوال المدة والتي ستتجاهل في النهاية أي إدخال من -c. لاحظ أن الغرض من ذلك هو إنشاء pcap متنوع حيث تكون الحزم من نفس التدفقات موزعة بدلاً من أن تكون بجانب بعضها البعض ولخلق وهم وجود العديد من التدفقات المتزامنة. في اختباراتنا، تمكنا من إدارة ما يصل إلى 2-3 ملايين تدفق متزامن قبل أن تصبح الذاكرة مشكلة. أيضًا، يجب أن نذكر أن زمن الانتقال المختلف بين التدفقات يمكن أن يتسبب في إنهاء بعض التدفقات في وقت أبكر من غيرها.

  • -د دليل القواعد: المسار إلى الدليل الذي يحتوي على ملفات القواعد. سيقرأ كل قاعدة ممكّنة في جميع ملفات القواعد في الدليل. يفترض أن جميع ملفات القواعد تنتهي بالملحق .rules. استخدم هذا الخيار أو -f، ولكن ليس كلاهما. يتم استخدام الرمز # لتعطيل (أي التعليق على) قاعدة.

  • -D المدة: التوليد بناءً على المدة بدلاً من العدد. المدة بالثواني. ضع في اعتبارك أن زمن الانتقال الافتراضي بين الحزم يبلغ متوسطه 1-200 ميكروثانية. بالنسبة لزمن الانتقال المنخفض، يمكن أن تؤدي المدة الكبيرة إلى ملايين الحزم التي قد تستغرق وقتًا طويلاً لبنائها. أيضًا، المدة هي بأفضل جهد. بشكل أساسي، لا يتم إنشاء تدفقات جديدة بعد استيفاء المدة، ولكن قد تكون هناك تدفقات لم تكتمل. لا تزال هذه التدفقات تُكتب لذا قد تكون المدة الفعلية أطول من تلك المحددة، ولكن يجب ألا تكون أقل. أخيرًا، قم بتعيين زمن انتقال أكبر إذا كنت ترغب في إنشاء عدد أقل من التدفقات أثناء التوليد.

  • -e تقييم: إنشاء حزمة واحدة فقط لكل قاعدة في مجموعة القواعد. يتجاهل جميع المدخلات الأخرى باستثناء -f. ستحتوي كل حزمة على محتوى يطابق القاعدة المحددة.

  • -E تقييم كامل: إنشاء حزمة واحدة لكل مسار قابل للتطبيق في قاعدة pcre في مجموعة القواعد. بعبارة أخرى، فإن ab(c|d)e سينشئ حزمتين: abce و abde. يتجاهل جميع المدخلات الأخرى باستثناء -f.

أمثلة:

ملاحظة: تفترض جميع الأمثلة أنك قمت بتثبيت حزمة sniffles.

لتوليد pcap من ملف واحد من التعبيرات النمطية مع 10 تدفقات حيث تتطابق كل حزمة مع قاعدة

sniffles -c 10 -f myre.re -m

لتوليد pcap من ملف قاعدة Snort واحد حيث تتطابق كل حزمة تقريبًا مع قاعدة

sniffles -c 10 -f myrules.rules

لتوليد pcap من ملفات قواعد Snort متعددة في دليل واحد حيث تتطابق كل حزمة مع قاعدة.

sniffles -c 10 -d myrulesdir -m

لتوليد نفس pcap أعلاه، باستخدام نفس القواعد، ولكن بمحتوى عشوائي (المحتوى عشوائي، ستظل الرؤوس تتبع القواعد--لا يعمل مع regex أو قواعد Sniffles):

sniffles -c 10 -d myrulesdir -r

لتوليد pcap مع 10 تدفقات (حزمة واحدة لكل منها) وبيانات عشوائية:

sniffles -c 10

لتوليد pcap مع 10 تدفقات حيث ستكون 50٪ من التدفقات هي حركة مرور الخلفية وستحتوي بقية التدفقات على حزم تطابق قاعدة:

sniffles -c 10 -B 50 myrules.rules

لتوليد pcap مع 10 تدفقات، كل تدفق يحتوي على 5 حزم، مع ACKs والمصافحة والإنهاء بالإضافة إلى طول ثابت 50 للبيانات في كل حزمة تحمل بيانات:

sniffles -c 10 -p 5 -l 50 -t -T -a

لتوليد pcap مع 20 تدفقًا عشوائيًا مع شبكة منزلية من 192.168.1-2.x:

sniffles -c 20 -h 192.168.1,192.168.2

لتوليد pcap مع 20 تدفقًا عشوائيًا مع شبكة منزلية من 192.168.1.x لـ IPv4 و 2001:8888:8888 لـ IPv6 مع 50٪ من حركة المرور IPv6:

sniffles -c 20 -h 192.168.1 -H 2001:8888:8888 -i 50

لتوليد التقاط حزم لمدة 5 ثوانٍ من حزم عشوائية بمتوسط فاصل بين الحزم قدره 100 ميكروثانية:

sniffles -D 5 -L 100

لتوليد pcap سينشئ حزمة واحدة تطابق كل قاعدة في ملف قاعدة (أو ملف regex) بالتسلسل:

sniffles -f myrules.rules -e

لتوليد pcap سينشئ حزمة لكل فرع محتمل من regex لكل regex في مجموعة regex ثم حفظ هذا الملف إلى pcap يسمى everything.pcap كما يلي. ومع ذلك، يمكن أن تعمل هذه الوظيفة في وقت أسي إذا كان regex يحتوي على كمية كبيرة من العد min-max لذا قد يستغرق وقتًا طويلاً للتشغيل. علاوة على ذلك، يتم تجاهل جميع الخيارات الأخرى باستثناء الخيارين الموضحين أدناه.

sniffles -f myrules.rules -o everything.pcap -E

لتوليد حركة مرور عشوائية مع هجوم مسح يحدث بعد ثانيتين ويستمر لمدة ثانيتين مع 1000 حزمة مسح في الثانية ومع مدة التقاط كاملة مدتها 5 ثوانٍ وزمن فاصل 50us ومع منفذ بداية 80 (مسح متسلسل للمنافذ من 80):

sniffles -D 5 -O 2 -W 2 -I 1000 -L 50 -s 192.168.1.2 -P 80

على غرار ما ورد أعلاه، لكنه سينشئ هجمات مسح متعددة، كل منها بمدة ثانية واحدة، ومتوسط إزاحة بين الهجمات قدره ثانيتين. علاوة على ذلك، يقوم بمسح المنافذ المحددة فقط. كما يستهدف عنوان IP في النطاق 192.168.1.0-255 بشكل عشوائي.

sniffles -D 8 -O 2 -W 1 -I 10 -L 50 -s 192.168.1 -P 80,8080,8000,8001

تنسيق قاعدة Sniffles:

تدعم Sniffles عدة تنسيقات للقواعد. أولاً، يمكن لـ Sniffles تحليل قواعد Snort، والتعبيرات النمطية (بواقع تعبير واحد لكل سطر). بالإضافة إلى ذلك، تمتلك Sniffles أيضًا تنسيق القاعدة الخاص بها الذي يمكن استخدامه للتحكم الصريح في حركة المرور. يتم ذلك من خلال استخدام ملفات xml التي ستصف حركة المرور. عند استخدام هذا التنسيق، قد تكون الخيارات الأخرى لـ Sniffles غير ذات صلة. يمكن العثور على أمثلة لملفات القواعد في دليل الأمثلة. يتم استخدام ملفات القواعد هذه ببساطة عن طريق تعيين ملف القاعدة مع الخيار -f (أي sniffles -f rules.xml)

تنسيق قاعدة Sniffles هو كما يلي:```xml

<petabi_rules> <traffic_stream proto="tcp" src="any" dst="any" sport="any" dport="any" handshake="True" teardown="True" synch="True" ip="4"> </traffic_stream> <traffic_stream proto="tcp" src="any" dst="any" sport="any" dport="any" handshake="True" teardown="True" synch="True"> </traffic_stream> </petabi_rules>

root@kitploit:~
بالتفصيل، تعمل الوسوم على النحو التالي:

- `<petabi_rules> </petabi_rules>`: يحدد هذا جميع القواعد لملف القواعد هذا. يجب أن يكون هناك مجموعة واحدة فقط من هذه الوسوم تفتح وتغلق جميع تيارات الحركة المحددة.
    - `<rule > </rule>`: يحدد قاعدة واحدة. يمكن لقاعدة واحدة أن تولد عددًا عشوائيًا من تيارات الحركة أو الحزم. يمكن أن يكون أي عدد من القواعد في ملف واحد.
        - الخيارات:
            - name: اسم هذه القاعدة. في الغالب للتوثيق، لا وظيفة حقيقية.
        - `<traffic_stream> </traffic_stream>`: يعرف تيار الحركة حركة بين نقطتي نهاية. جميع الحزم المحددة داخل تيار حركة واحد ستشترك في نفس نقاط النهاية. يمكن تحديد أي عدد من تيارات الحركة لقاعدة معينة. قد يكون لتيارات الحركة المختلفة داخل نفس القاعدة نقاط نهاية مختلفة أو لا اعتمادًا على الإعدادات أدناه.
            - الخيارات:
                - typets: تحديد نوع تيار الحركة الذي سنستخدمه لتوليد الحزمة. حاليًا، لدينا Standard وScanAttack وBackgroundTraffic.
                - scantype: 1 == مسح SYN (افتراضي) 2 == مسح اتصال. يُستخدم مع ScanAttack.
                - target: تحديد عنوان IP الهدف لهجوم المسح.
                - targetports: لهجوم المسح. قدم قائمة مفصولة بفواصل من المنافذ المحتملة، أو منفذ بداية واحد. وإلا سيتم مسح المنافذ عشوائيًا. إذا تم توفير منفذ بداية واحد، فسيتم مسح المنافذ بالترتيب من تلك النقطة إلى 65535، وبعدها سيعود إلى نقطة البداية. يُستخدم هذا الخيار مع typets كـ 'ScanAttack'
                - srcport: تحديد منفذ المصدر لهجوم المسح. عشوائي افتراضيًا
                - duration: النافذة، أو المدة، بالثواني لهجوم المسح إذا كان typets هو 'ScanAttack'
                - intensity: كثافة هجوم المسح إذا كان typets هو 'ScanAttack'
                - offset: الإزاحة قبل بدء هجوم المسح. يُستخدم أيضًا عند إدراج عمليات مسح متعددة في الحركة.
                - replychance: احتمالية أن يكون للمسح رد. بمعنى آخر، احتمالية أن يكون المنفذ الهدف مفتوحًا (افتراضي 20%). يُستخدم مع ScanAttack.
                - proto: يحدد بروتوكول تيار الحركة هذا. يجب أن يكون TCP أو UDP أو ICMP (لم يُختبر).
                - src: عنوان IP المصدر. قد يكون عنوانًا بتنسيق xxx.xxx.xxx.xxx، أو $EXTERNAL_NET (لعناوين خارجية – يفترض تعيين شبكة منزلية)، أو $HOME_NET، أو any (يختار عنوان IP عشوائيًا).
                - dst: عنوان IP الوجهة. نفس عنوان IP المصدر.
                - sport: منفذ المصدر (يفترض TCP أو UDP). يمكن استخدام تنسيق منفذ snort والذي يمكن أن يكون قائمة مفصولة بفواصل بين قوسين (أي [80,88,89])، أو نطاق (أي [10:1000])، أو any (أي اختيار عشوائي من 0-65535).
                - dport: منفذ الوجهة كما في sport.
                - handshake: سيولد مصافحة TCP في بداية الدفق. إذا تم استبعاده، فلن تكون هناك مصافحة. القيم الصالحة هي true أو false. الافتراضي هو false.
                - latency: ضبط متوسط زمن الانتظار بين الحزم (بالميكروثانية).
                - teardown: سيغلق الدفق عند إرسال كل الحركة عن طريق إضافة تفكيك TCP في نهاية دفق الحركة. القيم الصالحة هي true أو false. الافتراضي هو false.
                - synch: تيارات الحركة متزامنة أم لا. عندما تكون true، يجب أن ينتهي تيار حركة واحد قبل بدء تيار الحركة التالي. عندما تكون false، سيتم تنفيذ جميع التيارات المتجاورة التي تكون false (أي غير متزامنة) في نفس الوقت.
                - tcp_overlap: القيمة الافتراضية هي false. عندما تكون true، سيتم إلحاق محتوى إضافي بالحزمة الثانية وسيتم تقليل رقم تسلسل TCP بمقدار واحد لمحاكاة رقم التسلسل المتداخل لـ TCP.
                - ipv: تعيين IPv4 أو IPv6. الخيارات الصالحة هي 4 أو 6. الافتراضي هو 4.
                - out_of_order: وصول الحزم بشكل عشوائي خارج الترتيب. لاحظ أن هذا يعمل فقط مع الحزم التي تستخدم خيار 'times'. علاوة على ذلك، يجب استخدام هذا الخيار أيضًا مع ack بحيث تظهر الإقرارات المكررة المناسبة في تتبع الحركة. القيم الصالحة هي true أو false. الافتراضي هو false.
                - out_of_order_prob: تعيين احتمالية وصول الحزم خارج الترتيب. على سبيل المثال، 10 يعني أن هناك فرصة بنسبة 10% لكل حزمة للوصول خارج الترتيب. تصل الحزم خارج الترتيب بعد جميع الحزم التي في الترتيب. علاوة على ذلك، يتم خلطها بشكل عشوائي أيضًا. وبالتالي، إذا تم تحديد أن الحزمتين 2 و5 من أصل 10 حزم خارج الترتيب، فستصلان في النهاية من بين الحزم العشر (الخانتان 9 و10) وستكونان بترتيب عشوائي (أي قد تأتي 5 قبل 2 أو العكس). يجب أن تكون القيمة بين 1 و99. الافتراضي هو 50.
                - packet_loss: إسقاط الحزم بشكل عشوائي (أي عدم وصولها). يعمل هذا فقط مع خيار 'times'. علاوة على ذلك، يجب استخدام هذا الخيار أيضًا مع تعيين خيار ack على true بحيث تظهر الإقرارات المكررة في تتبع الحركة. القيم الصالحة هي من 1 إلى 99 تمثل احتمالية إسقاط الحزمة. لاحظ أن إسقاط الحزمة يحدث فقط على الحزم الحاملة للبيانات، وليس على الإقرارات.
                - ack: أن تتبع كل حزمة بيانات في هذا التدفق بإقرار من الخادم. القيم الصالحة هي true أو false. الافتراضي هو false.
                - percentage: ينطبق هذا فقط على BackgroundTraffic ويجب أن يكون هناك قاعدة واحدة فقط من BackgroundTraffic في ملف قواعد أو دليل. تشير النسبة المئوية إلى النسبة المئوية لتيار حركة الخلفية المراد إنشاؤه في إجمالي تيار الحركة.
                - http: التوزيع النسبي لبروتوكولات تطبيقات http في تيار حركة الخلفية.
                - ftp: التوزيع النسبي لبروتوكولات تطبيقات ftp في تيار حركة الخلفية.
                - pop: التوزيع النسبي لبروتوكولات تطبيقات pop في تيار حركة الخلفية.
                - smtp: التوزيع النسبي لبروتوكولات تطبيقات smtp في تيار حركة الخلفية.
                - imap: التوزيع النسبي لبروتوكولات تطبيقات imap في تيار حركة الخلفية.
            - `<pkt > </pkt>`: يحدد هذا التوجيه إما حزمة فردية أو سلسلة من الحزم. يمكن استخدام ميزة times لتوليد عدة حزم بتوجيه `<pkt> </pkt>`. وإلا، فمن الضروري تحديد كل حزمة في كل اتجاه بشكل صريح.
                - الخيارات:
                    - dir: اتجاه الحزمة. القيم الصالحة هي to server أو to client. يعتبر عنوان IP المصدر الأولي هو العميل، وعنوان IP الوجهة الأولي هو الخادم. وبالتالي، 'to server' ترسل حزمة من العميل إلى الخادم و'to client' ترسل حزمة من الخادم إلى العميل. الافتراضي هو to server.
                    - content: تعبير عادي يحدد محتوى هذه الحزمة. يعتمد حجم الحزمة على التعبير العادي.
                    - fragment: ما إذا كان سيتم تجزئة هذه الحزمة أم لا. يعمل فقط مع ipv4. يجب أن تكون قيمته أكبر من 2. سينشئ عددًا من الأجزاء بقدر ما هو صالح أو كما هو محدد (أيهما أصغر). القيمة الافتراضية هي 0 مما يعني عدم وجود أجزاء.
                    - ack: إرسال إقرار لهذه الحزمة أم لا. القيم الصالحة هي true أو false. الافتراضي هو false.
                    - split: تقسيم المحتوى بين العدد المحدد من الحزم. افتراضيًا، يتم إرسال كل المحتوى في حزمة واحدة (الأجزاء استثناء صغير لهذه القاعدة).
                    - times: إرسال هذه الحزمة x مرة. القيمة الافتراضية هي 1، والقيمة الموجبة سترسل بالضبط x حزمة (ربما مع إقرارات إذا كان ack صحيحًا)، بينما الرقم السالب سيرسل عددًا عشوائيًا من الحزم بين 1 وabs(-x).
                    - ttl: تعيين قيمة وقت الحياة للحزمة. افتراضيًا، سيولد sniffles قيمة TTL عشوائية.
                    - ttl_expiry: محاكاة هجوم انتهاء صلاحية TTL عن طريق تقسيم الحزم إلى حزم متعددة مع حزمة ضارة واحدة بين حزمتين جيدتين. افتراضيًا، القيمة هي 0 (لا توجد حزمة ضارة). إذا كانت القيمة غير صفرية، فسيقوم بإدراج حزمة ضارة بهذه ttl تساوي قيمة ttl_expiry. إذا تم تعيين قيمة ttl، فسيتم تعيين الحزمة الجيدة بقيمة ttl جديدة

ملاحظات نهائية: تنسيق القاعدة الجديد هو مجرد بداية وقد يحتوي على مشاكل. يرجى تنبيهي إلى أي تناقضات أو أخطاء. علاوة على ذلك، القصد هو توسيع الخيارات لتوفير المزيد والمزيد من الوظائف حسب الحاجة. يرجى الاتصال بي بالميزات المرغوبة. أخيرًا، يتم توفير هذا المنتج كما هو. لا يوجد ضمان للوظيفة أو الدقة. لا تتردد في تفريع هذا المشروع لتلبية احتياجاتك الخاصة.

الاعتمادات:
--------

تم تقديم هذا التطبيق لك من قبل Petabi, Inc., حيث نصنع حلول أمان موثوقة وواقعية وسريعة حقًا.

المؤلفون:

- Victor C. Valgenti
- Min Sik Kim
- Tu Le
- Moosuk Pyun

الميزات الجديدة:
-------------

- 11/21/2014: الإصدار 1.4.0 تمت إضافة تقسيم الحركة وtraffobot لتوليد حركة ثنائية الاتجاه. تم إصلاح خطأ حيث تم طرح استثناء عندما يمكن أن تتناسب كمية الحركة المولدة في استدعاء كتابة حركة واحد. تم إعادة التنسيق وتمكين الاستخدام. أخيرًا، تمت إضافة اختبارات وحدة لـ traffobot وتحليل XML.

- 02/03/2015: الإصدار 2.0. تمت إعادة كتابة كيفية عمل الدفق بالكامل لتقليل متطلبات الذاكرة عند توليد تدفقات كبيرة باستخدام قواعد خاصة. حاليًا، يمكن التعامل مع حوالي 2-3 مليون تدفق متزامن قبل أن تتباطأ الأمور. لقد أضفت بعض الميزات للمساعدة عند إنشاء تدفقات كبيرة. أولاً، قم بالتوليد بشيء مثل تزامن 2-3 مليون تدفق. أيضًا، لا تستخدم teardown لهذه التدفقات. جزء من التدفقات سيستمر من البداية حتى نهاية الالتقاط بينما سيتم إغلاق الباقي كل فترة دفعية. سأعمل على جعل هذا أكثر كفاءة، لكن إدارة جميع الخيارات المعقدة في Sniffles الآن لا يمكن فعلها بتكلفة زهيدة في الذاكرة. الحل الوحيد الآخر هو الحصول على جهاز أقوى مع ذاكرة وصول عشوائي أكبر. يحتوي هذا الإصدار أيضًا على مجموعة متنوعة من الإصلاحات.

- 02/11/2015: تمت إضافة احتمالية للحزم خارج الترتيب للسماح بضبط تواتر الحزم خارج الترتيب.

- 03/05/2015: تم تغيير تفكيك TCP إلى تسلسل تفكيك قياسي. الآن يُسمح بتوزيع المحتوى عبر حزم متعددة دون استخدام الأجزاء.

- 04/09/2015: تم إصلاح حركة المسح، كانت معطلة جزئيًا خلال أحد التغييرات السابقة. الطابع الزمني لبدء pcap الآن افتراضيًا للوقت الحالي ويمكن تعيينه باستخدام خيار -g. أخيرًا، الحزمة الثالثة في المصافحة ثلاثية الاتجاهات لـ TCP ستحمل بيانات الآن إذا كان العميل سيرسل البيانات أولاً.

- 05/22/2015: تمت إعادة كتابة تحليل القاعدة لتبسيط القدرة على توسيع محلل القاعدة لاستيعاب المزيد من التنسيقات. تم تضمين تنقل nfa وpcre مباشرة في sniffles. تم تنظيف الكود وإعداده للجمهور.

- 05/27/2015: تم تحديث التوثيق، ودمج مكتبات pcre وبناء nfa لجعل sniffles حزمة قائمة بذاتها. تمت إضافة مولد التعبير العادي ومولد القاعدة العشوائية كجزء من حزمة Sniffles. تم تحديث الإصدار إلى 3.0.0 ونشره على github.

- 08/12/2015: تم تنفيذ عدد كبير من إصلاحات الأخطاء والميزات الجديدة. تم تغيير كيفية التعامل مع التدفقات والجريانات بشكل أساسي للسماح بتحسين التوسعية. تمت إضافة زمن انتقال لكل تدفق. تم تحديث التوثيق.

مولد التعبير العادي
============================

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

التثبيت
-------

سيتم تثبيته تلقائيًا مع باقي Sniffles.

الخيارات
-------

regexgen – مولد التعبير العادي العشوائي.

    الاستخدام: regexgen [-C توزيع الأحرف] [-c عدد التعبير العادي]
    [-D توزيع الفئة] [-f ملف الإخراج re]
    [-l لامدا لتوليد الطول] [-M أقصى طول للتعبير العادي]
    [-m أدنى طول للتعبير العادي] [-n احتمالية النفي]
    [-o فرصة الخيارات] [-R فرصة التكرار] [-r توزيع التكرار]
    [-t توزيع النوع الهيكلي للتعبير العادي] [-?] [-g]

-    -C توزيع الأحرف: يحدد هذا إمكانية رؤية أحرف أو أنواع أحرف معينة. انظر شرحًا موجزًا للتوزيعات أدناه للحصول على أمثلة حول كيفية استخدام هذا. افتراضيًا، هذا التوزيع هو توزيع متساوٍ. يحتوي هذا التوزيع على خمس فتحات: أحرف ASCII، الأحرف الثنائية بتنسيق \x00، الحروف الأبجدية (أحرف كبيرة أو صغيرة)، الأرقام، وفئات الاستبدال (مثل \w). مثال على الإدخال لهذا سيكون "10,20,10,40,20" مما يعني فرصة بنسبة 10% أن أي حرف مولود سيأتي من 10% ASCII، 20% ثنائي، 10% حروف، إلخ. ملاحظة واحدة هي أن أحرف ASCII التي قد تسبب مشاكل مع التعبير العادي (مثل `[' أو '{') يتم تحويلها إلى تمثيل سداسي عشري (\x3b على سبيل المثال).
-    -c عدد التعبيرات العادية المراد إنشاؤها. الافتراضي هو واحد.
-    -D توزيع الفئة: يوجد فتحتان فقط في توزيع الفئة. الفتحة الأولى هي احتمالية أن تتكون الفئة من عدد من الأحرف المولدة عشوائيًا. الفتحة الثانية هي احتمالية أن تتكون الفئة من نطاقات (مثل a-z).
-    -f اسم ملف الإخراج. يحدد هذا اسم الملف حيث يتم تخزين التعبيرات العادية. الافتراضي هو ملف باسم rand.re في دليل العمل الحالي.
-    -g المجموعات: ستحتوي جميع التعبيرات العادية على بادئة مشتركة مع تعبير عادي واحد على الأقل أو أكثر (طالما أن هناك أكثر من تعبير عادي واحد). البادئة المشتركة هي مجرد تعبير عادي هو نفسه لمجموعة معينة من التعبيرات العادية. العدد الإجمالي للبادئات المشتركة المحتملة هو من 1 إلى نصف حجم التعبيرات العادية المراد إنشاؤها. القيمة الافتراضية لهذا الخيار هي false. لا يأخذ هذا الخيار معاملات.
-    -l لامدا للطول: هذا هو متوسط الطول لتوزيع أسي لأطوال التعبير العادي. القيمة الافتراضية هي 10.
-    -M أقصى طول للتعبير العادي: اجعل التعبيرات العادية بطول هيكلي لا يتجاوز هذا أو أقصر. افتراضيًا، الحد الأقصى للطول غير محدود.
-    -m أدنى طول للتعبير العادي: اجعل التعبيرات العادية بطول لا يقل عن هذا أو أطول. افتراضيًا إلى 3، وسيستخدم تلقائيًا قيمة 1 إذا كان الإدخال صفرًا أو أقل.
-    -n احتمالية النفي: احتمالية أن تكون فئة الأحرف فئة نفي ([^xyz]) بدلاً من فئة أحرف عادية ([xyz]). الاحتمالية الافتراضية هي 50%.
-    -o فرصة الخيارات: هذه هي فرصة إلحاق خيار بالتعبير العادي. الخيارات الحالية هي 'i' و'm' و's'. تتم إضافة عدد عشوائي من الخيارات إلى القائمة مع اختيار تلك الخيارات من خلال توزيع منتظم.
-    -R فرصة التكرار: فرصة حدوث التكرار بعد إضافة أي مكون هيكلي إلى التعبير العادي.
-    -r توزيع التكرار: توزيع هياكل التكرار. الفتحات هي: صفر إلى واحد (?)، صفر إلى العديد (*)، واحد إلى العديد (+) والعد ({x,y}).
-    -t توزيع النوع الهيكلي للتعبير العادي: توزيع المكونات الهيكلية الأساسية للتعبير العادي. تتكون هذه من ثلاث فتحات، أو فئات: الأحرف والفئات والتبديل. لاحظ أن التبديل سيولد ببساطة تعبيرًا عاديًا أصغر يصل إلى حجم الطول المتبقي للتعبير العادي. بمعنى آخر، سيؤدي التبديل إلى ضم عدة تعبيرات عادية أصغر في التعبير العادي الكلي. يستخدم التبديل نفس المنهجية بالضبط في إنشاء تلك التعبيرات العادية الأصغر.
-   -? طباعة هذه المساعدة.

    سينشئ هذا المولد تعبيرات عادية عشوائية. من الممكن ضبط الهياكل داخل التعبيرات العادية لتوزيع احتمالي، ولكن حاليًا ليس المحتوى. هذا مرغوب فيه لاستكشاف أقصى تنوع في التعبيرات العادية المحتملة (وإن لم تكن بالضرورة تعبيرات عادية واقعية).
    تتم معالجة التوزيعات عن طريق إنشاء قائمة من الاحتمالات للإمكانيات المختلفة، أو الفتحات، لتوزيع معين. تتم إضافتها كوسائط سطر أوامر باستخدام قائمة سلسلة بسيطة مثل: "10,30,40,20". يجب أن تحتوي القائمة على عدد من القيم بقدر عدد الفتحات. يجب أن يكون مجموع جميع القيم في القائمة 100 ويجب ألا يكون هناك أي كسور. القيمة في كل فتحة هي احتمالية اختيار تلك الفتحة. على سبيل المثال، توزيع النوع الهيكلي الأساسي للتعبير العادي له ثلاث فتحات. الفتحة الأولى هي احتمالية أن يكون النوع الهيكلي التالي حرفًا (حيث يمكن أن يكون الحرف حرفًا أو رقمًا أو ثنائيًا أو ASCII أو فئة استبدال (مثل \w)). الفتحة الثانية مخصصة لفئات الأحرف مثل [ab@%] أو [^123] أو [a-z]. الفتحة الأخيرة هي احتمالية حدوث التبديل مثل (ab|cd). باستخدام هذه الفتحات الثلاث، يمكنك ضبط عدد المرات التي تريد أن تظهر فيها الهياكل في تعبيراتك العادية. على سبيل المثال، سيؤدي الأمر regexgen -c 10 -t "80,10,10" إلى إنشاء 10 تعبيرات عادية حيث 80% من الهياكل المستخدمة ستكون أحرفًا، و10% ستكون فئات أحرف، و10% تبديل.

مولد القاعدة العشوائية
=====================

يوفر مولد القاعدة العشوائية وسيلة لإنشاء عدد من القواعد المولدة عشوائيًا لاختبار منصة معينة. حاليًا، تفي القواعد المولدة إما بتنسيق قاعدة Snort أو هي مجرد سطور من النص. لكي يعمل مولد القاعدة العشوائية، يجب أن يكون لديك مجموعة من الميزات المحددة. يمكن العثور على مثال للميزات في مجلد example_features وهي موصوفة أدناه.

التثبيت
-------

يتم تثبيته تلقائيًا مع Sniffles

ملاحظة: يستخدم مولد القاعدة العشوائية مولد التعبير العادي العشوائي لإنشاء محتوى من أي نوع.الخيارات
-------

مولد القواعد العشوائي

الاستخدام: rulegen -c [عدد القواعد] -f [مجموعة الميزات]
        -o [ملف الإخراج] [-s]

- -c  عدد القواعد: عدد القواعد التي سيتم توليدها.
      القيمة الافتراضية هي واحد.
- -f  مجموعة الميزات: الملف الذي يحتوي على وصف مجموعة الميزات.
      يرجى الاطلاع على الوثائق لمزيد من الشرح حول
      مجموعات الميزات وكيفية وصفها.
- -o  ملف الإخراج: ملف الإخراج الذي تُكتب إليه القواعد.
      القيمة الافتراضية هي rules.txt
- -s  تنسيق قواعد Snort: كتابة القواعد بتنسيق قواعد Snort.
      لا توجد معلمات، الإعداد الافتراضي هو إيقاف. عند إيقاف التشغيل، يتم تحويل القواعد فقط
      إلى تنسيق سلسلة نصية، أيًا كان ذلك بناءً على
      محلل الميزات.

مجموعة الميزات
-----------

تُستخدم الميزات لوصف الجوانب المحتملة للقواعد المستخدمة في
IDS. على سبيل المثال، قد يستخدم مرشح الحزم قواعد تستهدف
عنوان المصدر والوجهة لـ IP. في هذه الحالة، سيكون من الممكن
إنشاء مجموعة ميزات تصف كيفية إنشاء عناوين المصدر والوجهة
لـ IP. بشكل أكثر تحديدًا، نفرّق
بين القواعد البسيطة والقواعد المعقدة. الفرق
بين هذين النوعين هو وجود الرموز المبهمة. على سبيل
المثال، إذا كان لدينا رمز مبهم * يعني أي
عنوان IP، فيمكننا القول إن * يمثل رمزًا مبهمًا.
علاوة على ذلك، نعلم أن القاعدة يمكنها أيضًا استخدام رمز غير مبهم،
مثل 192.168.1.1. وهذا سيمثل عنوان IP بسيطًا نظرًا
لأنه عنوان IP ثابت واحد دون أي رمز مبهم محتمل.
ثم نحدد أيضًا نطاق الميزات
الخاصة (أي عناوين IP عبر أكثر من 4 مليارات
عنوان IPv4 محتمل، أو مجرد مجموعة فرعية من ذلك).

تحدد الميزات في النهاية جميع جوانب أي قاعدة
عشوائية. بالنظر إلى مجموعة ميزات وتنسيق قاعدة صالح،
يصبح من الممكن توليد عدد عشوائي
من القواعد التي تستخدم تلك الميزات. بهذه الطريقة، يمكن
توليد مجموعات قواعد اختبارية تفحص IDS عبر
متجه غالبًا ما يتم تجاهله.

يتم تعريف الميزات في قائمة مفصولة بفاصلة منقوطة، سمة واحدة لكل سطر
type=feature; قائمة من الوسائط في أزواج key=value، قوائم باستخدام تنسيق
python (أي [a, ..., z]). تحدد الميزة أجزاء محددة من
تنسيق القاعدة المستهدف. يمكن توسيع الميزات لإضافة وظائف إضافية.
اختياريًا، يمكن توسيع قدرة الميزات عن طريق إنشاء
تنسيق قاعدة جديد.

أنواع الميزات الحالية:

1. Feature -- ميزة عامة
2. Content -- ميزة المحتوى
3. IP -- ميزة IP
4. Protocol -- ميزة البروتوكول

يجب كتابة القوائم المبهمة كقوائم مثل [x:y]
لنطاق، [x,y] لقائمة، {x1,x2,x3} لمجموعة
أو مجرد * لرمز بديل أو خيار واحد مماثل.

مثال حول القائمة المبهمة:```
ambiguity_list=[[2:9]]
it will generate [3:4], [5:6], etc (any [x:y] such that
x <= y and x >= 2 and y > x and y <= 9).

ambiguity_list=[[3,20]]
it will generate [3,9,10], [3,4,8,12], etc (any list [x1,x2,x3,..]
such that all values falling between 3 and 20.

ambiguity_list=[{5,6,10}]
it will generate a subset of {5,6,10} such as {5,10}, {5}.

ambiguity_list=[[2:9],[3,20],{5,6,11}]
it will pick one of [2:9], [3,20], and {5,6,11} and
generate a corresponding instance (see above)

مثال لملف الميزة:``` type=protocol; name=proto; proto_list=[TCP,UDP,ICMP]; complexity_prob=0;ambiguity_list=None; type=ip; name=sip; version=4; complexity_prob=100;

root@kitploit:~
ما سبق يحدد ميزتين، ميزة بروتوكول وميزة عنوان IP المصدر. يُسمى البروتوكول proto، وهو مهم فقط لمنسق القواعد، والبروتوكولات الصالحة هي: IP وTCP وUDP وICMP. تُعرّف ميزة IP على أنها IPv4 وستكون جميع القواعد معقدة. تعقيد IP هو بالفعل جزء من الفئة ولا يحتاج إلى إضافته في تعريف الميزة. سيؤدي ذلك إلى إنشاء عناوين IP باستخدام تدوين CIDR.

سمات الميزة العامة:

- Feature_name: سمة إعلامية، قد تكون ذات قيمة لمنسق القواعد.
- lower_bound: الحد الأدنى للقيم الممكنة. يفترض أن الميزة رقمية.
- upper_bound: عكس lower_bound.
- complexity_prob: احتمال استخدام ميزات معقدة لقاعدة. من 0 إلى 100. القيمة الافتراضية 0. عند استخدام ميزات معقدة، يتم اختيار تدوين غامض عشوائيًا من قائمة الغموض، أو إذا كانت الميزة تحدد غموضًا محددًا (مثل عناوين IP) فسيتم استخدام ذلك. عندما لا تستخدم الميزات المعقدة، يتم إنشاء قيمة باستخدام الحدود، أو، في حالة المحتوى (Content)، باستخدام مجموعة من قيم التوزيع التي ستقيد السلسلة الناتجة إلى سلسلة من أحرف ASCII.
- ambiguity_list: قائمة بالتدوينات الغامضة المحتملة. قائمة مفصولة بفواصل باستخدام تنسيق بايثون (أي [a, b, c]).
- toString(): يطبع مثيلاً لقاعدة معينة بهذه المجموعة الخاصة من الميزات.

ميزة المحتوى (Content Feature) -- ترث من Feature:
- regex: صحيح أو خطأ. إذا كان صحيحًا، فسيستخدم تنسيق pcre للتعبير العادي (regex) بالإضافة إلى إمكانية إضافة الخيارات i أو s أو m إلى التعبير العادي.
- length: يحدد متوسط طول المحتوى الذي تم إنشاؤه.
- min_regex_length: يحدد الحد الأدنى لطول التعبير العادي.

ميزة البروتوكول (Protocol Feature) -- ترث من Feature:
- proto_list: يحدد قائمة البروتوكولات الممكنة، كقائمة مفصولة بفواصل (أي [TCP, UDP]).

ميزة IP (IP Feature) -- ترث من Feature:
- version: 4 للإصدار الرابع من IP، 6 للإصدار السادس. القيمة الافتراضية 4.

تدوين غامض للنطاقات والقوائم والمجموعات:

تدوين النطاق:
  [x:y] يعني من x إلى y (شامل).

تدوين القائمة:
  [x,y] يعني قائمة بعدد عشوائي من القيم حيث كل قيمة أكبر من أو تساوي x وأصغر من أو تساوي y.

تدوين المجموعة:
  {x1,x2,x3,x4} يعني مجموعة من القيم x1, x2, x3, x4. سينتج مجموعة فرعية من المجموعة الأصلية.

يرجى الاطلاع على أمثلة مجموعات الميزات في مجلد example_features لمزيد من الأمثلة.
سيتم إضافة المزيد من التفاصيل بالإضافة إلى النظرية الأكاديمية وراء ذلك لاحقًا.
تنزيل الأداة
rule_formats.py
  • -f ملف القاعدة: قراءة ملف قاعدة واحد وفقًا للمسار واسم الملف المقدمين.

  • -F التكوين: تعيين ملف تكوين لخيارات Sniffles. ملف التكوين هو وسيلة لتثبيت المعلمات المستخدمة لتشغيل Sniffles.

  • -g الطابع الزمني: تعيين وقت البدء للطابع الزمني pcap. سيكون هذا عدد الثواني منذ 12/31/1969. الافتراضي هو الوقت الحالي.

  • -h بادئات IP المحلية: قائمة ببادئات شبكة IP المحلية. ستستخدم عناوين IP المعدة للمجيء من عنوان داخلي هذه البادئات. قد تحدد البادئات عنوان IPv4 بأكمله مكون من 4 بايتات بتنسيق xxx.xxx. على سبيل المثال: "10.192.168,172.16".

  • -H بادئات IPv6 المحلية: نفس بادئات IPv4 المحلية ولكن لـ IPv6. استثناءات ملحوظة، الفاصل هو نقطتان مع تمثيل بايتين بين النقطتين.

  • -i نسبة IPv6: قم بتعيين هذه القيمة بين 1 و 100 لإنشاء حزم باستخدام IPv6. سيحدد هذا النسبة المئوية للتدفقات التي ستكون IPv6.

  • -I شدة هجوم المسح (أي الحزم في الثانية).

  • -l طول المحتوى: تثبيت طول المحتوى على عدد البايتات المحددة. أقل من واحد سيضبط الطول مساويًا للمحتوى الناتج عن nfa، أو رقم عشوائي بين 10 و 1410 إذا كانت الرؤوس عشوائية أيضًا. سيتم اقتطاع الحزمة أو توسيدها حسب الحاجة.

  • -L زمن الانتقال: متوسط زمن الانتقال بالميكروثانية. إذا لم يتم تعيينه، يتم تحديد متوسط زمن انتقال عشوائي بين 1 و 200 ميكروثانية لكل تدفق. وبالتالي، سيكون للحزم الخاصة بتدفق معين متوسط زمن انتقال مقدار الوقت بين كل حزمة في التدفق.

  • -M يسمح باستخدام توزيع MAC للحصول على عناوين MAC مخصصة في حركة المرور. افتراضيًا، يتم إنشاء عناوين MAC بشكل عشوائي. يمكن العثور على مزيد من المعلومات حول ملف تعريف MAC في examples/mac_definition_file.txt. ملاحظة: يمكنك تحديد ما يصل إلى ملفي تعريف MAC لتعيين قيم مختلفة اعتمادًا على عناوين MAC المصدر أو الوجهة. إذا قمت بتحديد ملف واحد فقط، فسيتم استخدامه لأي من الاتجاهين. إذا استخدمت الترميز التالي، يمكنك التحديد لاتجاهات محددة. على سبيل المثال: 'path1:path2'. سيكون Path1 هو ملف تعريف MAC لعناوين MAC المصدر و path2 سيكون ملف تعريف MAC لعناوين MAC الوجهة. يمكنك أيضًا استخدام علامة استفهام (?) لتعيين أحدهما أو الآخر كعشوائي كما في: '?:path2' للحصول على عناوين MAC مصدر عشوائية ولكن استخدام الملف لـ.

  • -n عدم التطابق الكامل. يعين المحتوى الناتج عن قاعدة بحيث لا يتطابق تمامًا (أي سيتم اقتطاع الأحرف القليلة الأخيرة تلقائيًا). السلوك الافتراضي هو مطابقة محتوى القاعدة بالكامل.

  • -o ملف الإخراج: تعيين اسم ملف الإخراج. افتراضيًا، يتم تسمية الملف: sniffles.pcap.

  • -O الإزاحة: الإزاحة قبل بدء هجوم المسح. يُستخدم أيضًا عند إدخال عمليات مسح متعددة في حركة المرور. هذا هو عدد الثواني قبل بدء المسح. إذا تم استخدامه مع -R، يصبح هذا متوسط عدد الثواني قبل البدء.

  • -p الحزم لكل تدفق: تعيين عدد حزم المحتوى لدفق واحد. إذا تم توفير قيمة موجبة كوسيطة، فستظهر بالضبط x (إذا كانت x هي العدد الصحيح المقدم) حزمة محتوى لكل تدفق. إذا كانت x سالبة، فسيظهر عدد عشوائي من الحزم لكل تدفق (من 1 إلى |x|). افتراضيًا، هذه القيمة هي 1.

  • -P قائمة المنافذ المستهدفة: لهجوم المسح. قدم قائمة مفصولة بفواصل من المنافذ المحتملة، أو منفذ بداية واحد. وإلا سيتم مسح المنافذ بشكل عشوائي. إذا تم توفير منفذ بداية واحد، فسيتم مسح المنافذ بالترتيب من تلك النقطة إلى 65535، وبعد ذلك سيعود إلى نقطة البداية. إذا تم توفير قائمة، فسيتم مسح المنافذ في القائمة بطريقة round-robin.

  • -r عشوائي: إنشاء محتوى عشوائي بدلاً من القواعد. إذا تم توفير قواعد، يتم استخدام القواعد في توليد الرؤوس. ملاحظة: قد تتجاوز العديد من الميزات في القواعد جوانب معينة من التوليد العشوائي.

  • -R هجمات المسح العشوائية: ستستخدم الإزاحة لإنشاء هجمات مسح في حركة المرور، ولكنها ستستخدم الإزاحة فقط كمتوسط. يتم استخدام الإزاحة لتحديد مقدار الوقت بين انتهاء المسح وبدء مسح جديد.

  • -s هجوم المسح: متبوعًا بقائمة مفصولة بفواصل من عناوين IPv4 تشير إلى عنوان IP المستهدف. سينشئ كل نطاق IP هجوم مسح واحد. يجب أن تكون النطاقات مثل: 192.168.1.1 والتي تستهدف عنوان IP واحد بالضبط بينما 192.168.1 ستستهدف عناوين IP عشوائية بين 192.168.1.0 و 192.168.1.255.

  • -S نوع المسح: 1 == مسح SYN (افتراضي) 2 == مسح الاتصال.

  • -t مصافحة TCP: تضمين مصافحة TCP في جميع تدفقات TCP. إيقاف افتراضيًا.

  • -T إنهاء TCP: تضمين إنهاء TCP في جميع تدفقات TCP. إيقاف افتراضيًا.

  • -v الإسهاب: زيادة مستوى رسائل الإخراج.

  • -w كتابة المحتوى: كتابة سلاسل المحتوى إلى ملف يسمى 'all.re'

  • -W النافذة: النافذة، أو المدة، بالثواني لهجوم المسح.

  • -Z فرصة الرد: فرصة أن يكون للمسح رد. بمعنى آخر، فرصة أن يكون المنفذ الهدف مفتوحًا (افتراضي 20٪).