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

عبر 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
يدعم Whosthere طرق تكوين متعددة بالأولوية التالية (من الأعلى إلى الأقل):
whosthere --help للخيارات المتاحة.WHOSTHERE__. راجع التكوين عبر متغيرات البيئة.DefaultConfig() في config.go.يبحث Whosthere عن ملف التكوين بالترتيب التالي، باستخدام أول ملف يتم العثور عليه:
--config أو متغير البيئة WHOSTHERE_CONFIG$XDG_CONFIG_HOME/whosthere/config.yaml (إذا تم تعيين XDG_CONFIG_HOME)~/.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 في تكوين YAMLWHOSTHERE__SPLASH__DELAY=2s - ضبط تأخير شاشة البداية إلى ثانيتين، أي ما يعادل splash.delay: 2s في تكوين YAMLWHOSTHERE__SCAN_INTERVAL=30s - ضبط فترة المسح إلى 30 ثانية، أي ما يعادل scan_interval: 30s في تكوين YAMLWHOSTHERE__SCANNERS__MDNS__ENABLED=false - تعطيل ماسح mDNS، أي ما يعادل scanners.mdns.enabled: false في تكوين YAMLWHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - تعيين منافذ TCP مخصصة للمسح، أي ما يعادل port_scanner.tcp: [80, 443, 8080] في تكوين YAMLWHOSTHERE__THEME__NAME=cyberpunk - تعيين السمة إلى cyberpunk، أي ما يعادل theme.name: cyberpunk في تكوين YAMLعند تشغيل Whosthere في وضع الخفي، فإنه يعرض واجهة برمجة تطبيقات HTTP بسيطة جدًا مع نقاط النهاية التالية:
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
| GET | /devices | الحصول على قائمة بجميع الأجهزة المكتشفة |
يمكن تكوين السمة عبر ملف التكوين، أو في وقت التشغيل عبر اختصار المفاتيح 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 مدعوم على المنصات التالية:
لكي تعمل وظيفة الحافظة، يتم استخدام fork من go-clipboard. تأكد من تثبيت أداة النسخ المناسبة لنظام التشغيل لديك:
| نظام التشغيل | أدوات النسخ المدعومة |
|---|---|
| Darwin | pbcopy |
| Windows |
Whosthere مخصص للاستخدام على الشبكات التي لديك إذن لإجراء اكتشاف ومسح الشبكة عليها، مثل شبكة منزلك الخاصة. قد يكون المسح غير المصرح به للشبكات غير قانوني وغير أخلاقي. احصل دائمًا على الإذن المناسب قبل استخدام هذه الأداة على أي شبكة.
تم إنشاء هذه الأداة بشكل أساسي للأغراض التعليمية واستكشاف الشبكة المنزلية. على الرغم من أنها وظيفية ومفيدة، إلا أنه لا ينبغي اعتبارها حلاً احترافيًا لمراقبة الشبكة. تعتمد النتائج على تقنيات المسح غير المميزة وقد لا تكون شاملة. لتحليل الشبكة الحرج أو تقييمات الأمان، فكر في استخدام أدوات احترافية راسخة مع دعم رسمي.
المساهمات والاقتراحات مثل طلبات الميزات أو تقارير الأخطاء أو التحسينات مرحب بها! لا تتردد في فتح مشكلات أو إرسال طلبات سحب على مستودع GitHub. يرجى التأكد من مناقشة أي تغييرات كبيرة في مشكلة GitHub قبل تنفيذها.
| المفتاح | الإجراء |
|---|
/ | بدء البحث بواسطة التعبير النمطي |
k | لأعلى |
j | لأسفل |
g | الانتقال إلى الأعلى |
G | الانتقال إلى الأسفل |
y | نسخ عنوان IP للجهاز المحدد |
Y | نسخ عنوان MAC للجهاز المحدد |
enter | عرض تفاصيل الجهاز |
CTRL+t | تبديل محدد السمة |
CTRL+i | تبديل محدد الواجهة |
CTRL+c/q | إيقاف التطبيق |
ESC | مسح البحث / العودة |
p (عرض التفاصيل) | بدء مسح المنافذ على الجهاز |
tab (عرض مشروط) | تبديل اختيار الزر |
| المتغير | الوصف |
|---|
WHOSTHERE_CONFIG | المسار إلى ملف التكوين، لتتمكن من تجاوز الموقع الافتراضي. |
WHOSTHERE_LOG | تعيين مستوى التسجيل (مثل debug, info, warn, error). القيمة الافتراضية info. |
NO_COLOR | تعطيل ألوان ANSI في واجهة TUI. |
| GET | /device/{ip} | الحصول على تفاصيل جهاز معين |
| GET | /health | فحص الصحة |
clip.exe |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11: xsel, xclip Wayland: wl-copy |