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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
kiterunner — أداة اكتشاف محتوى الويب وواجهات برمجة التطبيقات عالية السرعة التي تخترق المسارات باستخدام مجموعات بيانات Swagger المجمعة، وتدعم المسح العميق، وقوائم الكلمات المخصصة، والمسح المتزامن للمضيفين. | Kitploit
أدوات/GitHubGitHub/assetnote/kiterunner
الاستطلاعاختبار أمان APIجمع المعلوماتأمن الويب
GitHubassetnote/kiterunner

kiterunner

أداة اكتشاف محتوى الويب وواجهات برمجة التطبيقات عالية السرعة التي تخترق المسارات باستخدام مجموعات بيانات Swagger المجمعة، وتدعم المسح العميق، وقوائم الكلمات المخصصة، والمسح المتزامن للمضيفين.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Kiterunner

GoDoc GitHub release Go Report Card

مقدمة

لأطول فترة، كان اكتشاف المحتوى يركز على إيجاد الملفات والمجلدات. بينما هذا الأسلوب فعال لخوادم الويب القديمة التي تستضيف ملفات ثابتة أو تستجيب بـ 3xx عند مسار جزئي، لم يعد فعالاً للتطبيقات الحديثة، خاصة واجهات برمجة التطبيقات (APIs).

مع الوقت، شهدنا استثمار الكثير من الوقت في جعل أدوات اكتشاف المحتوى أسرع لاستخدام قوائم كلمات أكبر، لكن فن اكتشاف المحتوى لم يشهد ابتكاراً جديداً.

Kiterunner هي أداة قادرة ليس فقط على أداء اكتشاف المحتوى التقليدي بسرعات فائقة، بل أيضاً على تخمين المسارات/النقاط النهائية في التطبيقات الحديثة.

أطر العمل الحديثة مثل Flask وRails وExpress وDjango وغيرها تتبع نموذج تعريف المسارات بشكل صريح والتي تتوقع طرق HTTP معينة، ورؤوس، ومعاملات، وقيم.

عند استخدام أدوات اكتشاف المحتوى التقليدية، غالباً ما تفوت هذه المسارات ولا يمكن اكتشافها بسهولة.

من خلال تجميع مجموعة من مواصفات Swagger وتكثيفها في مخططنا الخاص، يمكن لـ Kiterunner استخدام هذه المجموعة لتخمين نقاط نهاية API عن طريق إرسال طريقة HTTP الصحيحة، والرؤوس، والمسار، والمعاملات، والقيم لكل طلب ترسله.

تم جمع ملفات Swagger من عدة مصادر بيانات، بما في ذلك مسح واسع للإنترنت لأكثر من 40 مساراً شائعاً لـ Swagger. شملت المصادر الأخرى GitHub عبر BigQuery، وAPIs.guru.

المحتويات

  • Kiterunner
  • مقدمة
  • التثبيت
    • تنزيل إصدار
    • البناء من المصدر
    • التثبيت عبر AUR
  • الاستخدام
    • بداية سريعة
    • مساعدة سطر الأوامر
    • تنسيق الإدخال/المضيف
    • فحص API
    • التخمين العادي
    • تخمين Dirsearch
  • الميزات التقنية
    • فحص العمق
    • استخدام قوائم كلمات Assetnote
      • صيغة الرأس
    • إعدادات التزامن/السرعة
    • التحويل بين صيغ الملفات
    • إعادة تشغيل الطلبات
  • التنفيذ التقني
    • نوع البيانات الوسيط (PRoutes)
    • صيغة ملف Kite

التثبيت

تنزيل إصدار

يمكنك تنزيل نسخة مبنية مسبقاً من https://github.com/assetnote/kiterunner/releases.

البناء من المصدر```bash

build the binary

make build

symlink your binary

ln -s $(pwd)/dist/kr /usr/local/bin/kr

compile the wordlist

kr kb compile <input.json> <output.kite>

kr kb compile routes.json routes.kite

scan away

kr scan hosts.txt -w routes.kite -x 20 -j 100 --ignore-length=1053

root@kitploit:~
يمكن العثور على مجموعات بيانات JSON أدناه:

- [routes-large.json](https://wordlists-cdn.assetnote.io/rawdata/kiterunner/routes-large.json.tar.gz) (118MB مضغوط، 2.6GB بعد فك الضغط)
- [routes-small.json](https://wordlists-cdn.assetnote.io/rawdata/kiterunner/routes-small.json.tar.gz) (14MB مضغوط، 228MB بعد فك الضغط)

بدلاً من ذلك، من الممكن تنزيل ملفات `.kite` المترجمة من الروابط أدناه:

- [routes-large.kite](https://wordlists-cdn.assetnote.io/data/kiterunner/routes-large.kite.tar.gz) (40MB مضغوط، 183M بعد فك الضغط)
- [routes-small.kite](https://wordlists-cdn.assetnote.io/data/kiterunner/routes-small.kite.tar.gz) (2MB مضغوط، 35MB بعد فك الضغط)

## AUR
يمكن للمستخدمين الذين يستخدمون توزيعة قائمة على Arch تنزيل الثنائي المبني مسبقًا من [AUR](https://aur.archlinux.org/packages/kiterunner-bin/)
يمكنك استخدام "مساعد AUR" مثل `yay` لتثبيت kiterunner```
yay -S kiterunner-bin

الاستخدام

بدء سريع```

kr [scan|brute] [flags]

root@kitploit:~
- `<input>` يمكن أن يكون ملفًا، أو نطاقًا، أو URI. سنقوم بمعالجته لك. راجع [تنسيق الإدخال/المضيف](#inputhost-formatting) لمزيد من التفاصيل```
# Just have a list of hosts and no wordlist
kr scan hosts.txt -A=apiroutes-210328:20000 -x 5 -j 100 --fail-status-codes 400,401,404,403,501,502,426,411

# You have your own wordlist but you want assetnote wordlists too
kr scan target.com -w routes.kite -A=apiroutes-210328:20000 -x 20 -j 1 --fail-status-codes 400,401,404,403,501,502,426,411

# Bruteforce like normal but with the first 20000 words
kr brute https://target.com/subapp/ -A=aspx-210328:20000 -x 20 -j 1

# Use a dirsearch style wordlist with %EXT%
kr brute https://target.com/subapp/ -w dirsearch.txt -x 20 -j 1 -exml,asp,aspx,ashx -D

مساعدة CLI```

Usage: kite scan [flags]

Flags: -A, --assetnote-wordlist strings use the wordlists from wordlist.assetnote.io. specify the type/name to use, e.g. apiroutes-210228. You can specify an additional maxlength to use only the first N values in the wordlist, e.g. apiroutes-210228;20000 will only use the first 20000 lines in that wordlist --blacklist-domain strings domains that are blacklisted for redirects. We will not follow redirects to these domains --delay duration delay to place inbetween requests to a single host --disable-precheck whether to skip host discovery --fail-status-codes ints which status codes blacklist as fail. if this is set, this will override success-status-codes --filter-api strings only scan apis matching this ksuid --force-method string whether to ignore the methods specified in the ogl file and force this method -H, --header strings headers to add to requests (default [x-forwarded-for: 127.0.0.1]) -h, --help help for scan --ignore-length strings a range of content length bytes to ignore. you can have multiple. e.g. 100-105 or 1234 or 123,34-53. This is inclusive on both ends --kitebuilder-full-scan perform a full scan without first performing a phase scan. -w, --kitebuilder-list strings ogl wordlist to use for scanning -x, --max-connection-per-host int max connections to a single host (default 3) -j, --max-parallel-hosts int max number of concurrent hosts to scan at once (default 50) --max-redirects int maximum number of redirects to follow (default 3) -d, --preflight-depth int when performing preflight checks, what directory depth do we attempt to check. 0 means that only the docroot is checked (default 1) --profile-name string name for profile output file --progress a progress bar while scanning. by default enabled only on Stderr (default true) --quarantine-threshold int if the host return N consecutive hits, we quarantine the host as wildcard. Set to 0 to disable (default 10) --success-status-codes ints which status codes whitelist as success. this is the default mode -t, --timeout duration timeout to use on all requests (default 3s) --user-agent string user agent to use for requests (default "Chrome. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36") --wildcard-detection can be set to false to disable wildcard redirect detection (default true)

Global Flags: --config string config file (default is $HOME/.kiterunner.yaml) -o, --output string output format. can be json,text,pretty (default "pretty") -q, --quiet quiet mode. will mute unecessarry pretty text -v, --verbose string level of logging verbosity. can be error,info,debug,trace (default "info")

root@kitploit:~
bruteforce flags (جميع العلامات المذكورة أعلاه +)```
  -D, --dirsearch-compat              this will replace %EXT% with the extensions provided. backwards compat with dirsearch because shubs loves him some dirsearch
  -e, --extensions strings            extensions to append while scanning
  -w, --wordlist strings              normal wordlist to use for scanning

تنسيق الإدخال/المضيف

عند توفير إدخال، سيحاول kiterunner حل الإدخال بالترتيب التالي:

  1. هل الإدخال ملف. إذا كان الأمر كذلك، اقرأ جميع الأسطر في الملف كمجالات منفصلة
  2. يتم التعامل مع الإدخال كـ 'مجال'

إذا قمت بتوفير 'مجال'، ولكنه موجود كملف، على سبيل المثال google.com ولكن google.com هو أيضًا ملف txt في الدليل الحالي، فسنقوم بتحميل google.com ملف النص، لأننا وجدناه أولاً.

تحليل المجال

يُفضل أن تقدم URI كامل كإدخال، ومع ذلك يمكنك تقديم URIs غير مكتملة وسنحاول تخمين ما تقصده. فيما يلي قائمة أمثلة على المجالات التي يمكنك تقديمها:``` one.com two.com:80 three.com:443 four.com:9447 https://five.com:9090 http://six.com:80/api

root@kitploit:~
القائمة أعلاه من النطاقات ستتوسع إلى القائمة التالية من الأهداف```
(two targets are created for one.com, since neither port nor protocol was specified)
http://one.com (port 80 implied)
https://one.com (port 443 implied)

http://two.com (port 80 implied)
https://three.com (port 443 implied)
http://four.com:9447 (non-tls port guessed)
https://five.com:9090
http://six.com/api (port 80 implied; basepath API appended)

القواعد التي نطبقها هي:

  • إذا قمت بتقديم مخطط (scheme)، فإننا نستخدمه.
    • نحن ندعم فقط http و https
    • إذا لم تقم بتقديم مخطط، فسنخمن بناءً على المنفذ
  • إذا قمت بتقديم منفذ (port)، فإننا نستخدمه.
    • إذا كان منفذك هو 443 أو 8443، فسنفترض أنه TLS
    • إذا لم تقم بتقديم منفذ، فسنخمن كلاً من المنفذين 80 و 443
  • إذا قمت بتقديم مسار (path)، فسنسبقه على جميع الطلبات الموجهة إلى ذلك المضيف

فحص API

عندما يكون لديك هدف واحد```bash

single target

kr scan https://target.com:8443/ -w routes.kite -A=apiroutes-210228:20000 -x 10 --ignore-length=34

single target, but you want to try http and https

kr scan target.com -w routes.kite -A=apiroutes-210228:20000 -x 10 --ignore-length=34

a list of targets

kr scan targets.txt -w routes.kite -A=apiroutes-210228:20000 -x 10 --ignore-length=34

root@kitploit:~
## القوة العمياء العادية```bash
kr brute https://target.com -A=raft-large-words -A=apiroutes-210228:20000 -x 10 -d=0 --ignore-length=34 -ejson,txt

هجمات Dirsearch بالقوة الغاشمة

عندما يكون لديك wordlist قديمة لا تزال تحتوي على %EXT% في القائمة، يمكنك استخدام -D. وهذا سيستبدل الامتداد فقط حيثما يكون %EXT% موجودًا في المسار```bash kr brute https://target.com -w dirsearch.txt -x 10 -d=0 --ignore-length=34 -ejson,txt -D

root@kitploit:~
# الميزات التقنية

## الفحص العميق

من الميزات الرئيسية لـ kiterunner هو الفحص القائم على العمق. يحاول هذا التعامل مع اكتشاف أحرف البدل نظرًا للتوجيه القائم على مسار التطبيق الافتراضي. يحدد العمق عدد مستويات الدليل التي يتم إجراء الفحوصات الأساسية فيها على سبيل المثال.```bash
~/kiterunner $ cat wordlist.txt

/api/v1/user/create
/api/v1/user/delete
/api/v2/user/
/api/v2/admin/
/secrets/v1/
/secrets/v2/
  • عند العمق 0، سيكون لدى / فقط الفحوصات الأساسية التي يتم إجراؤها للكشف عن أحرف البدل
  • عند العمق 1، سيكون لدى /api و /secrets فحوصات أساسية يتم إجراؤها؛ وسيتم استخدام هذه الفحوصات مقابل /api و /secrets على التوالي
  • عند العمق 2، سيكون لدى /api/v1 و /api/v2 و /secrets/v1 و /secrets/v2 فحوصات أساسية يتم إجراؤها.

بشكل افتراضي، يكون لـ kr scan عمق 1، لأننا من الاستخدام الداخلي، غالبًا ما رأينا هذا على أنه العمق الأكثر شيوعًا حيث يحدث التوجيه الافتراضي. بينما kr brute له عمق افتراضي 0، لأنك عادةً لا تريد إجراء هذا الفحص باستخدام قائمة كلمات ثابتة.

بطبيعة الحال، زيادة العمق ستزيد من دقة عمليات الفحص، ولكن هذا أيضًا يزيد من عدد الطلبات إلى الهدف. (# من الفحوصات الأساسية * # من أدلة العمق الأساسية). ومن هنا، نوصي بعدم تجاوز 1، وفي حالات نادرة الوصول إلى العمق 2.

استخدام قوائم كلمات Assetnote

نوفر تنزيلًا وتخزينًا مؤقتًا مدمجًا لقوائم الكلمات من assetnote.io. يمكنك استخدامها مع العلامة -A التي تستقبل قائمة مفصولة بفواصل من الأسماء المستعارة أو الأسماء الكاملة.

يمكنك الحصول على قائمة كاملة بجميع قوائم كلمات Assetnote باستخدام kr wordlist list.

عند استخدام قوائم الكلمات، يتم تخزينها مؤقتًا في ~/.cache/kiterunner/wordlists. عند استخدامها، يتم تجميعها من .txt إلى .kite.``` +-----------------------------------+-------------------------------------------------------+----------------+---------+----------+--------+ | ALIAS | FILENAME | SOURCE | COUNT | FILESIZE | CACHED | +-----------------------------------+-------------------------------------------------------+----------------+---------+----------+--------+ | 2m-subdomains | 2m-subdomains.txt | manual.json | 2167059 | 28.0mb | false | | asp_lowercase | asp_lowercase.txt | manual.json | 24074 | 1.1mb | false | | aspx_lowercase | aspx_lowercase.txt | manual.json | 80293 | 4.4mb | false | | bak | bak.txt | manual.json | 31725 | 634.8kb | false | | best-dns-wordlist | best-dns-wordlist.txt | manual.json | 9996122 | 139.0mb | false | | cfm | cfm.txt | manual.json | 12100 | 260.3kb | true | | do | do.txt | manual.json | 173152 | 4.8mb | false | | dot_filenames | dot_filenames.txt | manual.json | 3191712 | 71.3mb | false | | html | html.txt | manual.json | 4227526 | 107.7mb | false | | apiroutes-201120 | httparchive_apiroutes_2020_11_20.txt | automated.json | 953011 | 45.3mb | false | | apiroutes-210128 | httparchive_apiroutes_2021_01_28.txt | automated.json | 225456 | 6.6mb | false | | apiroutes-210228 | httparchive_apiroutes_2021_02_28.txt | automated.json | 223544 | 6.5mb | true | | apiroutes-210328 | httparchive_apiroutes_2021_03_28.txt | automated.json | 215114 | 6.3mb | false | | aspx-201118 | httparchive_aspx_asp_cfm_svc_ashx_asmx_2020_11_18.txt | automated.json | 63200 | 1.7mb | false | | aspx-210128 | httparchive_aspx_asp_cfm_svc_ashx_asmx_2021_01_28.txt | automated.json | 46286 | 928.7kb | false | | aspx-210228 | httparchive_aspx_asp_cfm_svc_ashx_asmx_2021_02_28.txt | automated.json | 43958 | 883.3kb | false | | aspx-210328 | httparchive_aspx_asp_cfm_svc_ashx_asmx_2021_03_28.txt | automated.json | 45928 | 926.8kb | false | | cgi-201118 | httparchive_cgi_pl_2020_11_18.txt | automated.json | 2637 | 44.0kb | false |

``` **الاستخدام**``` kr scan targets.txt -A=apiroutes-210228 -x 10 --ignore-length=34 kr brute targets.txt -A=aspx-210228 -x 10 --ignore-length=34 -easp,aspx ``` ### صيغة Head

عند استخدام قوائم الكلمات المقدمة من assetnote، قد لا ترغب في استخدام القائمة بأكملها، لذا يمكنك اختيار استخدام أول N سطر في قائمة كلمات معينة باستخدام صيغة head. الصيغة هي <wordlist_name>:<N lines> عند تحديد قائمة كلمات.

الاستخدام```

this will use the first 20000 lines in the api routes wordlist

kr scan targets.txt -A=apiroutes-210228:20000 -x 10 --ignore-length=34

this will use the first 10 lines in the aspx wordlist

kr brute targets.txt -A=aspx-210228:10 -x 10 --ignore-length=34 -easp,aspx

root@kitploit:~
## إعدادات التزامن/العمل بسرعة

تم تصميم Kiterunner ليعمل بسرعة على عدد كبير من المضيفين. ولكن، مجرد قدرتك على تشغيل kiterunner بـ 20000 غوروتين (goroutine) لا يعني أنها فكرة جيدة. سيحدث اختناق وتدهور في الأداء عند أعداد الخيوط العالية بسبب زيادة الوقت المستغرق في جدولة الغوروتينات التي تنتظر إدخال/إخراج الشبكة وتبديل السياق في النواة.

هناك إعدادان رئيسيان للتزامن في kiterunner:
- `-x, --max-connection-per-host` - أقصى عدد من الاتصالات المفتوحة التي يمكننا الحصول عليها على مضيف. يحكمه غوروتين واحد لكل اتصال. لتجنب هجوم رفض الخدمة (DOS) على مضيف، نوصي بإبقاء هذا الرقم منخفضًا في نطاق 5-10. اعتمادًا على زمن الوصول إلى الهدف، سينتج عن هذا في المتوسط ما بين 1-5 طلبات في الثانية لكل اتصال (200ms - 1000ms/req) لمضيف.
- `-j, --max-parallel-hosts` - أقصى عدد من المضيفين يمكن فحصهم في أي وقت. يحكمه مشرف غوروتين واحد لكل منهم.

اعتمادًا على الأجهزة التي تفحص منها، سيختلف العدد "الأقصى" للغوروتينات التي يمكنك تشغيلها بشكل أمثل. على مثيل AWS t3.medium، لاحظنا تدهورًا في الأداء عند تجاوز 2500 غوروتين. أي أن 500 مضيف × 5 اتصالات لكل مضيف (2500) سيعطي أداءً ذرويًا.

نوصي **بعدم** تشغيل kiterunner من جهاز **macbook** الخاص بك. نظرًا لضعف تحسينات النواة لأعداد الإدخال/الإخراج العالية واستدعاءات النظام Epoll على macOS، لاحظنا أداءً أضعف بشكل ملحوظ (0.3-0.5x) مقارنة بتشغيل kiterunner على مثيل linux مهيأ بشكل مماثل.

لتعظيم الأداء عند فحص هدف فردي، أو سطح هجوم كبير، نوصي بالنصائح التالية:
- قم بتشغيل مثيل EC2 في منطقة جغرافية/مركز بيانات مشابه للأهداف التي تفحصها
- قم بإجراء بعض الاختبارات الأولية مقابل مجموعة أهدافك باستخدام خيارات `-x` و `-j` المختلفة. نوصي ببدء نموذجي من حوالي `-x 5 -j 100` ثم زيادة `-j` لأعلى مع سماح استخدام وحدة المعالجة المركزية/أداء الشبكة بذلك.

## التحويل بين تنسيقات الملفات

سيسمح لك Kiterunner أيضًا بالتحويل بين JSON المخطط، ملف kite وقائمة كلمات txt قياسية.

**الاستخدام**

يتم تحديد التنسيق من خلال امتداد نوع الملف المقدم من حقلي `<input>` و `<output>`. نحن ندعم `txt` و `json` و `kite````bash
kr kb convert wordlist.txt wordlist.kite
kr kb convert wordlist.kite wordlist.json
kr kb convert wordlist.kite wordlist.txt
root@kitploit:~
❯ go run ./cmd/kiterunner kb convert -qh
convert an input file format into the specified output file format

this will determine the conversion based on the extensions of the input and the output
we support the following filetypes: txt, json, kite
You can convert any of the following into the corresponding types

-d Debug mode will attempt to convert the schema with error handling
-v=debug Debug verbosity will print out the errors for the schema

Usage:
kite kb convert <input> <output> [flags]

Flags:
-d, --debug   debug the parsing
-h, --help    help for convert

Global Flags:
--config string    config file (default is $HOME/.kiterunner.yaml)
-o, --output string    output format. can be json,text,pretty (default "pretty")
-q, --quiet            quiet mode. will mute unecessarry pretty text
-v, --verbose string   level of logging verbosity. can be error,info,debug,trace (default "info")``bigquery

إعادة تشغيل الطلبات

عندما تتلقى مجموعة من المخرجات من kiterunner، قد يكون من الصعب فهم سبب تسبب طلب معين في رمز/طول استجابة محدد. تقدم kiterunner طريقة لإعادة بناء الطلب من قوائم الكلمات المستخدمة بما في ذلك جميع معاملات الرأس والنص.

  • يمكنك إعادة تشغيل طلب عن طريق نسخ ولصق مخرجات الاستجابة الكاملة في أمر kb replay.
  • يمكنك تحديد --proxy لتوجيه طلباتك من خلاله، بحيث يمكنك تعديل/تكرار/اعتراض الطلب باستخدام أدوات طرف ثالث إذا أردت.
  • سيقوم عميل golang net/http بإجراء بعض التغييرات الإضافية على طلبك بسبب كيفية تنفيذ مواصفات golang الافتراضية (للأسف).```bash ❯ go run ./cmd/kiterunner kb replay -q --proxy=http://localhost:8080 -w routes.kite "POST 403 [ 287, 10, 1] https://target.com/dedalo/lib/dedalo/publication/server_api/v1/json/thesaurus_parents 0cc39f76702ea287ec3e93f4b4710db9c8a86251" 11:25AM INF Raw reconstructed request POST /dedalo/lib/dedalo/publication/server_api/v1/json/thesaurus_parents?ar_fields=48637466&code=66132381&db_name=08791392&lang=lg-eng&recursive=false&term_id=72336471 HTTP/1.1 Content-Type: any

11:25AM INF Outbound request POST /dedalo/lib/dedalo/publication/server_api/v1/json/thesaurus_parents?ar_fields=48637466&code=66132381&db_name=08791392&lang=lg-eng&recursive=false&term_id=72336471 HTTP/1.1 Host: target.com User-Agent: Go-http-client/1.1 Content-Length: 0 Content-Type: any Accept-Encoding: gzip

11:25AM INF Response After Redirects HTTP/1.1 403 Forbidden Connection: close Content-Length: 45 Content-Type: application/json Date: Wed, 07 Apr 2021 01:25:28 GMT X-Amzn-Requestid: 7e6b2ea1-c662-4671-9eaa-e8cd31b463f2

User is not authorized to perform this action

root@kitploit:~
## التنفيذ التقني

### نوع البيانات الوسيط (PRoutes)

نستخدم تمثيلاً وسيطاً لقوائم الكلمات (wordlists) ومخططات json الخاصة بـ kitebuilder في kiterunner. وهذا يسمح لنا بتوليد الحقول في قائمة الكلمات ديناميكياً وإعادة بناء أجسام الطلبات (bodies) والرؤوس (headers) ومُعاملات الاستعلام (query parameters) وفقاً لمواصفات محددة.

يتكون نوع PRoute من مُعاملات Headers وBody وQuery وCookie المُشفرة في `pkg/proute.Crumb`. نوع Crumb هو واجهة (interface) يتم تنفيذها على أنواع مثل UUIDs وFloats وInts وRandom Strings وغيرها.

عند إجراء التحويلات من وإلى ملفات txt وjson وkite، يتم أولاً إجراء جميع التحويلات إلى النوع الوسيط `pkg/proute.API`. ثم يتم كتابة الترميز المقابل.

## تنسيق ملف Kite

نستخدم تنسيق ملف kite فائق السرية لتخزين مخططات json من kitebuilder. وهي ببساطة ملفات `pkg/proute.APIS` مشفرة بـ protobuf ومكتوبة في ملف. يتم استخدام التجميع للسماح لنا بإلغاء تسلسل قائمة الكلمات التي تم تحليلها بسرعة. هذا التنسيق غير مستقر، ويجب التفاعل معه فقط باستخدام أدوات التحويل المدمجة في kiterunner.

عند إصدار إصدار جديد من تنسيق ملف kite، قد تحتاج إلى إعادة تجميع ملفات kite الخاصة بك.
تنزيل الأداة