
خادم MCP يركز على الأمن، يمكّن وكلاء الذكاء الاصطناعي من إجراء الهندسة العكسية الآلية، وتحليل البرامج الضارة، والأدلة الرقمية، وأبحاث الثغرات، والاختبار الثابت لأمان التطبيقات (SAST) — مدعومًا بـ Radare2 و YARA و LIEF و Capstone والمزيد.
هندسة عكسية وتحليل أمني مدعومان بالذكاء الاصطناعي عبر Model Context Protocol
خادم MCP يمنح المساعدين الذكيين مثل Claude وCursor القدرة على تنفيذ الهندسة العكسية، تحليل البرمجيات الخبيثة، البحث في الثغرات، التحليل الجنائي الرقمي، ومراجعة الكود المصدري من خلال اللغة الطبيعية.
Reversecore MCP هو خادم Model Context Protocol يغلف 120 أداة تحليل في واجهة واحدة يمكن للمساعدين الذكيين استدعاؤها عبر اللغة الطبيعية.
بدلاً من تعلّم صيغة سطر الأوامر لعشرات الأدوات المختلفة، تصف ما تريده:``` "Decompile the main function of this malware sample, extract all network IOCs, map the behavior to MITRE ATT&CK, and generate a triage report."
يقسّم مساعد الذكاء الاصطناعي هذا إلى استدعاءات أدوات:```
r2_decompile("sample.exe", "main")
→ extract_iocs("sample.exe")
→ add_mitre_technique(technique_id="T1071.001", ...)
→ create_analysis_report(template_type="quick_triage")
تُرجع كل أداة ToolResult منظمًا (إما ToolSuccess أو ToolError) مع بيانات مُنمّطة يمكن للذكاء الاصطناعي التفكير فيها، وربطها في استعلامات متابعة، أو عرضها للمستخدم.
AI Client (Claude / Cursor / any MCP-compatible client) │ MCP Protocol (stdio or HTTP/SSE) ▼ ┌──────────────────────────────────────────────────────┐ │ FastMCP 3.4.4 Server │ │ 120 registered tools · Fully async │ │ Python 3.10–3.12 │ ├────────────────────┬─────────────────────────────────┤ │ Guided Prompts │ Dynamic Resources │ │ (22 analysis │ (11 URI-based: per-binary │ │ modes) │ strings, IOCs, ASM, CFG, …) │ ├────────────────────┴─────────────────────────────────┤ │ Core Infrastructure │ │ Config · Security · Validators · Exceptions (17) │ │ R2 Pool · Metrics · Memory (SQLite) · Task Queue │ │ MITRE Mapper · Evidence Engine · Resilience Layer │ │ Arch Registry (x86/ARM/MIPS/RISC-V/PPC) │ │ Result Cache (SHA256) · Analysis Cache (Redis+SQL) │ │ SAST (Python AST + C/C++ Regex) · Plugin System │ ├──────────────────────────────────────────────────────┤ │ Analysis Engines │ │ Radare2 6.0.4 │ YARA 4.3.1 · LIEF · Capstone │ │ r2ghidra │ CAPA · angr · Qiling │ │ Volatility3 · Scapy│ DIE · Binwalk · Sleuth Kit │ │ pwntools · ROPgadget│ Keystone (assembler) │ └──────────────────────────────────────────────────────┘
### البنية التحتية الأساسية (37 وحدة)
يحتوي دليل `reversecore_mcp/core/` على البنية التحتية المشتركة التي تُبنى عليها جميع الأدوات:
| الوحدة | الغرض |
|---|---|
| `config.py` | إعدادات Pydantic BaseSettings مع 34+ متغير بيئة |
| `security.py` | تعقيم المدخلات والتحقق من وسائط الأوامر |
| `validators.py` | التحقق من مسارات الملفات والثنائيات مع تخفيف TOCTOU وحل الروابط الرمزية (symlinks) |
| `r2_pool.py` | تجمّع اتصالات Radare2 آمن للخيوط بحجم قابل للتكوين |
| `r2_helpers.py` | تحليل مُنظَّم لمخرجات Radare2 |
| `metrics.py` | أوقات التنفيذ لكل أداة وعدد الاستدعاءات ومعدلات الأخطاء وإحصائيات التخزين المؤقت |
| `memory.py` | مخزن ذاكرة ذكاء اصطناعي غير متزامن يعتمد على SQLite لحفظ نتائج التحليل عبر الجلسات |
| `mitre_mapper.py` | محرك تعيين معرّفات تقنيات MITRE ATT&CK |
| `evidence.py` | نظام تصنيف الأدلة: `OBSERVED`، `INFERRED`، `POSSIBLE` |
| `resilience.py` | أنماط مزخرفات (decorators) لإعادة المحاولة وقاطع الدائرة والمهلة الزمنية |
| `task_queue.py` | طابور مهام خلفية عبر Redis + arq |
| `extension_registry.py` | تسجيل الإضافات وإدارة دورة حياتها |
| `arch_registry.py` | تعيين متعدد المعماريات (x86, x86_64, ARM32, ARM64, MIPS, RISC-V, PPC → بنية/بتات/مسجلات r2) |
| `result_cache.py` | مزخرف تخزين نتائج الأدوات مؤقتًا القائم على SHA256 (`@cache_tool_result`) |
| `analysis_cache.py` | تخزين مؤقت متعدد المستويات لفك الترجمة (L1: Redis، L2: SQLite) |
| `result.py` | نماذج Pydantic `ToolSuccess` / `ToolError` |
| `exceptions.py` | 17 صنف استثناءات مع أكواد أخطاء `RCMCP-E*` |
| `decorators.py` | `@log_execution`، `@track_metrics` |
| `error_handling.py` | مزخرف `@handle_tool_errors` |
| `error_formatting.py` | تنسيق مُنظَّم لاستجابات الأخطاء |
| `execution.py` | تنفيذ آمن للعمليات الفرعية (subprocess) مع مهلة زمنية وحدود للمخرجات |
| `command_spec.py` | مواصفات الأوامر لاستدعاءات العمليات الفرعية |
| `loader.py` | محمّل وحدات الأدوات الديناميكي |
| `plugin.py` | الصنف الأساسي للإضافات |
| `extension.py` | الصنف الأساسي للامتدادات |
| `container.py` | دعم التنفيذ عبر الحاويات/الصندوق الرملي (sandbox) |
| `audit.py` | تسجيل التدقيق |
| `binary_cache.py` | التخزين المؤقت للملفات الثنائية |
| `json_utils.py` | تسلسل JSON عبر orjson (أسرع 3-5 مرات من json القياسية) |
| `logging_config.py` | تسجيل مُنظَّم قائم على Loguru |
| `report_generator.py` | محرك عرض التقارير (Markdown، PDF عبر xhtml2pdf) |
| `resource_manager.py` | إدارة دورة حياة موارد MCP |
| `sast/python_ast_scanner.py` | ماسح ثغرات قائم على Python AST |
| `sast/regex_scanner.py` | ماسح ثغرات C/C++ القائم على التعبيرات النمطية (regex) |
| `sast/rule_manager.py` | تحميل قواعد SAST وإدارتها |
---
## كتالوج الأدوات (120 أداة)
كل أداة تُرجع `ToolResult` مُنظَّمًا — إما `ToolSuccess` مع `data` مُنمَّط أو `ToolError` مع كود خطأ `RCMCP-E*`. الأدوات منظمة في 8 إضافات (plugins).
---
### 🔍 إضافة التحليل الثابت (24 أداة)
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 1 | `run_strings` | `strings` CLI | استخراج سلاسل ASCII/Unicode مع حد أدنى قابل للتكوين للطول |
| 2 | `run_binwalk` | Binwalk | فحص عميق للبرامج الثابتة (firmware) بحثًا عن التوقيعات وأنظمة الملفات المضمّنة |
| 3 | `run_binwalk_extract` | Binwalk | استخراج الملفات المضمّنة التي اكتشفها binwalk |
| 4 | `parse_binary_with_lief` | LIEF | تحليل كامل لرؤوس PE/ELF/Mach-O والأقسام والاستيراد/التصدير وTLS |
| 5 | `detect_packer` | DIE | كشف سريع للحزم/المترجمات |
| 6 | `detect_packer_deep` | DIE (`diec`) | تحليل عميق للحزم/الواقيات عبر Detect It Easy |
| 7 | `run_capa` | CAPA (Mandiant FLARE) | كشف القدرات — "تشفير البيانات"، "إنشاء الثبات (persistence)"، إلخ. |
| 8 | `run_capa_quick` | CAPA | فحص سريع للقدرات باستخدام مجموعة فرعية من القواعد |
| 9 | `generate_signature` | Radare2 | توليد توقيعات ثنائية لأغراض التحديد |
| 10 | `generate_yara_rule` | Radare2 + YARA | توليد قواعد كشف YARA من الأنماط الثنائية |
| 11 | `generate_advanced_yara_rule` | Radare2 + YARA | قواعد YARA متقدمة مع مؤشرات سلوكية |
| 12 | `scan_for_versions` | LIEF + strings | فحص الثنائي بحثًا عن سلاسل الإصدارات المضمّنة |
| 13 | `extract_rtti_info` | Radare2 | استخراج RTTI الخاصة بـ C++ (معلومات الأنواع في زمن التشغيل) |
| 14 | `diff_binaries` | Radare2 | مقارنة دلالية (diff) بين نسختين من ملف ثنائي |
| 15 | `analyze_variant_changes` | Radare2 | تحليل التغييرات بين الأشكال المختلفة للثنائي |
| 16 | `match_libraries` | Radare2 | تحديد المكتبات المرتبطة بشكل ثابت عبر بصمة الدوال |
| 17 | `patch_diff_1day` | Radare2 + heuristics | تحليل آلي لفروقات التصحيحات (patch diff) لأبحاث ثغرات اليوم الواحد (1-day) |
| 18 | `analyze_patch_diff_auto` | Radare2 + inference | استنتاج آلي لثغرات التصحيحات |
| 19 | `emulate_binary` | Radare2 ESIL | محاكاة الكود مع تتبع المسجلات/الذاكرة |
| 20 | `generate_fuzzing_harness` | Qiling + AFL++ | توليد حزام تشويش (fuzzing harness) يستهدف دالة محددة |
| 21 | `run_fuzzing_campaign` | AFL++ | تشغيل حملة تشويش (fuzzing) كاملة مع جمع الأعطال |
| 22 | `triage_crash` | GDB | تحليل الأعطال وتقييم قابلية الاستغلال |
| 23 | `verify_path_and_get_args` | angr | تنفيذ رمزي — إثبات إمكانية الوصول إلى المسار وحساب المدخلات الملموسة |
| 24 | `taint_trace` | Radare2 + angr | تحليل تلوث (taint) لتدفق البيانات من المصادر إلى المصارف (sinks) |
---
### 🔐 إضافة تدقيق الكود المصدري (أداة واحدة)
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 25 | `audit_source_code` | AST + Regex | فحص Python AST + فحص C/C++ بالتعبيرات النمطية (regex) بحثًا عن الأنماط الخطيرة |
---
### 🛠️ إضافة الأدوات المساعدة العامة (20 أداة)
**عمليات الملفات (5 أدوات)**
| # | الأداة | الوصف |
|---|---|---|
| 26 | `run_file` | بصمة (fingerprinting) لنوع الملف والمعمارية والمترجم |
| 27 | `copy_to_workspace` | نسخ ملف إلى مساحة عمل التحليل |
| 28 | `create_directory` | إنشاء مجلد في مساحة العمل |
| 29 | `list_workspace` | سرد جميع الملفات في مساحة العمل |
| 30 | `scan_workspace` | فحص كامل لمساحة العمل مع بيانات وصفية للملفات |
**شرح التصحيحات (أداة واحدة)**
| # | الأداة | الوصف |
|---|---|---|
| 31 | `explain_patch` | شرح تصحيح ثنائي بلغة طبيعية |
**المُجمِّع (أداة واحدة)**
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 32 | `assemble_instructions` | Keystone | تجميع التعليمات إلى كود آلة (x86, ARM, MIPS، إلخ.) |
**إدارة ذاكرة الذكاء الاصطناعي (11 أداة)**
تتيح هذه الأدوات للذكاء الاصطناعي حفظ واسترجاع النتائج عبر جلسات التحليل باستخدام قاعدة بيانات SQLite غير متزامنة:
| # | الأداة | الوصف |
|---|---|---|
| 33 | `create_memory_session` | بدء جلسة ذاكرة جديدة لتحليل ما |
| 34 | `store_analysis_finding` | حفظ نتيجة تحليل مع وسوم (tags) |
| 35 | `query_analysis_memories` | البحث في النتائج السابقة حسب استعلام |
| 36 | `get_binary_analysis_context` | استرجاع جميع السياقات لثنائي محدد |
| 37 | `tag_analysis_session` | إضافة وسوم إلى جلسة لتنظيمها |
| 38 | `search_memories_by_tag` | العثور على جلسات/نتائج حسب الوسم |
| 39 | `delete_analysis_session` | إزالة جلسة ونتائجها |
| 40 | `cleanup_expired_sessions` | إزالة الجلسات الأقدم من حد معين |
| 41 | `list_analysis_sessions` | سرد جميع الجلسات النشطة |
| 42 | `export_memory_store` | تصدير جميع الذكريات إلى صيغة قابلة للنقل |
| 43 | `import_memory_store` | استيراد الذكريات من ملف تصدير |
**مراقبة الخادم (أداتان)**
| # | الأداة | الوصف |
|---|---|---|
| 44 | `get_server_health` | مدة التشغيل (uptime)، استخدام الذاكرة، الأدوات المحمّلة، إصدار Python |
| 45 | `get_tool_metrics` | عدد الاستدعاءات لكل أداة، متوسط أوقات التنفيذ، معدلات الأخطاء، إصابات/أخطاء التخزين المؤقت (cache hit/miss) |
---
### ⚙️ إضافة Radare2 وr2ghidra (30 أداة)
تستخدم جميع أدوات Radare2 تجمّع اتصالات آمنًا للخيوط (`r2_pool.py`) يدير جلسات r2pipe تلقائيًا.
| # | الأداة | الوصف |
|---|---|---|
| 46 | `Radare2_open_file` | فتح ملف ثنائي في Radare2 |
| 47 | `Radare2_close_file` | إغلاق جلسة Radare2 |
| 48 | `Radare2_list_open_files` | سرد الملفات المفتوحة حاليًا |
| 49 | `Radare2_analyze_binary` | تشغيل تحليل تلقائي كامل (`aaa`) |
| 50 | `Radare2_list_functions` | سرد جميع الدوال المكتشفة |
| 51 | `Radare2_disassemble_function` | فك تجميع دالة محددة |
| 52 | `Radare2_disassemble_address` | فك التجميع عند عنوان محدد |
| 53 | `Radare2_decompile_function` | فك الترجمة عبر r2ghidra (محرك Ghidra مدمج في r2، دون الحاجة إلى JVM) |
| 54 | `Radare2_list_exports` | سرد الرموز المُصدَّرة |
| 55 | `Radare2_list_imports` | سرد الدوال المستوردة |
| 56 | `Radare2_list_sections` | سرد أقسام الثنائي مع الإنتروبيا (entropy) |
| 57 | `Radare2_list_strings` | سرد السلاسل الموجودة في الثنائي |
| 58 | `Radare2_find_cross_references` | تتبع استدعاءات الدوال ومراجع البيانات |
| 59 | `Radare2_search_bytes` | البحث عن أنماط بايت في الثنائي |
| 60 | `Radare2_get_binary_info` | الحصول على البيانات الوصفية للثنائي (المعمارية، الصيغة، ترتيب البايتات) |
| 61 | `Radare2_execute_command` | تنفيذ أمر Radare2 خام |
| 62 | `Radare2_esil_emulate` | محاكاة ESIL عند عنوان محدد |
| 63 | `Radare2_get_hexdump` | تفريغ سداسي عشر (hex dump) عند عنوان افتراضي |
| 64 | `Radare2_get_cfg_data` | استخراج بيانات مخطط تدفق التحكم (CFG) |
| 65 | `Radare2_generate_cfg_png` | توليد مخطط CFG كصورة PNG |
| 66 | `Radare2_generate_callgraph` | توليد مخطط استدعاءات الدوال |
| 67 | `Radare2_recover_structures` | استعادة تلقائية لهياكل C وحفظها في قاعدة بيانات التعلّيقات (annotations) |
| 68 | `Radare2_decompile_with_r2ghidra` | فك ترجمة C عالي الجودة مع تخزين مؤقت |
| 69 | `Radare2_annotate_binary` | إضافة تعلّيقات إلى الثنائي |
| 70 | `Radare2_get_annotations` | استرجاع التعلّيقات |
| 71 | `Radare2_export_annotations` | تصدير التعلّيقات إلى ملف |
| 72 | `Radare2_import_annotations` | استيراد التعلّيقات من ملف |
| 73 | `Radare2_detect_crypto_constants` | كشف الثوابت التشفيرية (مثل AES S-box، إلخ.) |
| 74 | `Radare2_find_gadgets` | العثور على أدوات (gadgets) ROP/JOP |
| 75 | `Radare2_calculate_entropy` | حساب الإنتروبيا لكل قسم |
---
### 🦠 إضافة تحليل البرمجيات الخبيثة (9 أدوات)
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 76 | `dormant_detector` | Radare2 + heuristics | العثور على الأبواب الخلفية المخفية والدوال اليتيمة والقنابل الزمنية والقنابل المنطقية |
| 77 | `adaptive_vaccine` | YARA + Radare2 | توليد قواعد كشف YARA + تصحيحات ثنائية لتحييد التهديدات |
| 78 | `vulnerability_hunter` | Radare2 + analysis | كشف أنماط API الخطيرة (strcpy, sprintf) وسلاسل أدوات ROP |
| 79 | `extract_iocs` | Regex + LIEF | استخراج عناوين IP وروابط URL والنطاقات والتجزئات (hashes) ومفاتيح التسجيل وعناوين العملات المشفرة |
| 80 | `run_yara` | YARA | الفحص باستخدام ملفات قواعد مخصصة ومجموعات قواعد مدمجة |
| 81 | `generate_poc_exploit` | pwntools | توليد كود استغلال لإثبات المفهوم (PoC) |
| 82 | `build_rop_chain` | ROPgadget + pwntools | بناء آلي لسلاسل ROP |
| 83 | `autonomous_vuln_hunt` | Radare2 + angr | خط أنابيب صيد ثغرات مستقل (autonomous) |
| 84 | `analyze_heap_exploit` | Radare2 + heuristics | تحليل استغلال الكومة (UAF، double-free، overflow) |
---
### 🕵️ إضافة التحقيق الرقمي (22 أداة)
**تحليل الذاكرة الجنائي (6 أدوات)**
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 85 | `memory_analyze` | Volatility3 | تحليل كامل لتفريغ الذاكرة |
| 86 | `memory_list_processes` | Volatility3 | سرد العمليات الجارية من تفريغ الذاكرة |
| 87 | `memory_detect_injections` | Volatility3 | كشف حقن الكود في ذاكرة العمليات |
| 88 | `memory_extract_strings` | Volatility3 | استخراج السلاسل من ذاكرة العمليات |
| 89 | `memory_dump_module` | Volatility3 | تفريغ وحدة محمّلة من الذاكرة |
| 90 | `memory_list_symbols` | Volatility3 | سرد الرموز من الذاكرة |
**تحليل القرص الجنائي (6 أدوات)**
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 91 | `disk_list_partition` | Sleuth Kit | سرد أقسام القرص |
| 92 | `disk_list_files` | Sleuth Kit | سرد الملفات في صورة قرص |
| 93 | `disk_recover_deleted` | Sleuth Kit | استعادة الملفات المحذوفة |
| 94 | `disk_analyze_mft` | Sleuth Kit | تحليل جدول الملفات الرئيسي (MFT) لنظام NTFS |
| 95 | `disk_extract_file` | Sleuth Kit | استخراج ملف من صورة القرص |
| 96 | `disk_hash_verify` | Sleuth Kit | التحقق من سلامة الملف عبر التجزئة (hash) |
**تحليل الشبكة الجنائي (5 أدوات)**
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 97 | `pcap_analyze` | Scapy | تحليل PCAP: تفصيل البروتوكولات والشذوذ |
| 98 | `pcap_list_connections` | Scapy | سرد جميع اتصالات الشبكة |
| 99 | `pcap_extract_dns` | Scapy | استخراج استعلامات واستجابات DNS |
| 100 | `pcap_extract_c2` | Scapy | تحديد اتصالات القيادة والتحكم C2 المحتملة |
| 101 | `pcap_reconstruct_stream` | Scapy | إعادة بناء تدفقات TCP |
**تحليل القطع الأثرية (5 أدوات)**
| # | الأداة | الواجهة الخلفية | الوصف |
|---|---|---|---|
| 102 | `artifact_collect` | Custom parsers | جمع سجل التصفح وخلايا التسجيل (registry hives) وسجلات الأحداث وبيانات prefetch |
| 103 | `artifact_correlate_ioc` | Custom parsers | ربط القطع الأثرية بمؤشرات IOC معروفة |
| 104 | `artifact_generate_yara` | YARA | توليد قواعد YARA من أنماط القطع الأثرية |
| 105 | `artifact_timeline` | Custom parsers | بناء خط زمني من مصادر قطع أثرية متعددة |
| 106 | `artifact_report` | Custom parsers | توليد تقرير تحليل القطع الأثرية |
---
### 📝 إضافة توليد التقارير (14 أداة)
| # | الأداة | الوصف |
|---|---|---|
| 107 | `get_system_time` | الحصول على الطابع الزمني للخادم (يمنع الذكاء الاصطناعي من اختلاق التواريخ) |
| 108 | `set_timezone` | ضبط المنطقة الزمنية لإعداد التقارير |
| 109 | `get_timezone_info` | الحصول على معلومات المنطقة الزمنية الحالية |
| 110 | `start_report_session` | بدء جلسة تحليل مؤقّتة بمعرّف فريد |
| 111 | `end_report_session` | إنهاء الجلسة: حساب المدة وقفل قوائم IOC/ATT&CK |
| 112 | `get_report_session_status` | التحقق من حالة الجلسة |
| 113 | `list_report_sessions` | سرد جميع الجلسات النشطة/المكتملة |
| 114 | `add_ioc` | جمع مؤشرات IOC ووسمها أثناء جلسة مباشرة |
| 115 | `add_analysis_note` | إضافة ملاحظات مصنّفة (نتيجة، تحذير، سلوك) |
| 116 | `add_mitre_technique` | توثيق معرّفات تقنيات MITRE ATT&CK |
| 117 | `set_severity` | ضبط درجة خطورة الجلسة (منخفضة/متوسطة/عالية/حرجة) |
| 118 | `create_analysis_report` | عرض التقرير في 4 أوضاع: `full_analysis`، `quick_triage`، `ioc_summary`، `executive_brief` |
| 119 | `generate_vex_report` | توليد تقرير VEX (Vulnerability Exploitability eXchange) |
| 120 | `generate_sigma_rule` | توليد قواعد كشف SIGMA |
---
## موجّهات التحليل الموجَّهة (22 وضعًا)
الموجّهات هي مسارات عمل تحليلية جاهزة مسبقًا تُهيئ الذكاء الاصطناعي بشخصية منظمة، وتسلسلات استخدام للأدوات خطوة بخطوة، وقواعد لتصنيف الأدلة. يمكنك تفعيلها بالإشارة إلى اسم الموجّه في عميل الذكاء الاصطناعي لديك.
### تحليل البرمجيات الخبيثة (9 موجّهات)
| الموجّه | حالة الاستخدام |
|---|---|
| `full_analysis_mode` | تحليل شامل من 6 مراحل: الفرز (triage) → فك التجميع → السلوك → الشبكة → الثبات → التقرير |
| `malware_analysis_mode` | تحليل مركّز للبرمجيات الخبيثة مع تصنيف التهديدات |
| `basic_analysis_mode` | فرز سريع للتقييم الأولي وإصدار أحكام سريعة |
| `apt_hunting_mode` | صيد خاص بـ APT: الحركة الجانبية والثبات وسرقة البيانات (exfiltration) |
| `malware_defense_mode` | موجّه للدفاع: توليد قواعد كشف وإجراءات تخفيف |
| `unpacking_mode` | تحليل وتجاوز التغليف/التمويه (Themida, VMProtect, UPX) |
| `c2_extraction_mode` | استخراج وتحليل البنية التحتية لاتصالات C2 |
| `ransomware_triage_mode` | فرز خاص ببرامج الفدية: تحليل التشفير وتقييم استعادة المفاتيح |
| `code_similarity_mode` | مقارنة الثنائيات لقياس تشابه الكود والسلالة المشتركة |
### البحث الأمني (6 موجّهات)
| الموجّه | حالة الاستخدام |
|---|---|
| `vulnerability_research_mode` | صيد الثغرات: تجاوزات المخزن المؤقت وUAF وحقن الأوامر |
| `crypto_analysis_mode` | تحليل التطبيقات التشفيرية وكشف نقاط الضعف |
| `firmware_analysis_mode` | البرامج الثابتة لإنترنت الأشياء/الأنظمة المدمجة: استخراج binwalk وسلاسل UART وبيانات اعتماد مبرمجة (hardcoded) |
| `patch_analysis_mode` | تحليل التصحيحات الأمنية واختبارات الانحدار (regression) |
| `source_code_audit_mode` | تدقيق أمني للكود المصدري (Python, C, C++) |
| `autonomous_vuln_hunt_mode` | خط أنابيب صيد ثغرات مستقل |
### أبحاث CVE وتطوير الاستغلالات (5 موجّهات)
| الموجّه | حالة الاستخدام |
|---|---|
| `taint_analysis_mode` | تحليل تلوث (taint) لتدفق البيانات: اكتشاف آلي لمسارات المصدر→المصرف |
| `heap_exploit_mode` | تحليل استغلال الكومة وتوليد إثبات المفهوم (PoC) |
| `fuzzing_mode` | إعداد حملة التشويش (fuzzing) وفرز الأعطال |
| `patch_diff_auto_mode` | مقارنة تصحيحات آلية (patch diff) لأبحاث ثغرات اليوم الواحد |
| `cve_discovery_pipeline_mode` | خط أنابيب كامل لاكتشاف CVE: من مقارنة التصحيحات إلى استغلال عامل |
### أخرى (موجّهان)
| الموجّه | حالة الاستخدام |
|---|---|
| `game_analysis_mode` | تحليل عملاء الألعاب: كشف أنظمة مكافحة الغش، الهندسة العكسية للبروتوكولات، فحص الذاكرة |
| `report_generation_mode` | مسار عمل جلسة منظم مع تعيين تقنيات MITRE ATT&CK |
> **كيف تعمل الموجّهات:** كل موجّه يُهيئ الذكاء الاصطناعي بشخصية تحليلية منظمة. ويتضمن نقاط توقف للاستدلال بسلسلة الأفكار (Chain-of-Thought) حيث يجب على الذكاء الاصطناعي التوقف والتقييم قبل المتابعة، وقواعد لتصنيف الأدلة تمنعه من عرض التكهنات كحقائق. يجب وسم كل نتيجة بـ `OBSERVED` (تم التحقق منها مباشرة)، أو `INFERRED` (مشتقة منطقيًا من التحليل الثابت)، أو `POSSIBLE` (تتطلب مزيدًا من التحقق).
---
## موارد MCP (11 URI)
الموارد هي نقاط وصول بيانات للقراءة فقط يمكن لعملاء الذكاء الاصطناعي الوصول إليها عبر قوالب URI. وهي تُكمّل الأدوات من خلال توفير بيانات منظمة دون الحاجة إلى استدعاءات أدوات صريحة.
### الموارد الثابتة
| URI | الوصف |
|---|---|
| `reversecore://guide` | دليل استخدام الأدوات مع قواعد مسارات الملفات وأفضل الممارسات |
| `reversecore://guide/structures` | دليل تقني لاستعادة الهياكل وتحليل المراجع المتقاطعة |
| `reversecore://tools` | توثيق كامل لجميع الأدوات الـ 120 المسجلة |
| `reversecore://logs` | سجلات التطبيق (آخر 100 سطر) |
### الموارد الديناميكية (نظام ملفات افتراضي لكل ثنائي)
تُحلّ هذه العناوين URI لكل ثنائي وتستدعي أدوات التحليل المقابلة عند الطلب:
| قالب URI | الوصف |
|---|---|
| `reversecore://{filename}/strings` | استخراج جميع السلاسل من ثنائي |
| `reversecore://{filename}/iocs` | استخراج مؤشرات IOC (عناوين IP وروابط URL ورسائل البريد الإلكتروني والتجزئات) |
| `reversecore://{filename}/func/{address}/code` | كود C شبه مترجم (pseudo-C) لدالة |
| `reversecore://{filename}/func/{address}/asm` | فك تجميع لدالة |
| `reversecore://{filename}/func/{address}/cfg` | مخطط تدفق التحكم بصيغة Mermaid |
| `reversecore://{filename}/functions` | قائمة بجميع الدوال في الثنائي |
| `reversecore://{filename}/dormant_detector` | نتائج تحليل الكاشف الخامل (dormant detector) |
---
## بدء سريع
### الخيار 1 — PyPI (الأبسط)```bash
pip install reversecore-mcp
reversecore-mcp
المتطلبات الأساسية: يجب تثبيت Radare2 على نظامك (
r2 --version). يتم تثبيت YARA تلقائيًا عبرyara-python.
جميع محركات التحليل (Radare2, r2ghidra, YARA, Binwalk, Sleuth Kit, GDB، إلخ) تأتي مثبتة مسبقًا:```bash
docker run -i --rm
-v /path/to/your/samples:/app/workspace
-e REVERSECORE_WORKSPACE=/app/workspace
-e MCP_TRANSPORT=stdio
ghcr.io/sjkim1127/reversecore_mcp:latest
### الخيار 3 — البناء من المصدر (Docker Compose)```bash
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
./scripts/run-docker.sh # auto-detects Intel / Apple Silicon
أو يدويًا:```bash docker compose --profile x86 up -d # Intel/AMD docker compose --profile arm64 up -d # Apple Silicon (M1/M2/M3)
### الخيار 4 — Python (التطوير المحلي)```bash
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python -m reversecore_mcp.server
المتطلبات الأساسية للوضع المحلي: يجب تثبيت Radare2 على نظامك (
r2 --version). يتم تثبيت الواجهات الخلفية للأدوات الفردية (YARA، LIEF، Capstone، إلخ) عبر pip. لدعم التحليل الجنائي الكامل، ستحتاج أيضًا إلى Volatility3 وScapy وSleuth Kit.
أضف إعدادات الخادم إلى إعدادات عميل IDE لديك (على سبيل المثال، ~/.cursor/mcp.json أو claude_desktop_config.json).
إذا كانت الحاوية تعمل عبر Docker Compose، فإن هذا الوضع يمرر stdio مباشرة إلى الحاوية قيد التشغيل. لا تأخير في بدء التشغيل، وذاكرة دائمة، وتوفر كامل للأدوات.```json { "mcpServers": { "Reversecore_MCP": { "command": "docker", "args": [ "exec", "-i", "-e", "MCP_TRANSPORT=stdio", "reversecore-mcp-arm64", "python", "-m", "reversecore_mcp.server" ] } } }
> استبدل `reversecore-mcp-arm64` بـ `reversecore-mcp` إذا كنت على Intel/AMD.
---
### 🌐 الخيار ٢: وضع SSE HTTP
للبث عبر الشبكة (Server-Sent Events):```json
{
"mcpServers": {
"Reversecore_MCP": {
"url": "http://localhost:8000/mcp/sse"
}
}
}
يشغّل حاوية جديدة ومعزولة لكل جلسة:
⚠️ مهم — مسارات الملفات داخل Docker
يتم تركيب مجلدك المحلي على
/app/workspaceداخل الحاوية. ارجع دائمًا إلى الملفات باسم الملف فقط، وليس بالمسار الكامل المحلي لديك.
❌ خاطئ ✅ صحيح r2_decompile("/Users/john/samples/mal.exe")r2_decompile("mal.exe")
يمكن توفير جميع الإعدادات عبر متغيرات البيئة أو ملف .env (انظر .env.example). تُدار الإعدادات عبر Pydantic BaseSettings مع البادئة REVERSECORE_.
| المتغير | الافتراضي | الوصف |
|---|---|---|
REVERSECORE_PLUGIN_DIRS | "" | أدلة مفصولة بفواصل لفحص ملحقات التوسعة |
REVERSECORE_SAST_RULES_PATH | "" | مسار ملف قواعد SAST المخصص بصيغة YAML |
يُطبَّق الأمان كدفاع متعدد الطبقات، مع حمايات على مستويات متعددة:
| التحكم | التنفيذ |
|---|---|
| تنفيذ غير جذري | يعمل كمستخدم appuser (UID 1000) مع صلاحيات دنيا |
| حدود الموارد | يفرض Docker Compose حدودًا لوحدة المعالجة المركزية (2.0) والذاكرة (4 جيجابايت) |
| عزل الحماية | عزل اختياري قائم على الحاويات لأدوات التحليل الديناميكي |
جميع فئات الاستثناءات البالغ عددها 17 تحمل رموز أخطاء RCMCP-E* للمعالجة البرمجية. انظر معالجة الأخطاء للتسلسل الهرمي الكامل.
git clone https://github.com/sjkim1127/Reversecore_MCP.git cd Reversecore_MCP python -m venv venv && source venv/bin/activate pip install -r requirements.txt pip install -r requirements-dev.txt pre-commit install # installs Ruff, Bandit, Gitleaks hooks
### الاختبار```bash
# Full test suite with coverage report
pytest tests/ -v
# Unit tests only (fast, no external dependencies)
pytest tests/unit/ -v
# Integration tests (requires Docker)
pytest tests/integration/ -v
# Run with coverage threshold enforcement
pytest tests/unit/ --cov=reversecore_mcp --cov-fail-under=80
# Run a specific test
pytest tests/unit/test_cli_tools.py::TestRunFile::test_success -v
# Security boundary tests
pytest tests/ -m security -v
# Benchmarks
pytest tests/ -m benchmark -v
حالة الاختبارات:
pytest-asyncioعلامات الاختبار:
ruff check reversecore_mcp/ # Lint (E, W, F, I, B, C4, UP rules) ruff format reversecore_mcp/ # Format mypy reversecore_mcp/ # Type check (0 errors across 108 files) bandit -r reversecore_mcp/ # Security scan (all severities) pip-audit # Dependency CVE scan
### خطافات Pre-commit
الخطافات التالية تعمل تلقائيًا مع كل commit:
1. **Ruff** — فحص lint مع إصلاح تلقائي + التحقق من التنسيق
2. **trailing-whitespace** — إزالة المسافات البيضاء في نهاية الأسطر
3. **end-of-file-fixer** — ضمان انتهاء الملفات بسطر جديد
4. **check-yaml / check-json** — التحقق من صيغة YAML/JSON
5. **check-added-large-files** — منع الملفات الأكبر من 1 ميغابايت
6. **check-merge-conflict** — اكتشاف علامات تعارض الدمج غير المحلولة
7. **detect-private-key** — منع ارتكاب مفاتيح خاصة عن طريق الخطأ
8. **Bandit** — فحص أمان بايثون
---
## خط أنابيب CI/CD
كل push إلى `main` يطلق 11 وظيفة في خط الأنابيب. يجب أن تنجح جميعها قبل النشر.```
Lint & Security Gate Unit Tests (Python Matrix)
├─ Gitleaks (secret scan) ├─ pytest 3.10 --cov-fail-under=80
├─ Hadolint (Dockerfile lint) ├─ pytest 3.11 --cov-fail-under=80
├─ Ruff check + format └─ pytest 3.12 --cov-fail-under=80
├─ Mypy type check (108 files)
├─ Bandit (all severities) Wheel Smoke Test
├─ pip-audit (no CVEs) └─ Build wheel → install in /tmp
└─ Security boundary tests → verify plugin discovery
→ assert __file__ under sys.prefix
CodeQL Analysis
└─ Python SAST Docker Verification
├─ Build reversecore-mcp:ci
Exploit Safety Gate ├─ Trivy container scan
├─ Bandit on POC templates ├─ Image size check (< 5 GB)
├─ Hypothesis DAST fuzzing ├─ CLI tool verification
├─ Performance benchmarks ├─ Integration tests in container
└─ Container isolation test └─ E2E tool invocation
In-Container Smoke Test Build Base Image (amd64 + arm64)
├─ Copy test ELF into container ├─ Compile YARA 4.3.1
└─ Run scripts/smoke_test.py ├─ Compile Radare2 6.0.4
├─ Compile r2ghidra
Deploy (amd64 + arm64) └─ Push to GHCR
├─ Build app image
├─ Push to GHCR Merge Manifests
└─ Trivy rescan on published └─ Multi-arch manifest → :latest
سياسة عدم الالتفاف: لا يتم أبدًا حل إخفاقات CI/CD عن طريق تعديل إعدادات خط الأنابيب. تُصلح الأسباب الجذرية دائمًا مباشرةً في الكود المصدري أو التبعيات.
يستخدم بناء Docker نهجًا من طبقتين للحفاظ على أوقات البناء مقبولة:
Dockerfile.base)بناء متعدد المراحل يقوم بتجميع جميع التبعيات بطيئة البناء ونادرة التغيير من المصدر:``` compiler-toolchain (python:3.12-slim-bookworm + build tools) ├── compiler-yara (YARA 4.3.1 from source) [parallel] ├── compiler-r2 (Radare2 6.0.4 from source) [parallel] │ └── compiler-r2ghidra (r2ghidra plugin) [sequential] └── compiler-pip (pip install into /opt/venv) [parallel]
base (final runtime: python:3.12-slim-bookworm) ├── Runtime packages: file, binutils, gdb, binwalk, graphviz, nasm, sleuthkit ├── /opt/yara (compiled YARA) ├── /opt/radare2 (compiled r2 + r2ghidra) ├── /opt/venv (Python packages) └── Non-root user: appuser (UID 1000)
لا يُعاد بناء هذه الصورة إلا عند تغيّر إصدارات الأدوات. وقت البناء: ~12 دقيقة.
### الطبقة 2: صورة التطبيق (`Dockerfile`)
ترث هذه الصورة من الصورة الأساسية وتنسخ كود التطبيق:```
FROM base image
├── COPY reversecore_mcp/ (application code)
├── COPY scripts/ (smoke test, benchmarks)
├── pip install any new requirements
├── Security package upgrades
└── CMD ["python", "-m", "reversecore_mcp.server"]
وقت البناء: ~60 ثانية.
ثلاث خدمات مع ملفات تعريف خاصة بالبنية:
حدود الموارد: 2.0 نواة معالج، 4 جيجابايت ذاكرة لكل حاوية.
reversecore_mcp/ ├── core/ # Infrastructure layer (37 modules) │ ├── config.py # Pydantic BaseSettings (34+ env vars) │ ├── exceptions.py # Exception hierarchy (17 classes, RCMCP-E* codes) │ ├── security.py # Input sanitization & command arg validation │ ├── validators.py # Path validators (TOCTOU-hardened, symlink-safe) │ ├── r2_pool.py # Thread-safe Radare2 connection pool │ ├── r2_helpers.py # Structured Radare2 output parsing │ ├── metrics.py # Per-tool timing, counts, error rates, cache stats │ ├── decorators.py # @log_execution, @track_metrics │ ├── error_handling.py # @handle_tool_errors decorator │ ├── error_formatting.py # Structured error formatting │ ├── execution.py # Safe subprocess with timeout/output limits │ ├── command_spec.py # Command specifications │ ├── memory.py # Async SQLite AI memory store │ ├── mitre_mapper.py # MITRE ATT&CK mapping engine │ ├── evidence.py # Evidence classification (OBSERVED/INFERRED/POSSIBLE) │ ├── resilience.py # Retry, circuit-breaker, timeout patterns │ ├── task_queue.py # Background task queue (Redis + arq) │ ├── extension_registry.py # Plugin registration system │ ├── arch_registry.py # Multi-arch mapping (x86/ARM/MIPS/RISC-V/PPC) │ ├── result_cache.py # SHA256-based tool result caching │ ├── analysis_cache.py # Multi-level decompilation cache (Redis + SQLite) │ ├── result.py # ToolSuccess / ToolError Pydantic models │ ├── loader.py # Dynamic tool module loader │ ├── plugin.py # Plugin base class │ ├── extension.py # Extension base class │ ├── container.py # Container/sandbox execution │ ├── audit.py # Audit logging │ ├── binary_cache.py # Binary file caching │ ├── json_utils.py # orjson-backed JSON (3-5x faster) │ ├── logging_config.py # Loguru logging configuration │ ├── report_generator.py # Report rendering (Markdown, PDF) │ ├── resource_manager.py # MCP resource lifecycle │ └── sast/ # Source code scanners │ ├── python_ast_scanner.py # Python AST vulnerability scanner │ ├── regex_scanner.py # C/C++ regex vulnerability scanner │ ├── rule_manager.py # SAST rule loader │ └── default_rules.yaml # Default scanning rules │ ├── tools/ # MCP tool implementations (120 tools) │ ├── analysis/ # Static analysis (24 tools) │ │ ├── static_analysis.py # file, strings, binwalk │ │ ├── lief_tools.py # LIEF binary parser │ │ ├── capa_tools.py # CAPA capability detection │ │ ├── die_tools.py # Detect It Easy packer detection │ │ ├── diff_tools.py # Binary diffing │ │ ├── emulation_tools.py # ESIL emulation │ │ ├── fuzz_tools.py # Fuzzing harness generator │ │ ├── fuzzing_campaign.py # Full fuzzing campaign runner │ │ ├── symbolic_analysis.py # angr symbolic execution │ │ ├── signature_tools.py # Library signature matching │ │ ├── source_auditor.py # SAST (Python + C/C++) │ │ ├── crash_triage.py # GDB crash triage │ │ ├── taint_analysis.py # Source→sink taint tracing │ │ ├── advanced_yara.py # Advanced YARA generation │ │ ├── patch_vuln_inference.py # Patch vulnerability inference │ │ └── cache_tools.py # Analysis cache management │ │ │ ├── radare2/ # Disassembly & decompilation (30 tools) │ │ ├── radare2_mcp_tools.py # Core Radare2 tool set │ │ ├── r2ghidra_tools.py # r2ghidra decompiler (cached) │ │ ├── r2_analysis.py # Deep function analysis │ │ ├── r2_db.py # SQLite annotation + cache DB │ │ ├── r2_esil_simulator.py # Multi-arch ESIL simulator │ │ └── r2_session.py # Stateful analysis sessions │ │ │ ├── malware/ # Threat detection (9 tools) │ │ ├── dormant_detector.py # Backdoor/logic bomb detection │ │ ├── ioc_tools.py # IOC extraction │ │ ├── yara_tools.py # YARA scanning │ │ ├── adaptive_vaccine.py # YARA rule + patch generation │ │ ├── vulnerability_hunter.py # Dangerous API detection │ │ ├── autonomous_hunter.py # Autonomous vuln hunting pipeline │ │ ├── heap_exploit.py # Heap exploitation analysis │ │ ├── poc_generator.py # PoC exploit generation │ │ └── rop_builder.py # ROP chain construction │ │ │ ├── forensics/ # Digital forensics (22 tools) │ │ ├── memory.py # Volatility3 memory forensics │ │ ├── network.py # Scapy PCAP analysis │ │ ├── disk.py # Sleuth Kit disk forensics │ │ └── artifact.py # Browser/registry/event log analysis │ │ │ ├── report/ # Report generation (14 tools) │ │ ├── report_mcp_tools.py # MCP-registered report tools │ │ ├── report_tools.py # Report rendering logic │ │ ├── session.py # Session state management │ │ ├── converter.py # Format conversion (Markdown → PDF/HTML) │ │ ├── email.py # SMTP report delivery │ │ ├── sigma_generator.py # SIGMA rule generation │ │ └── vex_generator.py # VEX report generation │ │ │ └── common/ # Shared utilities (20 tools) │ ├── file_operations.py # File ops, workspace management │ ├── server_tools.py # Server health, tool metrics │ ├── memory_tools.py # AI memory management (11 tools) │ ├── patch_explainer.py # Binary patch explanation │ └── assembler.py # Keystone assembler │ ├── prompts/ # AI reasoning prompts (22 modes) │ ├── malware.py # 9 malware analysis prompts │ ├── security.py # 6 security research prompts │ ├── cve_research.py # 5 CVE/exploit research prompts │ ├── game.py # Game client analysis prompt │ ├── report.py # Report generation prompt │ ├── server_health.py # Server inspection prompts │ └── common.py # Shared constants (DOCKER_PATH_RULE, LANGUAGE_RULE) │ ├── dashboard/ # Web dashboard (FastAPI + HTMX) │ ├── templates/ # Jinja2 templates with HTMX fragments │ └── static/ # htmx.min.js (local, CSP-compliant) │ ├── web/ # HTTP transport layer │ ├── auth.py # API key authentication middleware │ ├── middleware.py # Security headers, loopback restriction │ └── endpoints.py # /health, file upload, dashboard routes │ ├── resources.py # 11 MCP resources (static + dynamic per-binary) └── server.py # FastMCP server entry point
**المجلدات الأخرى:**```
tests/
├── unit/ # 1,957 unit tests
├── integration/ # Docker-based integration tests
├── fixtures/ # Test binaries, YARA rules, sample data
└── conftest.py # Shared pytest fixtures
scripts/
├── smoke_test.py # Multi-layer in-container smoke test
├── check_release_metadata.py # Version consistency validation
├── fetch_test_binaries.py # Download test fixtures
├── run-docker.sh # Auto-detect architecture and start
└── ... # Benchmarks, analysis scripts
docs/
├── getting-started/ # Installation guide
├── development/ # Architecture, contributing, testing guides
├── api/ # Tool and module reference
└── user-guide/ # Analysis workflows
جميع الاستثناءات المخصصة ترث من ReversecoreError وتحمل رموز خطأ مهيكلة:
يمكن لعملاء الذكاء الاصطناعي استخدام حقل error_code للتعامل مع حالات الفشل برمجيًا وتحديد ما إذا كانوا سيعيدون المحاولة، أو يجربون أداة بديلة، أو يبلغون المستخدم بالخطأ.
اتبع هذا النمط لإضافة أداة MCP جديدة:```python
from reversecore_mcp.core.decorators import log_execution from reversecore_mcp.core.result import ToolResult, success, failure from reversecore_mcp.core.security import validate_file_path
@log_execution() async def my_analysis_tool( file_path: str, option: str | None = None, ) -> ToolResult: """Analyze a binary for X.
Args:
file_path: Path to the binary file (relative to workspace).
option: Optional analysis option.
Returns:
ToolResult with status='success' and structured content.
"""
try:
safe_path = validate_file_path(file_path)
result = await perform_analysis(safe_path)
return success({"result": result})
except Exception as e:
return failure(
error_code="RCMCP-E100",
message=str(e),
hint="Check that the file exists and is a valid binary.",
)
ثم سجّله في ملف `__init__.py` الخاص بالمكوّن الإضافي المناسب وأضف اختبارات في `tests/unit/`.
---
## المساهمة
1. انسخ المستودع (Fork)
2. أنشئ فرع ميزة: `git checkout -b feat/my-feature`
3. اكتب اختبارات إلى جانب الكود الخاص بك — يجب ألا تقل التغطية عن 80%
4. تأكد من نجاح جميع الفحوصات: `pytest`, `ruff check`, `mypy`, `bandit`
5. افتح طلب سحب (Pull Request) مع وصف واضح
يُرجى قراءة [دليل المساهمة](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/development/contributing.md) لمعايير الكود واصطلاحات التعليقات التوثيقية (بنمط Google) وقائمة فحص طلب السحب.
---
## التوثيق
| المستند | الوصف |
|---|---|
| [دليل التثبيت](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/getting-started/installation.md) | إعداد مفصّل لجميع البيئات |
| [دليل البنية](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/development/architecture.md) | تصميم النظام وتفاصيل المكونات |
| [دليل المساهمة](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/development/contributing.md) | معايير الكود والتعليقات التوثيقية وسير عمل طلبات السحب |
| [دليل الاختبار](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/development/testing.md) | أنماط الاختبار والتجهيزات (Fixtures) والتغطية |
| [مرجع واجهة البرمجة](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/api/) | مرجع الأدوات والوحدات |
| [دليل المستخدم](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/docs/user-guide/) | سير عمل التحليل |
---
## أمثلة الاستخدام
### مثال 1: الفحص الأولي للبرمجيات الخبيثة (Malware Triage)```
User: "Analyze this suspicious file sample.exe"
AI calls:
1. run_file("sample.exe") → PE32 executable, x86, MSVC
2. detect_packer("sample.exe") → Not packed
3. extract_iocs("sample.exe") → 3 IPs, 2 URLs, 1 mutex
4. run_capa("sample.exe") → "creates persistence", "encrypts data"
5. dormant_detector("sample.exe") → 2 orphan functions with network calls
6. generate_yara_rule("sample.exe") → Detection rule generated
AI response: "This PE32 binary shows ransomware-like behavior. CAPA detected
encryption and persistence capabilities. I found 2 hidden network functions
that may serve as a backup C2 channel. Here's a YARA rule for detection..."
User: "Find exploitable bugs in this network daemon"
AI activates: taint_analysis_mode
AI calls:
taint_trace("daemon", verify_with_angr=True) → Found 3 source→sink paths: recv() → strcpy() [CWE-120, CONFIRMED by angr] read() → sprintf() [CWE-134, LIKELY] getenv() → system() [CWE-78, POSSIBLE]
vulnerability_hunter("daemon") → 12 dangerous API calls, 4 exploitable patterns
generate_poc_exploit(target="daemon", vuln_type="bof", offset=128) → Python exploit script generated
AI response: "I found a confirmed stack buffer overflow where recv() data flows directly into strcpy() at 0x40123C. angr proved the path is reachable. Here's a working PoC..."
### مثال 3: تحقيق الطب الشرعي الرقمي```
User: "Analyze this memory dump from a compromised server"
AI calls:
1. memory_list_processes("memdump.raw")
→ 47 processes, 2 with suspicious names
2. memory_detect_injections("memdump.raw")
→ Code injection detected in PID 1842 (svchost.exe)
3. memory_extract_strings("memdump.raw", pid=1842)
→ C2 domain strings extracted
4. artifact_correlate_ioc(artifacts={"domains": ["evil-c2.com"]})
→ Matches known APT group IOCs
5. create_analysis_report(template_type="full_analysis")
→ PDF report with timeline and MITRE ATT&CK mapping
User: "Compare the patched and unpatched versions to find what was fixed"
AI activates: patch_diff_auto_mode
AI calls:
diff_binaries("libfoo-1.0.so", "libfoo-1.1.so") → 3 functions changed, 1 new function
patch_diff_1day("libfoo-1.0.so", "libfoo-1.1.so") → Automated analysis: bounds check added at parse_header()
r2_decompile("libfoo-1.0.so", "parse_header") → Decompiled vulnerable version (no bounds check)
r2_decompile("libfoo-1.1.so", "parse_header") → Decompiled patched version (memcpy size limited)
AI response: "The patch adds a bounds check in parse_header() at 0x12340. The old version copies user-controlled length bytes via memcpy without validation, creating a heap buffer overflow (CWE-122)."
---
## دعم تعدّد البنى
تربط وحدة `arch_registry.py` أسماء البنى بمعاملات ضبط Radare2، مما يتيح للأدوات العمل عبر بنى معالجات مختلفة دون إعداد يدوي:
| البنية | المفتاح | بنية r2 | عرض البتات | سجل PC | سجل SP |
|---|---|---|---|---|---|
| إنتل 32-بت | `x86` | `x86` | 32 | `eip` | `esp` |
| إنتل/AMD 64-بت | `x86_64` | `x86` | 64 | `rip` | `rsp` |
| ARM 32-بت / Thumb | `arm32` | `arm` | 16, 32 | `r15` | `r13` |
| ARM 64-بت (AArch64) | `arm64` | `arm` | 64 | `pc` | `sp` |
| MIPS | `mips` | `mips` | 32, 64 | `pc` | `sp` |
| RISC-V | `riscv` | `riscv` | 32, 64 | `pc` | `sp` |
| PowerPC | `ppc` | `ppc` | 32, 64 | `pc` | `r1` |
**يتم حل الأسماء المستعارة تلقائيًا:**
- `amd64` → `x86_64`
- `aarch64` → `arm64`
- `arm` مع `bits=64` → `arm64`
- `arm` مع `bits=16` أو `bits=32` → `arm32`
أدوات مثل `Radare2_esil_emulate` و `assemble_instructions` و `r2_simulate_patch` تستخدم هذا السجل لضبط بيئة التحليل بشكل صحيح لأي ملف ثنائي مستهدف.
---
## نظام التخزين المؤقت للنتائج
طبقتان من التخزين المؤقت تقلّلان الحسابات المكررة:
### التخزين المؤقت لنتائج الأدوات (`result_cache.py`)
يخزّن المُزيِّن `@cache_tool_result` ناتج أي أداة مؤقتًا بناءً على تجزئة SHA256 للملف الثنائي ووسائط الكلمات المفتاحية للأداة:```
Cache key = SHA256( "<tool_name>::{sorted_json_kwargs}" )
الواجهة الخلفية للتخزين: قاعدة بيانات SQLite عبر r2_db.py، يمكن الوصول إليها من خلال أداتي get_cached_result() و set_cached_result().
المقاييس: يتم تتبّع إصابات الذاكرة المؤقتة وإخفاقاتها عبر metrics_collector.record_cache_hit() و record_cache_miss()، وتكون مرئية من خلال أداة get_tool_metrics.
analysis_cache.py)ذاكرة تخزين مؤقت متعددة المستويات مخصّصة لنتائج فك الترجمة (التي تكون مكلفة من ناحية المعالجة الحسابية):
الاستيراد/التصدير: تتيح أداتا export_analysis_cache و import_analysis_cache حفظ حالة الذاكرة المؤقتة إلى/من ملفات rcpack لمشاركتها بين البيئات.
يوفر نظام ذاكرة الذكاء الاصطناعي (memory_tools.py + core/memory.py) تخزينًا دائمًا وقابلًا للاستعلام لنتائج التحليل عبر الجلسات. وهذا يسمح للذكاء الاصطناعي بما يلي:
create_memory_session("analysis of ransomware sample") │ ├── store_analysis_finding("Found AES-256 encryption at 0x401000", tags=["crypto", "ransomware"]) ├── store_analysis_finding("C2 beacon interval: 30 seconds", tags=["c2", "network"]) └── tag_analysis_session(tags=["ransomware", "financial-sector"])
query_analysis_memories("ransomware encryption") → Returns previous findings about ransomware encryption patterns
get_binary_analysis_context("sample.exe") → Returns all findings ever recorded for this binary
**التخزين:** قاعدة بيانات SQLite غير متزامنة في المسار المُعد عبر `MEMORY_DB_PATH` (الافتراضي: `~/.reversecore_mcp/memory.db`).
**قابلية النقل:** استخدم `export_memory_store` و `import_memory_store` لنقل قاعدة بيانات الذاكرة بالكامل بين البيئات.
---
## لوحة التحكم عبر الويب
عند التشغيل في وضع HTTP (`MCP_TRANSPORT=http`)، تتوفر لوحة تحكم ويب على `http://localhost:8000/dashboard`. وهي توفّر:
- رفع الملفات الثنائية بالسحب والإفلات
- حالة التحليل في الوقت الفعلي
- قائمة دوال تفاعلية وعرض التفكيك
- نتائج استخراج IOC
- مراقبة صحة الخادم
**التقنيات المستخدمة:** FastAPI + قوالب Jinja2 + HTMX (تُحمَّل محليًا من `dashboard/static/`، دون اعتماد على CDN بما يتوافق مع CSP).
**ميزات الأمان:**
- رموز CSRF على جميع النماذج التي تغيّر الحالة
- التهريب التلقائي (auto-escaping) في Jinja2 مفعّل
- يتم تعقيم جميع مدخلات المستخدم عبر `html.escape()` قبل العرض
- حماية من اجتياز المسار عبر `validate_file_path()`
---
## النشر
### قائمة التحقق للإنتاج
قبل النشر إلى الإنتاج:
| البند | الطريقة |
|---|---|
| تعيين مفتاح API | `MCP_API_KEY=<strong-random-key>` |
| استخدام مستخدم غير جذر | مدمج: تعمل الحاوية كمستخدم `appuser` (UID 1000) |
| ضبط حدود الموارد | الافتراضي: 2 CPU / 4 GB RAM في `docker-compose.yml` |
| تفعيل التسجيل المنظم | `LOG_FORMAT=json` لتجميع السجلات |
| إعداد Redis | `REDIS_URL=redis://<host>:6379/0` لقائمة المهام والتخزين المؤقت |
| تعيين مسار مساحة العمل | `REVERSECORE_WORKSPACE=/path/to/isolated/directory` |
| مراجعة حدود المعدل | `REVERSECORE_RATE_LIMIT=60` (طلب/دقيقة، عدّل حسب الحاجة) |
| تفعيل وضع الحماية (sandbox) | `REVERSECORE_SANDBOX_ENABLED=true` لعزل التحليل الديناميكي |
### فحوصات الصحة
يوفر الخادم نقاط نهاية لفحوصات الصحة عبر HTTP لأغراض التنسيق:```bash
# Liveness (always 200 if process is running)
curl http://localhost:8000/health/live
# Readiness (checks tool availability)
curl http://localhost:8000/health/ready
# Full health (requires API key if configured)
curl -H "X-API-Key: <key>" http://localhost:8000/health
هذه النقاط الطرفية معفاة من مصادقة مفتاح API حتى تتمكن موازنات التحميل وأدوات تنسيق الحاويات من فحصها.
تتضمن صورة Docker تعليمة HEALTHCHECK مدمجة تتحقق من اتصال TCP بالمنفذ 8000 كل 30 ثانية. سيقوم Docker و Kubernetes تلقائيًا بإعادة تشغيل الحاويات غير الصحية.
أداة CLI المطلوبة غير مثبتة في البيئة.
الحل: إذا كنت تستخدم Docker، تحقق من أن الأداة موجودة في الصورة الأساسية:```bash docker exec reversecore-mcp-arm64 which r2 yara binwalk tsk_recover gdb
إذا كنت تستخدم تثبيت Python محليًا، فقم بتثبيت الأداة المفقودة:```bash
# macOS
brew install radare2 yara binwalk sleuthkit
# Ubuntu/Debian
apt install radare2 yara binwalk sleuthkit
تجاوز التحليل المهلة المحددة.
الحل: قم بزيادة المهلة:```bash export REVERSECORE_DEFAULT_TOOL_TIMEOUT=300 # 5 minutes
بالنسبة للملفات الثنائية الكبيرة (>100 MB)، يُنصح باستخدام متغيرات الفحص السريع:
- `run_capa_quick` بدلاً من `run_capa`
- `detect_packer` بدلاً من `detect_packer_deep`
</details>
<details>
<summary><b>خطأ اجتياز المسار (RCMCP-E302)</b></summary>
لقد أشرت إلى ملف خارج دليل العمل.
**الحل:** انسخ الملف إلى دليل العمل أولاً:```
copy_to_workspace("/path/to/file.exe")
أو قم بتركيب مجلدات إضافية للقراءة فقط:```bash export REVERSECORE_READ_DIRS=/opt/samples,/mnt/evidence
</details>
<details>
<summary><b>حاوية Docker لا تبدأ على Apple Silicon</b></summary>
تأكد من أنك تستخدم ملف تعريف ARM64:```bash
docker compose --profile arm64 up -d
أو استخدم سكربت الكشف التلقائي:```bash ./scripts/run-docker.sh
</details>
<details>
<summary><b>رفض اتصال Redis</b></summary>
تتطلب قائمة المهام تشغيل مثيل Redis.
**الحل:** ابدأ Redis إلى جانب الخدمة الرئيسية:```bash
docker compose --profile arm64 up -d # Starts both reversecore and redis
أو قم بتعطيل الميزات التي تعتمد على Redis بعدم تعيين REDIS_URL.
هذا يعني عادةً أن الدالة لم يتم تحليلها أولاً.
الحل: قم بتشغيل التحليل قبل تفريغ الترجمة:``` Radare2_analyze_binary("sample.exe") Radare2_decompile_function("sample.exe", "main")
</details>
---
## الأسئلة الشائعة
<details>
<summary><b>هل يستبدل هذا Ghidra أو IDA Pro؟</b></summary>
لا. هذا المشروع مكمّل وليس بديلًا. يستخدم r2ghidra (محرك فك التحويل البرمجي من Ghidra المدمج في Radare2) لفك التحويل البرمجي. لا يوفر واجهة رسومية (GUI)، ولا يمتلك سير عمل التحليل التفاعلي لمفكك برامج كامل. الغرض منه هو تمكين المساعدين الذكيين (AI) من تنفيذ مهام التحليل برمجيًا.
</details>
<details>
<summary><b>هل يلزم تثبيت منفصل لـ Ghidra أو JDK؟</b></summary>
لا. المكوّن الإضافي r2ghidra يضمّن محرك فك التحويل البرمجي الخاص بـ Ghidra مباشرة داخل Radare2. لا حاجة إلى JDK، ولا تثبيت Ghidra، ولا ملفات مشروع Ghidra. فقط `r2` مع المكوّن الإضافي `r2ghidra` مضمّنًا.
</details>
<details>
<summary><b>ما عملاء MCP المدعومون؟</b></summary>
أي عميل يطبّق مواصفات [Model Context Protocol](https://modelcontextprotocol.io/). تم اختباره مع: Claude Desktop وCursor وWindsurf وGoogle Antigravity. يدعم الخادم كلاً من ناقلَي stdio وHTTP/SSE.
</details>
<details>
<summary><b>هل يمكنني تحليل ملفات Windows PE على Linux/macOS؟</b></summary>
نعم. يعمل التحليل الثابت (التفكيك، فك التحويل البرمجي، استخراج السلاسل النصية، استخراج IOC، فحص YARA) على أي تنسيق ملف بغض النظر عن نظام التشغيل المضيف. قد يواجه التحليل الديناميكي (المحاكاة، الاختبار بالبيانات العشوائية) قيودًا اعتمادًا على البنية المستهدفة.
</details>
<details>
<summary><b>ما مدى أمان تحليل البرمجيات الخبيثة بهذه الأداة؟</b></summary>
توفر حاوية Docker العزل: مستخدم غير جذر، لا شبكة افتراضيًا في CI، حدود للموارد. لتحليل البرمجيات الخبيثة الحية، نوصي بالتشغيل في جهاز افتراضي مخصص أو باستخدام ميزة العزل (sandbox) (`REVERSECORE_SANDBOX_ENABLED=true`). أدوات التحليل الثابت (r2 وYARA وstrings) لا تنفّذ الملف الثنائي الهدف أبدًا.
</details>
<details>
<summary><b>ما الحد الأقصى لحجم الملف؟</b></summary>
الحدود الافتراضية:
- الرفع: 100 ميجابايت (`MAX_UPLOAD_SIZE`)
- تحليل LIEF: 1 جيجابايت (`REVERSECORE_LIEF_MAX_FILE_SIZE`)
- مخرجات الأدوات: 10 ميجابايت (`REVERSECORE_MAX_OUTPUT_SIZE`)
جميع الحدود قابلة للتهيئة عبر متغيرات البيئة.
</details>
---
## شكر وتقدير
بُني هذا المشروع على جهود العديد من المشاريع مفتوحة المصدر:
| المشروع | الدور في Reversecore MCP |
|---|---|
| [Radare2](https://radare.org/) | التفكيك، المحاكاة، تحليل الملفات الثنائية |
| [r2ghidra](https://github.com/radareorg/r2ghidra) | محرك فك التحويل البرمجي من Ghidra لـ Radare2 |
| [FastMCP](https://github.com/jlowin/fastmcp) | إطار عمل خادم MCP |
| [YARA](https://virustotal.github.io/yara/) | مطابقة الأنماط لكشف البرمجيات الخبيثة |
| [LIEF](https://lief-project.github.io/) | تحليل تنسيقات الملفات الثنائية (PE, ELF, Mach-O) |
| [CAPA](https://github.com/mandiant/capa) | كشف القدرات بواسطة Mandiant FLARE |
| [angr](https://angr.io/) | محرك التنفيذ الرمزي |
| [Capstone](https://www.capstone-engine.org/) | إطار عمل التفكيك |
| [Keystone](https://www.keystone-engine.org/) | إطار عمل التجميع |
| [pwntools](https://github.com/Gallopsled/pwntools) | مجموعة أدوات تطوير الاستغلال |
| [ROPgadget](https://github.com/JonathanSalwan/ROPgadget) | باحث عن أدوات ROP |
| [Volatility3](https://github.com/volatilityfoundation/volatility3) | إطار عمل الطب الشرعي للذاكرة |
| [Scapy](https://scapy.net/) | تحليل حزم الشبكة |
| [Sleuth Kit](https://sleuthkit.org/) | مجموعة أدوات تحليل الأقراص الجنائي |
| [Binwalk](https://github.com/ReFirmLabs/binwalk) | تحليل البرمجيات الثابتة |
| [Detect It Easy](https://github.com/horsicq/DIE-engine) | كشف أدوات التغليف والمترجمات |
---
## الترخيص
MIT — انظر [LICENSE](https://github.com/sjkim1127/reversecore_mcp/blob/HEAD/LICENSE) للتفاصيل.
---
<div align="center">
**[GitHub](https://github.com/sjkim1127/Reversecore_MCP)** · **[PyPI](https://pypi.org/project/reversecore-mcp/)** · **[وثائق FastMCP](https://github.com/jlowin/fastmcp)** · **[مواصفات MCP](https://modelcontextprotocol.io/)** · **[Radare2](https://radare.org/)** · **[YARA](https://virustotal.github.io/yara/)**
</div>
| المجال | ما يمكنك فعله |
|---|
| التحليل الثابت | التفكيك، فك الترجمة (r2ghidra)، تحليل الملفات الثنائية (LIEF)، كشف أدوات التعبئة (DIE)، كشف القدرات (CAPA)، استخراج السلاسل النصية، فحص البرمجيات الثابتة (binwalk) |
| التحليل الديناميكي والرمزي | محاكاة ESIL، التنفيذ الرمزي عبر angr، تحليل التلطيخ، توليد منصات اختبار الضغط (fuzzing harness) |
| تحليل البرمجيات الخبيثة | استخراج مؤشرات الاختراق (IOC)، فحص YARA، كشف البوابات الخلفية الخاملة، توليد اللقاحات التكيفية، البحث المستقل عن الثغرات |
| بحث الثغرات | كشف الواجهات البرمجية الخطرة، اكتشاف أدوات ROP، تحليل استغلال الكومة، فرز الأعطال، توليد إثباتات المفهوم (PoC) |
| التحقيق الرقمي الجنائي | تحليل الذاكرة (Volatility3)، تحليل PCAP (Scapy)، تحليل الأقراص (Sleuth Kit)، ربط الأدلة |
| تدقيق الكود المصدري | فحص AST للبايثون، فحص أنماط C/C++ بالتعبيرات النمطية |
| إعداد التقارير | تقارير تعتمد على الجلسات مع تعيين MITRE ATT&CK، توليد قواعد SIGMA، تقارير VEX، توصيل عبر البريد الإلكتروني |
| المتغير | الافتراضي | الوصف |
|---|
MCP_TRANSPORT | stdio | وضع النقل: stdio أو http |
REVERSECORE_WORKSPACE | ./ (cwd) | دليل مساحة عمل التحليل |
REVERSECORE_READ_DIRS | "" | قائمة مفصولة بفواصل من الأدلة الإضافية للقراءة فقط |
REVERSECORE_STRICT_PATHS | false | إثارة أخطاء للمسارات المفقودة بدلاً من التحذيرات |
REVERSECORE_STRUCTURED_ERRORS | false | تفعيل استجابات الأخطاء المنظمة مع رموز الأخطاء |
REVERSECORE_DEFAULT_TOOL_TIMEOUT | 120 | مهلة تنفيذ الأداة الافتراضية بالثواني |
REVERSECORE_MAX_OUTPUT_SIZE | 10000000 | الحد الأقصى لحجم الإخراج للأدوات (بايت) |
| المتغير | الافتراضي | الوصف |
|---|
MCP_HOST | 0.0.0.0 | واجهة المضيف للربط (تتجاوز تلقائيًا إلى 127.0.0.1 إذا لم يكن هناك مفتاح API) |
MCP_PORT | 8000 | منفذ خادم HTTP |
MCP_API_KEY | (غير مضبوط) | مفتاح API لمصادقة HTTP (X-API-Key أو Authorization: Bearer) |
REVERSECORE_RATE_LIMIT | 60 | الحد الأقصى للطلبات في الدقيقة (وضع HTTP فقط، عبر slowapi) |
MAX_UPLOAD_SIZE | 100000000 | الحد الأقصى لحجم الرفع (100 ميجابايت افتراضيًا) |
FILE_RETENTION_MINUTES | 1440 | فترة الاحتفاظ بالملفات المرفوعة (24 ساعة افتراضيًا) |
| المتغير | الافتراضي | الوصف |
|---|
REVERSECORE_R2_POOL_SIZE | 3 | عدد اتصالات Radare2 في التجمع |
REVERSECORE_R2_POOL_TIMEOUT | 30 | مهلة الحصول على اتصال من التجمع |
REVERSECORE_R2_EXTENSIONS | "" | قائمة مفصولة بفواصل من فئات امتدادات r2 (module:ClassName) |
REVERSECORE_GHIDRA_MAX_PROJECTS | 3 | الحد الأقصى لمشاريع مفكك r2ghidra المخزنة مؤقتًا |
REVERSECORE_GHIDRA_EXTENSIONS | "" | قائمة مفصولة بفواصل من فئات امتدادات Ghidra |
MAX_EMULATION_INSTRUCTIONS | 1000 | الحد الأقصى لتعليمات محاكاة ESIL |
| المتغير | الافتراضي | الوصف |
|---|
REVERSECORE_SANDBOX_ENABLED | false | تفعيل تنفيذ العزل لأدوات التحليل الديناميكي |
REVERSECORE_SANDBOX_MODE | auto | وضع العزل: auto أو host أو container أو disabled |
REVERSECORE_SANDBOX_DOCKER_IMAGE | reversecore-sandbox:latest | صورة Docker لتنفيذ العزل |
REVERSECORE_SANDBOX_CPU_LIMIT | 1.0 | حد نوى وحدة المعالجة المركزية لحاويات العزل |
REVERSECORE_SANDBOX_MEMORY_LIMIT | 512m | حد الذاكرة لحاويات العزل |
REVERSECORE_SANDBOX_PIDS_LIMIT | 100 | حد معرفات العمليات (PID) لحاويات العزل |
REVERSECORE_SANDBOX_USER | nobody | مستخدم غير جذري لتنفيذ العزل |
| المتغير | الافتراضي | الوصف |
|---|
REDIS_URL | redis://localhost:6379/0 | عنوان Redis لقائمة مهام الانتظار وتخزين النتائج مؤقتًا |
MEMORY_DB_PATH | ~/.reversecore_mcp/memory.db | مسار قاعدة بيانات ذاكرة الذكاء الاصطناعي SQLite |
REVERSECORE_LIEF_MAX_FILE_SIZE | 1000000000 | الحد الأقصى لحجم الملف لعملية تحليل LIEF (1 جيجابايت) |
| المتغير | الافتراضي | الوصف |
|---|
LOG_LEVEL | INFO | مستوى تفاصيل السجلات: DEBUG أو INFO أو WARNING أو ERROR |
LOG_FILE | <tempdir>/reversecore/app.log | مسار ملف السجل |
LOG_FORMAT | human | تنسيق السجل: human (قابل للقراءة) أو json (منظم) |
| التحكم | التنفيذ |
|---|
| لا حقن أوامر | جميع استدعاءات العمليات الفرعية تستخدم وسائط قائمة، ولا تستخدم سلاسل أوامر أبدًا (execution.py) |
| منع اجتياز المسار | validate_file_path() و validate_binary_path() يحلّان الروابط الرمزية ويقيّدان الوصول إلى مساحة العمل (validators.py) |
| تخفيف TOCTOU | علامة bypass_cache=True تعيد التحقق من المسارات لمنع حالات السباق |
| تنقية المدخلات | تُنقّى جميع المعاملات قبل التنفيذ (security.py) |
| حماية CSRF | نماذج لوحة التحكم تتطلب تحققًا قائمًا على الرموز لـ CSRF (dashboard/__init__.py) |
| التحكم | التنفيذ |
|---|
| مصادقة آمنة ضد هجمات التوقيت | secrets.compare_digest() لمقارنة مفتاح API (web/auth.py) |
| مسارات مصادقة مقيدة | تُقبل رؤوس X-API-Key و Authorization: Bearer فقط؛ لا معاملات استعلام أو ملفات تعريف ارتباط |
| احتكار الاتصال المحلي (Loopback) عند غياب المفتاح | بدون MCP_API_KEY، يقتصر وصول HTTP على 127.0.0.1 (web/middleware.py) |
| تحديد المعدل | حدود قابلة للتكوين في الدقيقة عبر slowapi |
| ترويسات أمنية | HSTS و X-Content-Type-Options و X-Frame-Options و CSP على جميع استجابات HTTP (web/middleware.py) |
تصغير /health | نقطة النهاية العامة تُرجع فقط {"status": "alive"}؛ التفاصيل خلف المصادقة (web/endpoints.py) |
| التحكم | التنفيذ |
|---|
| فحص الأسرار | يعمل Gitleaks عند كل إرسال (ربط ما قبل الالتزام + CI) |
| SAST | يفحص Bandit جميع أكواد Python عند كل إرسال |
| CodeQL | تحليل ثابت من GitHub CodeQL عند كل دفع إلى main |
| تدقيق التبعيات | pip-audit عند كل دفع — لا ثغرات CVE غير مراجعة |
| فحص الحاويات | يفحص Trivy صور Docker بحثًا عن الثغرات (من LOW إلى CRITICAL) |
| بوابة أمان الاستغلال | تُفحص قوالب POC مع Bandit؛ اختبار التشويش (fuzzing) بواسطة Hypothesis DAST؛ التحقق من عزل الحاوية |
| العلامة | الغرض |
|---|
@pytest.mark.unit | اختبارات وحدة سريعة |
@pytest.mark.integration | اختبارات تتطلب Docker أو أدوات خارجية |
@pytest.mark.slow | اختبارات طويلة التشغيل |
@pytest.mark.benchmark | معايير الأداء |
@pytest.mark.security | اختبارات التحقق من حدود الأمان |
| الخدمة | الملف التعريفي | الوصف |
|---|
reversecore-mcp | default, x86 | Intel/AMD x86_64 |
reversecore-mcp-arm64 | arm64, macos | Apple Silicon ARM64 |
redis | جميع الملفات | Redis 7 Alpine لقائمة المهام والتخزين المؤقت |
| المكوّن | الحد الأدنى | الموصى به |
|---|
| CPU | 4 أنوية | 8+ أنوية |
| RAM | 8 جيجابايت | 16 جيجابايت |
| التخزين | 20 جيجابايت | 50 جيجابايت SSD |
| نظام التشغيل | Linux / macOS | بيئة Docker (أي نظام تشغيل) |
| Docker | 20.10+ | 24.0+ |
| Python (الوضع المحلي) | 3.10 | 3.11 أو 3.12 |
| الاستثناء | الرمز | النوع | متى |
|---|
ReversecoreError | RCMCP-E000 | UNKNOWN_ERROR | الفئة الأساسية لجميع الأخطاء |
ValidationError | RCMCP-E001 | VALIDATION_ERROR | إدخال غير صالح، معاملات خاطئة |
ExecutionTimeoutError | RCMCP-E002 | TIMEOUT_ERROR | تجاوزت الأداة المهلة الزمنية |
ToolNotFoundError | RCMCP-E003 | TOOL_ERROR | أداة سطر الأوامر المطلوبة غير مثبتة |
OutputLimitExceededError | RCMCP-E004 | OUTPUT_ERROR | تجاوز حجم المخرج الحد الأقصى |
ToolExecutionError | RCMCP-E005 | EXECUTION_ERROR | أرجعت العملية الفرعية قيمة غير صفرية |
BinaryAnalysisError | RCMCP-E100 | BINARY_ANALYSIS_ERROR | فشل عام في تحليل الملفات الثنائية |
DecompilationError | RCMCP-E101 | DECOMPILATION_ERROR | فشل فك الترجمة بواسطة r2ghidra |
DisassemblyError | RCMCP-E102 | DISASSEMBLY_ERROR | فشل التفكيك بواسطة Radare2 |
StructureRecoveryError | RCMCP-E103 | STRUCTURE_RECOVERY_ERROR | فشل استعادة بنية C |
SignatureGenerationError | RCMCP-E104 | SIGNATURE_GENERATION_ERROR | فشل توليد توقيع YARA/التوقيعات |
EmulationError | RCMCP-E105 | EMULATION_ERROR | فشل المحاكاة عبر ESIL |
ToolTimeoutError | RCMCP-E200 | TOOL_TIMEOUT_ERROR | انتهت مهلة أداة خارجية |
GhidraConnectionError | RCMCP-E201 | GHIDRA_CONNECTION_ERROR | مشكلة اتصال r2ghidra |
Radare2Error | RCMCP-E202 | RADARE2_ERROR | فشل أمر Radare2 |
WorkspaceError | RCMCP-E300 | WORKSPACE_ERROR | خطأ في الوصول إلى ملف مساحة العمل |
SecurityViolationError | RCMCP-E301 | SECURITY_VIOLATION | انتهاك سياسة الأمان |
PathTraversalError | RCMCP-E302 | PATH_TRAVERSAL | تم اكتشاف محاولة اجتياز المسار |
| المستوى | الواجهة الخلفية | تنسيق المفتاح | TTL | الغرض |
|---|
| L1 | Redis | ghidra:decompile:{file_hash}:{function_address}:{decompiler} | ساعة واحدة (3600 ثانية) | سريع، مشترك عبر الجلسات |
| L2 | SQLite | الجدول decompilation_cache | دائم | يبقى بعد إعادة تشغيل Redis |