العودة إلى التحديثات
New releaseAug 20, 2026

whosthere v0.8.3

أداة اكتشاف الشبكة المحلية (LAN) بواجهة مستخدم تفاعلية نصية (TUI) مكتوبة بلغة Go. اكتشف شبكتك المحلية واستكشفها وافهمها بطريقة بديهية. طرق طرق.. من هناك؟ 🚪

مشاركة

Whosthere

Go Report Card Go Version License GitHub Downloads (all assets, all releases) GitHub Release GitHub Repo stars

أداة اكتشاف شبكة المنطقة المحلية (LAN) مع واجهة مستخدم طرفية تفاعلية (TUI) مكتوبة بلغة Go. اكتشف واستكشف وافهم شبكتك المحلية بطريقة بديهية.

يقوم Whosthere بإجراء مسح غير مميز ومتزامن باستخدام ماسحات mDNS وSSDP. بالإضافة إلى ذلك، يقوم بمسح الشبكة الفرعية المحلية عن طريق محاولة اتصالات TCP/UDP لتحفيز تحليل ARP، ثم يقرأ ذاكرة التخزين المؤقت ARP لتحديد الأجهزة على شبكتك المحلية. تعمل هذه التقنية على ملء ذاكرة التخزين المؤقت ARP دون الحاجة إلى صلاحيات مرتفعة. يتم تحسين جميع الأجهزة المكتشفة من خلال بحث OUI لعرض الشركات المصنعة عند توفرها.

يوفر Whosthere طريقة ودية وبديهية للإجابة على السؤال الذي يطرحه كل مسؤول شبكة: "من هناك على شبكتي؟"

demo gif

الميزات

  • واجهة مستخدم تفاعلية (TUI): تنقل واستكشف الأجهزة المكتشفة بشكل بديهي.
  • سريع ومتزامن: يستخدم طرق اكتشاف متعددة في آن واحد.
  • لا يتطلب صلاحيات مرتفعة: يعمل بالكامل في مساحة المستخدم.
  • إثراء الأجهزة: يستخدم بحث OUI لعرض الشركات المصنعة للأجهزة.
  • ماسح المنافذ المدمج: اكتشاف الخدمات الاختياري على المضيفين الموجودين (امسح الأجهزة بإذن فقط!).
  • وضع الخفي مع واجهة برمجة تطبيقات HTTP: يعمل في الخلفية ويتكامل مع أدوات أخرى.
  • السمات والتكوين: خصص المظهر والسلوك عبر ملف تكوين YAML.

التثبيت

عبر Homebrew باستخدام brew:

brew install whosthere

على NixOS باستخدام nix:

nix profile install nixpkgs#whosthere

على Arch Linux باستخدام yay:

yay -S whosthere-bin

إذا لم يكن مدير الحزم الخاص بك مدرجًا، يمكنك دائمًا التثبيت باستخدام Go:

go install github.com/ramonvermeulen/whosthere@latest

أو البناء من المصدر:

git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build

بالإضافة إلى ذلك، يمكنك تنزيل الملفات الثنائية المبنية مسبقًا من صفحة الإصدارات.

الاستخدام

قم بتشغيل الواجهة التفاعلية (TUI) للاكتشاف التفاعلي:

whosthere

قم بتشغيله كواجهة سطر أوامر لإجراء مسح واحد وعرض النتائج:

whosthere scan -t 5

إخراج النتائج إلى ملف JSON:

whosthere scan -t 5 --json --pretty > devices.json

قم بتشغيله كخفي مع واجهة برمجة تطبيقات HTTP:

whosthere daemon --port=8080

يمكن العثور على خيارات سطر الأوامر الإضافية بتشغيل:

whosthere --help

اختصارات المفاتيح (TUI)

المفتاحالإجراء
/بدء البحث بواسطة التعبير النمطي
kلأعلى
jلأسفل
gالانتقال إلى الأعلى
Gالانتقال إلى الأسفل
yنسخ عنوان IP للجهاز المحدد
Yنسخ عنوان MAC للجهاز المحدد
enterعرض تفاصيل الجهاز
CTRL+tتبديل محدد السمة
CTRL+iتبديل محدد الواجهة
CTRL+c/qإيقاف التطبيق
ESCمسح البحث / العودة
p (عرض التفاصيل)بدء مسح المنافذ على الجهاز
tab (عرض مشروط)تبديل اختيار الزر

التكوين

يدعم Whosthere طرق تكوين متعددة بالأولوية التالية (من الأعلى إلى الأقل):

  1. خيارات سطر الأوامر - أعلى أولوية. راجع whosthere --help للخيارات المتاحة.
  2. متغيرات البيئة - بادئة بـ WHOSTHERE__. راجع التكوين عبر متغيرات البيئة.
  3. ملف التكوين - ملف تكوين YAML. راجع ملف التكوين.
  4. القيم الافتراضية - القيم الافتراضية الاحتياطية. راجع DefaultConfig() في config.go.

ملف التكوين

يبحث Whosthere عن ملف التكوين بالترتيب التالي، باستخدام أول ملف يتم العثور عليه:

  1. المسار المحدد عبر خيار --config أو متغير البيئة WHOSTHERE_CONFIG
  2. $XDG_CONFIG_HOME/whosthere/config.yaml (إذا تم تعيين XDG_CONFIG_HOME)
  3. ~/.config/whosthere/config.yaml (الموقع الافتراضي)

مثال على التكوين:

# Uncomment the next line to configure a specific network interface - uses OS default if not set
# network_interface: eth0

# When enabled, devices from all network interfaces are shown and persist when switching interfaces
# Note: if two interfaces share the same subnet (e.g. both use 192.168.1.x), devices may get merged
# since they are identified by IP address. Use with caution on overlapping subnets.
all_interfaces: false

# How often to run discovery scans
scan_interval: 20s

# Maximum timeout for each scan, recommended to be less than the scan interval
scan_timeout: 10s

scanners:
  mdns:
    enabled: true
  ssdp:
    enabled: true
  arp:
    enabled: true

sweeper:
  enabled: true
  interval: 5m
  timeout: 20s

port_scanner:
  timeout: 5s
  # List of TCP ports to scan on discovered devices
  tcp: [21, 22, 23, 25, 80, 110, 135, 139, 143, 389, 443, 445, 993, 995, 1433, 1521, 3306, 3389, 5432, 5900, 8080, 8443, 9000, 9090, 9200, 9300, 10000, 27017]

splash:
  enabled: true
  delay: 1s

theme:
  # When disabled, the TUI will use the terminal it's default ANSI colors
  # Also see the NO_COLOR environment variable to completely disable ANSI colors
  enabled: true

  # See the complete list of available themes at https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go
  # Set name to "custom" to use the custom colors below
  # For any color that is not configured it will take the default theme value as fallback
  name: default

  # Disable ANSI colors completely, overrides theme.enabled
  # Can also be set via NO_COLOR or WHOSTHERE__THEME__NO_COLOR environment variables
  # no_color: false

  # Custom theme colors (uncomment and set name: custom to use)
  # primitive_background_color: "#000a1a"
  # contrast_background_color: "#001a33"
  # more_contrast_background_color: "#003366"
  # border_color: "#0088ff"
  # title_color: "#00ffff"
  # graphics_color: "#00ffaa"
  # primary_text_color: "#cceeff"
  # secondary_text_color: "#6699ff"
  # tertiary_text_color: "#ffaa00"
  # inverse_text_color: "#000a1a"
  # contrast_secondary_text_color: "#88ddff"

التكوين عبر متغيرات البيئة

أي خيار تكوين متاح في ملف تكوين YAML يمكن تعيينه عبر متغيرات البيئة باستخدام البادئة WHOSTHERE__ (لاحظ الشرطة السفلية المزدوجة). يتم فصل مفاتيح التكوين المتداخلة بشرطة سفلية مزدوجة، والمفاتيح غير حساسة لحالة الأحرف.

أمثلة:

  • WHOSTHERE__SPLASH__ENABLED=false - تعطيل شاشة البداية، أي ما يعادل splash.enabled: false في تكوين YAML
  • WHOSTHERE__SPLASH__DELAY=2s - ضبط تأخير شاشة البداية إلى ثانيتين، أي ما يعادل splash.delay: 2s في تكوين YAML
  • WHOSTHERE__SCAN_INTERVAL=30s - ضبط فترة المسح إلى 30 ثانية، أي ما يعادل scan_interval: 30s في تكوين YAML
  • WHOSTHERE__SCANNERS__MDNS__ENABLED=false - تعطيل ماسح mDNS، أي ما يعادل scanners.mdns.enabled: false في تكوين YAML
  • WHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - تعيين منافذ TCP مخصصة للمسح، أي ما يعادل port_scanner.tcp: [80, 443, 8080] في تكوين YAML
  • WHOSTHERE__THEME__NAME=cyberpunk - تعيين السمة إلى cyberpunk، أي ما يعادل theme.name: cyberpunk في تكوين YAML

متغيرات البيئة

متغيرات البيئة العامة

المتغيرالوصف
WHOSTHERE_CONFIGالمسار إلى ملف التكوين، لتتمكن من تجاوز الموقع الافتراضي.
WHOSTHERE_LOGتعيين مستوى التسجيل (مثل debug, info, warn, error). القيمة الافتراضية info.
NO_COLORتعطيل ألوان ANSI في واجهة TUI.

وضع الخفي واجهة برمجة تطبيقات HTTP

عند تشغيل Whosthere في وضع الخفي، فإنه يعرض واجهة برمجة تطبيقات HTTP بسيطة جدًا مع نقاط النهاية التالية:

الطريقةنقطة النهايةالوصف
GET/devicesالحصول على قائمة بجميع الأجهزة المكتشفة
GET/device/{ip}الحصول على تفاصيل جهاز معين
GET/healthفحص الصحة

السمات

يمكن تكوين السمة عبر ملف التكوين، أو في وقت التشغيل عبر اختصار المفاتيح CTRL+t. يمكن العثور على قائمة كاملة بالسمات المتاحة هنا، لا تتردد في فتح طلب سحب (PR) لإضافة سمتك الخاصة!

مثال على تكوين السمة:

theme:
  enabled: true
  name: cyberpunk

عند ضبط name على custom، يمكن استخدام خيارات الألوان الأخرى لإنشاء سمة مخصصة خاصة بك. عند ضبط خيار enabled على false، ستستخدم الواجهة التفاعلية (TUI) ألوان ANSI الافتراضية للمحطة الطرفية. عند تعيين متغير البيئة NO_COLOR، سيتم تعطيل جميع ألوان ANSI.

التسجيل

تتم كتابة السجلات إلى دليل الحالة الخاص بالتطبيق:

  • $XDG_STATE_HOME/whosthere/app.log (إذا تم تعيين XDG_STATE_HOME)
  • ~/.local/state/whosthere/app.log (احتياطي لينكس/ماك)
  • %LOCALAPPDATA%/whosthere/app.log (احتياطي ويندوز)

عند عدم التشغيل في وضع TUI، تتم كتابة السجلات أيضًا إلى وحدة التحكم.

المنصات

Whosthere مدعوم على المنصات التالية:

  • Linux
  • macOS
  • Windows

المشكلات المعروفة

لكي تعمل وظيفة الحافظة، يتم استخدام fork من go-clipboard. تأكد من تثبيت أداة النسخ المناسبة لنظام التشغيل لديك:

نظام التشغيلأدوات النسخ المدعومة
Darwinpbcopy
Windowsclip.exe
Linux/FreeBSD/NetBSD/OpenBSD/DragonflyX11: xsel, xclip
Wayland: wl-copy

إخلاء مسؤولية

Whosthere مخصص للاستخدام على الشبكات التي لديك إذن لإجراء اكتشاف ومسح الشبكة عليها، مثل شبكة منزلك الخاصة. قد يكون المسح غير المصرح به للشبكات غير قانوني وغير أخلاقي. احصل دائمًا على الإذن المناسب قبل استخدام هذه الأداة على أي شبكة.

تم إنشاء هذه الأداة بشكل أساسي للأغراض التعليمية واستكشاف الشبكة المنزلية. على الرغم من أنها وظيفية ومفيدة، إلا أنه لا ينبغي اعتبارها حلاً احترافيًا لمراقبة الشبكة. تعتمد النتائج على تقنيات المسح غير المميزة وقد لا تكون شاملة. لتحليل الشبكة الحرج أو تقييمات الأمان، فكر في استخدام أدوات احترافية راسخة مع دعم رسمي.

المساهمة

المساهمات والاقتراحات مثل طلبات الميزات أو تقارير الأخطاء أو التحسينات مرحب بها! لا تتردد في فتح مشكلات أو إرسال طلبات سحب على مستودع GitHub. يرجى التأكد من مناقشة أي تغييرات كبيرة في مشكلة GitHub قبل تنفيذها.

الفئات