اسکن شبکه و پیدا کردن دستگاه‌های روشن با دستورهای CMD و PowerShell
شبکه

اسکن شبکه و پیدا کردن دستگاه‌های روشن با دستورهای CMD و PowerShell

اگر مدیر شبکه باشی یا فقط بخواهی بدانی چه دستگاه‌هایی به شبکه‌ی خانه یا شرکتت وصل‌اند، لازم نیست حتماً نرم‌افزار سنگینی نصب کنی. ویندوز ابزارهای کافی دارد. در این مقاله با CMD و PowerShell دستگاه‌های روشن (Live Host) شبکه را پیدا می‌کنیم.
هشدار: این دستورها را فقط روی شبکه‌ای اجرا کن که مالکش خودتی یا اجازه‌ی مدیریتش را داری.

نود لایو یعنی چه؟

نود لایو (Live Host) دستگاهی است که روشن و به شبکه متصل است و به درخواست‌ها پاسخ می‌دهد؛ مثل کامپیوتر، پرینتر، دوربین IP یا مودم. شناسایی این دستگاه‌ها اولین قدم برای عیب‌یابی، مدیریت IP و بررسی امنیت شبکه است.

روش اول: دستور ping در CMD

ساده‌ترین راه، فرستادن یک بسته‌ی ICMP به یک آدرس است:
CMD
ping -n 1 192.168.1.10
اگر پاسخ برگشت، دستگاه روشن است. برای بررسی کل محدوده‌ی 192.168.1.1 تا 192.168.1.254 از حلقه استفاده کن:
CMD
for /L %i in (1,1,254) do @ping -n 1 -w 200 192.168.1.%i | find "TTL="
  • پارامتر -n 1 یعنی فقط یک بسته ارسال شود.
  • پارامتر -w 200 یعنی حداکثر ۲۰۰ میلی‌ثانیه منتظر پاسخ بمان.
  • بخش find "TTL=" باعث می‌شود فقط پاسخ‌های موفق نمایش داده شوند.
اگر این دستور را داخل فایل .bat می‌نویسی، به‌جای %i از %%i استفاده کن.

روش دوم: جدول ARP با دستور arp -a

بعد از اجرای ping روی محدوده، سیستم‌عامل آدرس MAC دستگاه‌هایی را که پاسخ داده‌اند ذخیره می‌کند:
CMD
arp -a
مزیت این روش این است که حتی دستگاه‌هایی را نشان می‌دهد که ping را با فایروال بسته‌اند ولی در همان زیرشبکه هستند، چون ARP با فایروال ویندوز بلاک نمی‌شود. آدرس MAC به شناسایی نوع دستگاه هم کمک می‌کند.

روش سوم: دستور Test-Connection در PowerShell

معادل ping در PowerShell، دستور Test-Connection است:
PowerShell
Test-Connection -ComputerName 192.168.1.10 -Count 1 -Quiet
با پارامتر -Quiet فقط True یا False برمی‌گردد. برای اسکن کل محدوده:
PowerShell
1..254 | ForEach-Object {
    $ip = "192.168.1.$_"
    if (Test-Connection -ComputerName $ip -Count 1 -Quiet) { $ip }
}
این روش ترتیبی است و برای ۲۵۴ آدرس ممکن است چند دقیقه طول بکشد.

اسکن سریع‌تر با پردازش موازی

در PowerShell 7 به بالا می‌توانی چند آدرس را هم‌زمان بررسی کنی:
PowerShell 7+
1..254 | ForEach-Object -Parallel {
    $ip = "192.168.1.$_"
    if (Test-Connection -ComputerName $ip -Count 1 -TimeoutSeconds 1 -Quiet) { $ip }
} -ThrottleLimit 50
پارامتر -ThrottleLimit تعداد کارهای هم‌زمان را مشخص می‌کند.

روش چهارم: دستور Get-NetNeighbor

این دستور معادل PowerShell دستور arp -a است:
PowerShell
Get-NetNeighbor -AddressFamily IPv4 | Where-Object State -ne 'Unreachable'
خروجی آدرس IP، آدرس MAC و وضعیت هر همسایه را نشان می‌دهد.

پیدا کردن نام دستگاه

برای تبدیل IP به نام دستگاه در PowerShell:
PowerShell
Resolve-DnsName 192.168.1.10
یا در CMD:
CMD
nslookup 192.168.1.10

بررسی باز بودن یک پورت

گاهی دستگاه روشن است ولی ping جواب نمی‌دهد. با Test-NetConnection پورت یک سرویس را تست کن:
PowerShell
Test-NetConnection -ComputerName 192.168.1.10 -Port 3389
اگر مقدار TcpTestSucceeded برابر True باشد، دستگاه روشن است و آن سرویس (مثلاً Remote Desktop) در دسترس است.

نکات مهم

  1. فایروال: بعضی دستگاه‌ها به ping جواب نمی‌دهند. حتماً خروجی arp -a را هم کنار آن بررسی کن.
  2. محدوده‌ی آی‌پی: با دستور ipconfig آدرس و Subnet Mask خودت را ببین و محدوده را بر اساس آن تنظیم کن. همه‌ی شبکه‌ها از نوع 192.168.1.x نیستند.
  3. زیرشبکه‌های دیگر: ARP فقط دستگاه‌های همان زیرشبکه را نشان می‌دهد.
  4. ابزارهای تخصصی: برای شبکه‌های بزرگ‌تر، ابزارهایی مثل Nmap یا Advanced IP Scanner سریع‌تر و کامل‌ترند.

جمع‌بندی

با دستورهای ping، arp -a، Test-Connection و Get-NetNeighbor بدون نصب هیچ نرم‌افزاری می‌توانی دستگاه‌های روشن شبکه را پیدا کنی. بهترین نتیجه از ترکیب این روش‌ها به دست می‌آید: اول محدوده را ping کن، بعد جدول ARP را بخوان و در پایان با Resolve-DnsName نام دستگاه‌ها را پیدا کن.

من یک "گیک" بودم و هستم . گیک : https://fa.wikipedia.org/wiki/%DA%AF%DB%8C%DA%A9

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *