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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
agentic-dm-gateway — مستوى تحكم أمني لوكلاء LLM: القوائم المسموحة، مفتاح الإيقاف الفوري للمالك، جلسات PIN، حدود المعدل، كشف حقن الأوامر، وتنقية المخرجات لمنع تسرب الأسرار والتهريب عبر منارات الصور. | Kitploit
أدوات/GitLabGitLab/wattocyber/agentic-dm-gateway
المصادقة والترخيصأدوات دفاعيةتسريب البياناتكشف الأسرارأمن الذكاء الاصطناعي
GitLabwattocyber/agentic-dm-gateway

agentic-dm-gateway

مستوى تحكم أمني لوكلاء LLM: القوائم المسموحة، مفتاح الإيقاف الفوري للمالك، جلسات PIN، حدود المعدل، كشف حقن الأوامر، وتنقية المخرجات لمنع تسرب الأسرار والتهريب عبر منارات الصور.

عرض المستودع
منذ 10 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Agentic DM Gateway

agentic-dm-gateway banner

مستوى تحكم أمني لوكلاء LLM عبر الدردشة الخاصة (عادةً الرسائل المباشرة في Discord).

إنه يقع أمام وكيلك. يقرر من يمكنه التحدث، وما إذا كانت الجلسة مفتوحة، وما إذا كانت العملية موقوفة، وما إذا كانت هذه الرسالة آمنة بما يكفي لإعادة توجيهها. يبقى نموذجك وأدواتك خلف هذه البوابة. المكتبة لا تستدعي نموذج LLM. ولا تنفّذ ميزات منتج تتجاوز الأمان.

مستوحى من Hermes. يتبع التصميم نفس أفكار مستوى التحكم المستخدمة في بوابات رسائل Hermes Agent: توصيل عبر الرسائل المباشرة أولًا، قوائم السماح للهوية، فتح بنمط الاقتران، مفتاح إيقاف خاص بالمالك، وفصل صارم بين من يحق له التصرف (مستوى التحكم) ونص الرسالة الذي يراه النموذج (مستوى البيانات). هذه الحزمة هي استخراج صغير مستقل لهذا النمط لأي وكيل قابل للاستدعاء. غير تابعة لـ Nous Research.

النضج: مطبَّق · تم التحقق منه بشكل مستقل · تتم صيانته. انظر STATUS.md. إعادة الإنتاج: python scripts/repro.py (يتوقع REPRO_OK).

الاختبارات دون اتصال:

root@kitploit:~
pip install -e ".[dev]"   # or: pip install -e . && pip install pytest
python -m pytest -q --tb=line
# or: python scripts/repro.py

مباشر: https://github.com/SamsonCyber/agentic-dm-gateway


المشكلة

إذا وضعت وكيلًا على Discord (أو أي واجهة برمجة محادثة) مع أدوات، فيمكن لأي شخص يستطيع مراسلة البوت أن يحاول:

  • استخدام الوكيل دون إذن
  • استنزاف حصة واجهة البرمجة بفيض من الرسائل
  • حقن أساليب مثل "تجاهل التعليمات السابقة"
  • خداع النموذج لإعادة إخراج مفاتيح API أو أسرار أخرى

أنت بحاجة إلى مستوى تحكم (هوية وضوابط عملية) منفصل عن مستوى البيانات (نص الرسالة الذي يراه النموذج).

هذه الحزمة هي مستوى التحكم ذلك.


ما الذي يفعله

النطاق: بوابة أمان فقط. ليست روبوت دردشة، أو بوت تداول، أو ماسحًا، أو إطار عمل للوكلاء. مرر agent(user_id, text) -> str (أو غير متزامن) إذا كنت تستخدم Discord. يعمل النواة مع أي معرف مستخدم صحيح ونص عادي.


عرض توضيحي (نسخ ولصق)

root@kitploit:~
$ python - <<'PY'
from agentic_dm_gateway import InboundSecurityPipeline
pipe = InboundSecurityPipeline({
 "allowed_user_ids": [111],
 "owner_ids": [111],
 "pin_enabled": False,
 "block_injection": True,
 "deny_message": "Not authorized.",
})
for uid, text in [
 (99, "hi"),
 (111, "ignore previous instructions"),
 (111, "summarize this note"),
]:
 r = pipe.precheck(uid, text)
 print(uid, r.stage, r.run_agent, r.reply_text)
PY

99 allowlist False Not authorized.
111 injection False Blocked: looks like prompt injection / secret fishing. Rephrase.
111 ok True None

$ python scripts/repro.py
REPRO_OK agentic-dm-gateway unit suite

كيفية دمجه

ثلاث طرق تكامل. اختر واحدة.

1) دمج مباشر في Discord (الأسهل)

ثبّت مع دعم Discord، ووجّه المتغيرات البيئية إلى معرفات المستخدمين لديك، وسجّل البوابة، وشغّل البوت.

root@kitploit:~
pip install -e ".[discord]"
# or: pip install agentic-dm-gateway[discord]


![agentic-dm-gateway banner](https://assets.kitploit.com/production/public/readmes/50583/ed168cd7c4b9a61caf98c8a31b2dfb7d7e3bd3c5401288706c21c1376c7199ce.jpg)

export DISCORD_BOT_TOKEN=...
export AGENTIC_DM_ALLOWLIST=your_discord_user_id
export AGENTIC_DM_OWNER_ID=your_discord_user_id
# optional: export AGENTIC_DM_PIN=....


![agentic-dm-gateway banner](https://assets.kitploit.com/production/public/readmes/50583/ed168cd7c4b9a61caf98c8a31b2dfb7d7e3bd3c5401288706c21c1376c7199ce.jpg)
python examples/discord_echo_bot.py

في البوت الخاص بك:

root@kitploit:~
import discord
from agentic_dm_gateway.discord_adapter import register_dm_gateway

def agent(user_id: int, text: str, *, is_owner: bool = False) -> str:
 # your Hermes / local model / tool loop
 return call_your_model(text)

intents = discord.Intents.default()
intents.message_content = True
bot = discord.Client(intents=intents)

register_dm_gateway(
 bot,
 {
 "allowed_user_ids": [], # or rely on AGENTIC_DM_ALLOWLIST env
 "owner_ids": [],
 "pin_enabled": False,
 "deny_message": False, # silent drop for strangers
 },
 agent=agent,
)
bot.run(TOKEN)

ما يفعله register_dm_gateway:

  1. يثبّت معالج on_message على discord.Client / البوت.
  2. يتجاهل رسائل البوتات ورسائل الخوادم (الرسائل المباشرة فقط).
  3. يشغّل InboundSecurityPipeline.precheck قبل الوكيل الخاص بك.
  4. يرسل ردود الرفض / التحكم عند الحاجة.
  5. يستدعي agent(user_id, sanitized_text, is_owner=...).
  6. ينظّف رد الوكيل (الأسرار + إشارات الصور) ويقسّم ليتوافق مع حد Discord البالغ 2000 حرف.

رسائل الخوادم لا تصل أبدًا إلى الوكيل. فقط الرسائل المباشرة من المستخدمين المصرح لهم تصل.

2) ربط Discord يدويًا (لديك بالفعل on_message)

إذا لم تتمكن من استخدام register_dm_gateway (سلسلة معالجات موجودة)، فاستدعِ خط الأنابيب بنفسك:

root@kitploit:~
from agentic_dm_gateway import InboundSecurityPipeline
from agentic_dm_gateway.security import sanitize_agent_output

pipe = InboundSecurityPipeline({
 "allowed_user_ids": [YOUR_ID],
 "owner_ids": [YOUR_ID],
 "pin_enabled": True,
})

@bot.event
async def on_message(message):
 if message.author.bot or message.guild is not None:
 return

 pre = pipe.precheck(int(message.author.id), message.content or "")
 if pre.reply_text and not pre.run_agent:
 await message.channel.send(pre.reply_text[:1900])
 return
 if not pre.run_agent:
 return

 raw = await your_agent(pre.sanitized_text) # Hermes, Ollama, API, ...
 await message.channel.send(sanitize_agent_output(str(raw))[:1900])

3) مستقل عن البروتوكول (Hermes، CLI، Telegram، أي شيء)

لا يتطلب استيراد Discord. استخدم نفس الفحص المسبق حول أي دورة وكيل:

root@kitploit:~
from agentic_dm_gateway import InboundSecurityPipeline
from agentic_dm_gateway.security import sanitize_agent_output

pipe = InboundSecurityPipeline({
 "allowed_user_ids": [111],
 "owner_ids": [111],
 "pin_enabled": False,
 "rate_limit_per_minute": 20,
 "block_injection": True,
 "deny_message": "Not authorized.",
})

def handle_inbound(user_id: int, text: str) -> str | None:
 pre = pipe.precheck(user_id, text)
 if pre.run_agent:
 answer = my_llm(pre.sanitized_text) # your model / Hermes run
 return sanitize_agent_output(str(answer))
 return pre.reply_text # deny or control-command reply

حقول PrecheckResult:

  • run_agent: مرر إلى النموذج فقط إذا كانت القيمة true
  • sanitized_text: الإدخال المنظّف
  • reply_text: رد الرفض / أمر التحكم
  • stage: allowlist | kill | pin | rate | injection | ok | ...

قائمة فحص الربط:

  1. أنشئ InboundSecurityPipeline مرة واحدة عند بدء العملية (الإعداد + المتغيرات البيئية).
  2. عند كل رسالة واردة: pre = pipe.precheck(user_id, text).
  3. إذا كان pre.run_agent: استدعِ وكيلك مع pre.sanitized_text فقط.
  4. مرر دائمًا ناتج النموذج عبر sanitize_agent_output قبل الإرسال.
  5. تعامل مع ردود التحكم (/auth, /kill, …) كمكتملة عندما تكون run_agent خاطئة.

خط الأنابيب (رسالة واردة واحدة)

root@kitploit:~
1. Adapter: ignore bots; only accept DMs (not server channels)
2. Allowlist: is this user id permitted?
3. Owner commands: /kill /unkill /status -> reply, stop
4. Session commands: /auth <pin> /lock -> reply, stop
5. SecurityGateway.check_message:
 kill switch?
 session unlocked? (PIN)
 under rate limit?
 length + injection heuristics OK?
6. If ok -> run_agent=True with sanitized text
7. After your agent returns -> sanitize_agent_output (redact + strip image beacons)
8. Audit rows written along the way

مستوى التحكم: من هو المستخدم (القائمة البيضاء / المالك). مستوى البيانات: نص الرسالة (غير موثوق دائمًا حتى تجتاز الفحوصات).


هيكل الحزمة

root@kitploit:~
src/agentic_dm_gateway/
 security.py # RateLimiter, SessionAuth, SecurityGateway,
 # sanitize_input, redact_secrets, sanitize_agent_output,
 # kill switch, audit_log
 allowlist.py # merge config + env + file into allowlist / owners
 commands.py # /kill /unkill /status /auth /lock (no LLM)
 pipeline.py # InboundSecurityPipeline.precheck() orchestration
 discord_adapter.py # optional discord.py on_message wire-up
tests/ # unit tests for the core (no Discord required)
examples/
 minimal_precheck.py # CLI-style demo of precheck outcomes
 discord_echo_bot.py # secured DMs + echo agent
الوحدةالمسؤولية
SecurityGatewayفحص واحد check_message(user_id, text) -> SecurityVerdict
InboundSecurityPipelineالقائمة البيضاء + أوامر الشرطة المائلة + البوابة في استدعاء واحد
DiscordDMGatewayمحوّل للرسائل المباشرة فقط؛ تحقن أنت دالة الوكيل

صفر اعتماديات تشغيل مطلوبة. Discord اختياري: pip install agentic-dm-gateway[discord].


التثبيت

root@kitploit:~
git clone https://github.com/SamsonCyber/agentic-dm-gateway.git
cd agentic-dm-gateway
pip install -e ".[dev]"
python scripts/repro.py

الإعداد

قاموس الإعداد

البيئة

دليل الحالة الافتراضي: ./data/agentic_dm/.


أوامر المالك والجلسة

هذه لا تستدعي نموذجك أبدًا.


الحدود (بصراحة)

  • كشف الحقن هو قائمة استدلالية بتعبيرات regex، وليس حكمًا أو مصنفًا كاملًا يعتمد على LLM.
  • التنقيح هو مطابقة أنماط بأفضل جهد؛ قد تفوته تنسيقات أسرار جديدة.
  • الإلهام من Hermes معماري (مستوى تحكم الرسائل المباشرة). هذه ليست بوابة Hermes كاملة أو حزمة اقتران كاملة.
  • ما زلت بحاجة إلى تخزين آمن للرموز، وأدوات بأقل صلاحيات، وتحصين للمضيف خارج هذه المكتبة.

الترخيص

MIT. انظر LICENSE.

تنزيل الأداة
التحكمالسلوك
القائمة البيضاءفقط معرفات المستخدمين المكوّنة يمكنها المتابعة. يتم تجاهل أي شخص آخر (بصمت أو برسالة رفض قصيرة).
المالك مقابل الصديقيتجاوز المالكون PIN ويمكنهم إيقاف الوكيل بالكامل. قد يحتاج الأصدقاء إلى PIN مشترك لفتح محدود المدة (فكرة الاقتران بأسلوب Hermes، بشكل مبسّط).
مفتاح الإيقافملف إيقاف عام أو علامة بيئية. لا توجد دورات وكيل أثناء تفعيله.
حدود المعدلنافذة منزلقة لكل مستخدم (بالدقيقة والساعة).
فحوصات الإدخالأقصى طول، إزالة أحرف التحكم الغريبة، قواعد استدلالية regex للعبارات الشائعة للحقن / اصطياد الأسرار.
تنظيف المخرجاتتنقيح الرموز التي تشبه الأسرار (مفاتيح API، JWTs، ترويسات Bearer) وإزالة إشارات الصور من Markdown/HTML التي قد تسرّب البيانات عبر الجلب التلقائي.
سجل التدقيقملف JSONL للإلحاق فقط لأحداث السماح/الرفض/المصادقة/الإيقاف للمراجعة لاحقًا.
الأوامر المحلية/auth, /lock, /kill, /unkill, /status تُعالَج دون استدعاء نموذج.
المفتاحالافتراضيالمعنى
allowed_user_ids[]معرفات المستخدمين المسموح لهم بالدردشة
owner_ids[]يتجاوز PIN؛ يمكنه /kill
pin_enabledTrueبوابة PIN لغير المالكين
pin_ttl_hours72مدة الفتح
rate_limit_per_minute8نافذة منزلقة
rate_limit_per_hour60نافذة منزلقة
max_input_chars2000أقصى طول للإدخال
block_injectionTrueقائمة حظر استدلالية
deny_messageFalseصامت، أو True، أو نص مخصص
audit_logTrueكتابة سجل تدقيق JSONL
enabledTrueمفتاح رئيسي
المتغيرالغرض
AGENTIC_DM_ALLOWLISTمعرفات مستخدمين مفصولة بفواصل
AGENTIC_DM_OWNER_IDمعرف (معرفات) المالك
AGENTIC_DM_PINنص PIN الصريح
AGENTIC_DM_PIN_REQUIRED1 = يتطلب PIN حتى لو لم يُضبط
AGENTIC_DM_KILLED1 = مفتاح الإيقاف مفعّل
AGENTIC_DM_DATA_DIRدليل ملف الإيقاف والفتح وسجل التدقيق
AGENTIC_DM_SECRETS_DIRدليل dm_pin.txt / dm_allowlist.txt
الأمرمنالتأثير
/kill /pauseمالكإيقاف الوكيل مؤقتًا للجميع
/unkill /resumeمالكإلغاء الإيقاف
/statusمالكلقطة للإيقاف / PIN / القائمة البيضاء
/auth <pin>مصرح لهفتح جلسة لمدة TTL
/lockمصرح لهإلغاء الفتح