
خادم MCP متعدد الاستخدامات لتحليل ملفات PCAP
خادم MCP يُعرض sharkd — واجهة Wireshark البرمجية — كمجموعة أدوات للـ LLMs. قم بتحميل ملفات PCAP/PCAPNG وتحليلها باستخدام اللغة الطبيعية.
sharkd)git clone https://github.com/weirdmachine64/sharkmcp.git
cd sharkmcp
pip install -e .
أو التشغيل مباشرة من المستودع دون تثبيت:
uvx --from git+https://github.com/weirdmachine64/sharkmcp sharkmcp
أضف إلى ملف .mcp.json الخاص بك:
{
"mcpServers": {
"sharkmcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/weirdmachine64/sharkmcp", "sharkmcp"],
"env": {
"SHARKMCP_TIMEOUT": "300"
}
}
}
}
| المتغير البيئي | القيمة الافتراضية | الوصف |
|---|---|---|
SHARKMCP_SHARKD_BIN | sharkd | مسار ثنائي sharkd |
SHARKMCP_TIMEOUT | 300 | المهلة لكل طلب بالثواني |
كل ملف PCAP يتم تحميله يحصل على عملية فرعية مخصصة sharkd. يتم تخزين نتائج الفحوصات المكلفة (المحادثات، معلومات الخبراء، تصدير الكائنات) مؤقتًا في الذاكرة بحيث يتم تلبية الاستدعاءات المتتابعة المقسمة إلى صفحات دون إعادة مسح.
| الأداة | الوصف |
|---|---|
load_pcap(path, alias?) | تحميل ملف PCAP/PCAPNG |
list_pcaps() | عرض جميع ملفات PCAP المحملة |
unload_pcap(alias) | إنهاء الجلسة وتحرير الذاكرة |
| الأداة | الوصف |
|---|---|
pcap_summary(alias) | عدد الإطارات، المدة، حجم الملف، البروتوكولات التي تم رؤيتها |
server_info(alias) | جميع أنواع التنصت المتاحة، بروتوكولات المتابعة، أنواع الحقول |
| الأداة | الوصف |
|---|---|
list_packets(alias, filter?, columns?, refs?) | قائمة إطارات مقسمة مع مرشح عرض |
packet_detail(alias, frame, include_bytes?, include_hidden?) | شجرة بروتوكول كاملة لإطار واحد |
extract_fields(alias, fields, filter?) | استخراج حقول عشوائية لكل حزمة كجدول |
| الأداة | الوصف |
|---|---|
validate(alias, filter?, field?) | التحقق من صحة مرشح عرض و/أو اسم حقل |
complete(alias, field?, pref?) | الإكمال التلقائي لأسماء الحقول أو التفضيلات حسب البادئة |
get_preference(alias, preference?) | قراءة تفضيلات المحلل |
set_preference(alias, name, value) | تعيين تفضيل محلل لهذه الجلسة |
set_frame_comment(alias, frame, comment) | إضافة تعليق إلى إطار (محدد النطاق للجلسة) |
| الأداة | الوصف |
|---|---|
protocol_hierarchy(alias, filter?) | شجرة بروتوكول متداخلة مع أعداد الإطارات/البايتات |
io_stats(alias, interval_ms?, filter?) | أعداد الإطارات والبايتات لكل فترة زمنية |
iograph(alias, graphs, interval_ms?, filters?) | رسم بياني متعدد الخطوط للمرور؛ يدعم packets، bytes، bits، sum:<field>، avg:<field>، min:<field>، max:<field>، load:<field>، frames:<field> |
follow_stream(alias, protocol, filter) | إعادة تجميع تدفق (tcp، udp، tls، http، http2، quic، sip، dccp، websocket) |
| الأداة | الوصف |
|---|---|
conversations(alias, type?, sort_by?) | جدول المحادثات — البايتات/الإطارات لكل زوج نظير |
endpoints(alias, type?, sort_by?) | جدول نقاط النهاية — الإرسال/الاستقبال لكل مضيف |
أنواع الطبقات المدعومة لكليهما: tcp، udp، ip، ipv6، eth، sctp، dccp، mptcp، wifi، bluetooth، zigbee، fc، fddi، usb، والمزيد.
| الأداة | الوصف |
|---|---|
expert_info(alias, filter?) | كشف الشذوذ لكل إطار — أخطاء، تحذيرات، ملاحظات، محادثات |
protocol_stats(alias, protocol) | إحصائيات مجمعة لـ dns، http، http_requests، http_server، sip، dhcp، h225، http2، rtsp |
service_response_time(alias, protocol) | زمن الاستجابة للطلب/الرد لـ smb، smb2، snmp، ldap، diameter، rpc، gtp، والمزيد |
response_time_delay(alias, protocol) | تأخير الرحلة ذهابًا وإيابًا لـ radius، h225_ras، megaco، mgcp |
sequence_diagram(alias, type?) | بيانات مخطط التدفق لـ tcp، icmp، icmpv6، any |
| الأداة | الوصف |
|---|---|
voip_calls(alias, filter?) | قائمة مكالمات SIP/H.323 مع الحالة والمشاركين |
rtp_streams(alias, stream_spec?) | جرد تدفقات RTP؛ مرر stream_spec للحصول على الارتعاش/الفقدان لكل تدفق |
multicast_streams(alias, filter?) | إحصائيات تدفقات البث المتعدد UDP |
| الأداة | الوصف |
|---|---|
export_objects(alias, type?) | سرد الكائنات القابلة للاستخراج (http، imf، smb، tftp، dicom، ftp-data) |
download_object(alias, token) | تنزيل كائن، مفاتيح جلسة TLS (ssl-secrets)، أو صوت RTP (rtp:<spec>) بتنسيق base64 |
| الأداة | الوصف |
|---|---|
tap(alias, specs, filter?, skip?, limit?) | تشغيل أي تنصت sharkd مباشرة — حتى 16 مواصفًا في مسح PCAP واحد. استخدم server_info لاكتشاف المعرفات الصالحة. |
> load_pcap("/captures/traffic.pcap", alias="traffic")
> protocol_hierarchy("traffic")
> expert_info("traffic", limit=20)
> conversations("traffic", type="tcp", sort_by="bytes")
> extract_fields("traffic", ["dns.qry.name", "dns.a"], filter="dns")
> follow_stream("traffic", "http", "tcp.stream eq 0")
> export_objects("traffic", type="http")
> download_object("traffic", "eo:http_0")
LLM
│ MCP (stdio)
▼
SharkMCP server
│ JSON-RPC 2.0 (stdin/stdout)
├─ sharkd [pcap-1]
├─ sharkd [pcap-2]
└─ sharkd [pcap-N]
عملية فرعية sharkd لكل ملف PCAP محمل. الجلسات معزولة — الاستعلامات المتزامنة على أسماء مستعارة مختلفة لا تمنع بعضها أبدًا.