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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
snoop — متعقب استدعاءات النظام الحديث المبني على eBPF. فكر في strace، ولكن مع واجهة مستخدم نصية حقيقية، وفلاتر ذكية، وفك تشفير TLS، ومخرجات قابلة للقراءة بالفعل. | Kitploit
أدوات/GitHubGitHub/pandaadir05/snoop
التحليل الديناميكي (عزل)أدوات التشفير/فك التشفيرالهندسة العكسيةمصممي الأخطاءالتحقيق الجنائي الرقميأمن الشبكاتتحليل البرمجيات الخبيثةالأدوات والمكوناتتحليل الملفات الثنائيةالاستجابة للحوادث
GitHubpandaadir05/snoop
220104منذ 5 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

snoop

متعقب استدعاءات النظام الحديث المبني على eBPF. فكر في strace، ولكن مع واجهة مستخدم نصية حقيقية، وفلاتر ذكية، وفك تشفير TLS، ومخرجات قابلة للقراءة بالفعل.

عرض المستودع
مشاركة

snoop

CI License: MIT OR Apache-2.0

متعقّع استدعاءات النظام للينكس، مبني على eBPF. مثل strace لكن مع واجهة TUI حية، مرشحات ذكية، وفك تشفير وسيطات يمكنك قراءتها فعلاً.

عرض توضيحي لـ snoop TUI

root@kitploit:~
$ sudo snoop curl https://example.com
[   0.001] curl(1234/1234)  openat(AT_FDCWD, "/etc/ssl/certs/ca-certificates.crt", O_RDONLY) = 4  <0.031ms>
[   0.002] curl(1234/1234)  read(4, 0x7f3a1c000b20, 4096) = 4096  <0.012ms>
[   0.003] curl(1234/1234)  socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 5  <0.008ms>
[   0.004] curl(1234/1234)  connect(5, 93.184.216.34:443) = 0  <42.187ms>
[   0.046] curl(1234/1234)  sendto(5, 0x55a3bc001b40, 78, MSG_NOSIGNAL) = 78  <0.011ms>

أو شغّله بدون --raw لتحصل على واجهة TUI بملء الشاشة:

root@kitploit:~
 snoop  pid:1234  comm:curl  events:142  elapsed:0.341s
┌── syscall stream ─────────────────────────────────────┐┌── top syscalls ─────────┐
│ [  0.001] curl  openat("/etc/ssl/…") = 4  <0.031ms>  ││ syscall       count  pct│
│ [  0.002] curl  read(4, …) = 4096                    ││ read            38  26.8%│
│ [  0.003] curl  socket(AF_INET, …) = 5               ││ write           21  14.8%│
│ [  0.004] curl  connect(5, 93.184.216.34:443) = 0    ││ openat          18  12.7%│
│ [  0.046] curl  sendto(5, …) = 78                    ││ mmap            14   9.9%│
└───────────────────────────────────────────────────────┘└─────────────────────────┘
 [q]uit  [Space]pause  [/]search  [f]iles  [n]et  [c]lear  [↑↓]scroll  [G]bottom

لماذا لا نستخدم strace فقط؟

يستخدم strace أسلوب ptrace، مما يوقف عملية التشغيل عند كل استدعاء نظام. يستخدم snoop نقاط تتبع eBPF بدلاً من ذلك — تستمر عمليتك في العمل بكامل سرعتها بينما يتم التتبع داخل النواة. بالإضافة إلى الأداء، يقوم snoop بفك تشفير الوسيطات إلى شيء يمكنك قراءته فعلاً، ويحتوي على واجهة TUI بلحظة واقعية، ويمكنه حفظ/إعادة تشغيل/مقارنة التتبعات.

ما الذي يفعله

  • TUI — تيار حي قابل للتمرير لاستدعاءات النظام مع لوحة أعلى الاستدعاءات، بحث، مرشحات الفئات، إيقاف/استئناف. يتحول إلى إخراج سطري على غرار strace عندما لا يكون stdout طرفية.
  • صيغ الإخراج — --raw (متوافق مع strace)، --json (سطور JSON لـ jq)، --explain (يجمع استدعاءات النظام في ملخصات نشاط عالية المستوى)
  • المرشحات — --files، --net، --slow 10، --syscall openat
  • فك تشفير الوسيطات لأكثر من 60 استدعاء نظام — المسارات، العلامات، عناوين المقابس، كل ما تحتاج عادةً للبحث عنه في صفحة الدليل
  • التعلّق بعملية قيد التشغيل (-p PID) أو التوليد (snoop <cmd>)
  • --follow يتتبع العمليات الفرعية أيضاً
  • الحاويات — --docker <name> و --pod <name> يتتبع كل شيء داخل حاوية

لا وحدات نواة، ولا سلسلة أدوات C. برامج eBPF هي كود Rust خالص (aya) ومضمنة في الملف الثنائي.

المتطلبات

  • Linux 5.8+ (يحتاج دعم عازلة حلقة BPF)
  • x86_64 أو aarch64
  • صلاحية الجذر، أو CAP_BPF + CAP_PERFMON

التثبيت

ملف ثنائي معد مسبقاً

root@kitploit:~
curl -L https://github.com/pandaadir05/snoop/releases/latest/download/snoop-x86_64-linux.tar.gz \
  | tar -xz
sudo install -m755 snoop /usr/local/bin/snoop

بالنسبة لـ aarch64، استبدل x86_64 بـ aarch64.

من المصدر

root@kitploit:~
cargo install --git https://github.com/pandaadir05/snoop snoop

يبني هذا برامج eBPF تلقائياً. لا حاجة لسلسلة أدوات C أو رؤوس النواة، فقط Rust.

الاستخدام

root@kitploit:~
# تتبع أمر
sudo snoop ls /etc
sudo snoop -- nginx -g 'daemon off;'

# التعلّق بعملية قيد التشغيل
sudo snoop -p $(pidof postgres)
sudo snoop -p 1234 --follow        # تتبع العمليات الفرعية أيضاً

# الحاويات
sudo snoop --docker my-nginx
sudo snoop --pod my-app-pod --namespace production

# التصفية
sudo snoop -p 1234 --files         # استدعاءات نظام الملفات فقط
sudo snoop -p 1234 --net           # استدعاءات الشبكة فقط
sudo snoop -p 1234 --slow 5        # الاستدعاءات التي تستغرق أكثر من 5 مللي ثانية فقط
sudo snoop -p 1234 --syscall openat --syscall read

وضع التفسير

--explain يجمع استدعاءات النظام الخام في ملخصات عالية المستوى بدلاً من عرض كل استدعاء على حدة:

root@kitploit:~
sudo snoop -p 1234 --explain
root@kitploit:~
READ   /etc/passwd          ↓1.2 KB   (2 calls, 0.80ms)
NET    127.0.0.1:5432       ↑512 B ↓4.0 KB   (18.20ms)
EXEC   /usr/bin/python3

فك تشفير TLS

يخطّف SSL_write/SSL_read في OpenSSL لالتقاط النصوص الصريحة:

root@kitploit:~
sudo snoop -p 1234 --tls

تتبع الكومة

root@kitploit:~
sudo snoop -p 1234 --ltrace

التسجيل وإعادة التشغيل

سجّل تتبعاً، ثم أعد تشغيله لاحقاً دون صلاحية الجذر:

root@kitploit:~
sudo snoop record -p 1234 -o trace.snoop

snoop view trace.snoop
snoop view trace.snoop --files --slow 5 --json | jq 'select(.name=="read")'

مقارنة تتبعين

مفيد لاكتشاف الانحدارات بعد النشر:

root@kitploit:~
sudo snoop record -p 1234 -o before.snoop
# ... نشر التغيير ...
sudo snoop record -p 1234 -o after.snoop

snoop diff before.snoop after.snoop
root@kitploit:~
SYSCALL COUNTS
  read      1200 → 1800  (+50.0%)  ▲
  openat     340 →  210  (-38.2%)  ▼

DURATION REGRESSIONS (median)
  read      0.02ms → 0.08ms  (+300%)

ONLY IN after
  statx (4x)

إخراج JSON

root@kitploit:~
sudo snoop -p 1234 --json | jq 'select(.name == "connect")'

تصدير flamegraph

root@kitploit:~
sudo snoop -p 1234 --flamegraph syscalls.svg

العلامات

root@kitploit:~
  -p, --pid <PID>           التعلّق بعملية قيد التشغيل
      --follow              تتبع العمليات الفرعية (يتطلب --pid)
      --docker <NAME|ID>    تتبع جميع العمليات في حاوية Docker
      --pod <POD>           تتبع جميع العمليات في بود Kubernetes
  -n, --namespace <NS>      مساحة أسماء Kubernetes (الافتراضي: default)

      --raw                 إخراج سطري متوافق مع strace
      --json                سطور JSON - كائن واحد لكل استدعاء نظام
      --explain             ملخصات نشاط دلالية

      --files               استدعاءات نظام الملفات فقط
      --net                 استدعاءات الشبكة فقط
      --slow <MILLIS>       الاستدعاءات التي تستغرق أكثر من الحد فقط
      --syscall <NAME>      استدعاء نظام واحد فقط (قابل للتكرار)
      --no-decode           وسيطات سداسية عشرية خام، بدون فك تشفير

      --tls                 التقاط نصوص TLS الصريحة عبر uprobes لـ SSL_write/SSL_read
      --ltrace              تتبع malloc/free/calloc/realloc

      --flamegraph <PATH>   كتابة SVG flamegraph عند الخروج
      --ebpf-obj <PATH>     تجاوز كائن eBPF المضمن [$SNOOP_EBPF_OBJ]

مفاتيح التحكم في TUI

كيف يعمل

برنامجان من eBPF يتصلان بـ raw_syscalls/sys_enter و sys_exit. عند الدخول، يُدخل رقم استدعاء النظام والوسيطات في خريطة مسودة خاصة بالخيط. عند الخروج، يُقرن قيمة الإرجاع ببيانات الدخول ويدفع إلى عازلة حلقة. يفرغ مساحة المستخدم العازلة الحلقية عبر واصف ملف غير متزامن ويمرر كل شيء عبر خط أنابيب التصفية/فك التشفير.

root@kitploit:~
kernel                               userspace
──────                               ─────────
raw_syscalls/sys_enter  ──►  SYSCALL_ENTER map (per-tid scratch)
raw_syscalls/sys_exit   ──►  EVENTS ring buffer (4 MiB)
                                  │
                        poll consumer (tokio::spawn)
                                  │
                       ┌──────────┴──────────┐
                   RawOutput             TuiApp
                 (one line/syscall)   (ratatui TUI)

برامج eBPF مكتوبة بلغة Rust مع aya، وتُجمع إلى bytecode BPF في وقت البناء، ومضمنة في الملف الثنائي. لا تبعيات وقت التشغيل، ولا رؤوس نواة.

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

root@kitploit:~
git clone https://github.com/pandaadir05/snoop
cd snoop

# الليلة مطلوبة فقط لهدف BPF
rustup toolchain install nightly
rustup component add rust-src --toolchain nightly

# bpf-linker يربط كائن eBPF (لا حاجة لـ LLVM النظام)
cargo install bpf-linker --no-default-features

cargo build --release
sudo ./target/release/snoop -p $$

يقوم سكريبت البناء بتجميع برامج eBPF تلقائياً. لا حاجة لخطوة منفصلة.

أثناء التطوير يمكنك أيضاً استخدام xtask:

root@kitploit:~
cargo xtask run -- -p $$

المكدس

الترخيص

MIT أو Apache-2.0، حسب اختيارك.

تنزيل الأداة
  • التقاط TLS — --tls يخطّف SSL_write/SSL_read عبر uprobes لعرض النصوص الصريحة
  • تتبع الكومة — --ltrace يتتبع malloc/free/calloc/realloc
  • تسجيل وإعادة تشغيل — snoop record يحفظ على القرص، snoop view يعيد التشغيل دون اتصال (لا حاجة للصلاحية الجذرية)
  • المقارنة — snoop diff before.snoop after.snoop يُظهر ما تغير بين تشغيلتين
  • Flamegraph — --flamegraph out.svg
  • المفتاحالوظيفة
    qالخروج
    Spaceإيقاف مؤقت / استئناف
    /بحث تزايدي
    fتشغيل/إيقاف مرشح نظام الملفات
    nتشغيل/إيقاف مرشح الشبكة
    cمسح قائمة الأحداث
    Enterإظهار نافذة تفاصيل للحدث المحدد
    ↑ / kالتمرير لأعلى
    ↓ / jالتمرير لأسفل
    G / Endالانتقال لأحدث حدث
    g / Homeالانتقال لأقدم حدث
    الطبقةالكريت
    برامج eBPFaya-ebpf
    مُحمّل eBPFaya
    TUIratatui + crossterm
    CLIclap (derive)
    وقت تشغيل غير متزامنtokio
    Flamegraphinferno