1. برای کسب اطلاعات بیشتر در ساعات 9 الی 13 و 16 الی 18 با شماره 08138270182 یا 09353637799 تماس حاصل فرمایید.
    آدرس ایمیل: info@wsnlab.ir
    آدرس کانال تلگرام http://telegram.me/gloriot
  2. بدین وسیله به اطلاع پژوهشگران محترم می رسانیم که آزمایشگاه اینترنت اشیاء ایران راه اندازی شد. از این پس می توانید با شماره تلفن همراه 09353637799 با لابراتوار در تماس باشید.

با فرمان های CMD ، یک Network Scanner ساده بسازید!

شروع موضوع توسط هیوا نوآوران داده گستر 25/7/15 در انجمن انجمن شبکه های کامپیوتری

تلفن سفارش: 08138311237 تلفن سفارش: 08138311237
  1. هیوا نوآوران داده گستر کاربر معمولی

    تاریخ عضویت:
    27/1/14
    تعداد ارسال ها:
    111
    تشکر شده:
    3
    امتیاز دستاورد:
    18
    وب سایت:


    با فرمان های CMD ، یک Network Scanner ساده بسازید!

    [IMG]

    سلام به همه شما همراهان همیشگی هیوا

    در این آموزش می خواهیم به کمک فرمان هایی که از خط فرمان CMD یاد گرفتیم یک Scanner ساده نیمه حرفه ای بسازیم. اما قبل از ساخت این اسکنر باید چند نکته را در نظر بگیرید:

    * در ساخت این اسکنر فقط از فرمان های CMD استفاده می کنیم .
    * این اسکنر ممکن است خیلی دقیق نباشد (و شاید هم باشد!)
    * این اسکنر خیلی سریع نیست.
    * هدف از ساخت این اسکنر این است که فقط یک اسکنری ساخته باشیم!
    * این اسکنر مناسب برای کلاس C است. شما می توانید آنرا برای سایر کلاس ها توسعه دهید.

    خب برای اینکه بخواهیم یک Network Scanner بسازیم، باید مشخص کنیم که این اسکنر قرار است چه اطلاعاتی برای ما جمع آوری کند؟

    1- پیدا کردن کلاینت های فعال شبکه
    2- به دست آوردن نام کامپیوتر آن ها
    3- به دست آوردن MAC Address
    4- بررسی دسترسی به منابع Share
    5- لیست منابع Share شده هر کلاینت
    6- ذخیره تمامی اطلاعاتی به دست آمده در یک فایل ساده TXT

    خب، برای اسکنر ساده ما فعلا همین موارد کافی است. بعدا که حرفه ای تر شدیم می توانیم این اسکنر را توسعه دهیم و آن را کامل تر و بهتر کنیم. ( بزرگ فکر کن، کوچک عمل کن )


    مواد لازم برای ساخت یک عدد اسکنر ساده:
    0 – یک فایل Text خالی
    برای نوشتن فرمان ها و ایجاد Batch-file
    1 – فرمان Ping
    ساده ترین راه برای پیدا کردن کلاینت های فعال شبکه Ping کردن آن هاست. البته یکی از دلایل غیر دقیق شدن اسکنر ما هم همین است! این جا را بخوانید
    2 – فرمان Ping با سوئیچ /a

    این سوئیچ نام کامپیوتر مقصد را به ما می دهد.
    3 - فرمان ARP با سوئیچ /a

    در آموزش های قبل 8 روش برای به دست آوردن MAC Address بدون نرم افزار جانبی را قبلا بیان کردیم که روش بالا یکی از آن هاست. IP یا نام کامپیوتر را می دهیم و MAC Address تحویل می گیریم.

    برای بررسی دسترسی به منابع Share به کارمان می آید. همچنین به ما در دقیقتر شدن شناسایی کلاینت های فعال شبکه بهتر کمک می کند.

    5 – فرمان Net View با سوئیچ /all
    فرمان Net view بدون هیچ سوئیچی لیست Computer Name های فعال شبکه را نشان می دهد. اگر با سوئیچ /all استفاده شود می تواند لیست منابع Share شده هر کامپیوتر را نشان دهد.

    6 – برای ذخیره اطلاعات در یک فایل TXTاز ترفند >>file.txt استفاده می کنیم.

    طرز تهیه اسکنر ساده:

    گام اول :
    ابتدا فایل text خالی را باز کنید و فرمان های زیر را در آن قرار دهید ( مانند تصویر )

    [IMG]

    ping 192.168.1.1 -n 3 -l 0
    ping -a 192.168.1.1 -n 1 -l 0
    arp -a 192.168.1.1
    net use \\192.168.1.1
    net view /all \\192.168.1.1



    گام دوم:
    این فایل text را با نام network-scanner.bat ذخیره کنید و یک بار آن را اجرا کنید.

    توضیح خط اول :
    به IP مقصد 3 بسته ICMP با سایز 0 بایت ارسال می کند. برای اینکه سرعت ping و در نتیجه سرعت Scanner ما بیشتر شود این کار را کردیم. بهتر است تعداد بسته ها حداقل 3 باشد. همچنین به ازای هر 1 بسته بیشتر، حداقل 1 میلی ثانیه به ازای هر کلاینت فعال و 1 ثانیه به ازای هر کلاینت خاموش در شبکه به زمان اسکن افزوده می شود.

    توضیح خط دوم :
    یک بسته دیگر به IP مقصد ارسال می کنیم تا Computer Name آن را به دست آوریم.
    توضیح خط سوم :
    با این فرمان MAC Address مقصد را به دست می آوریم.

    توضیح خط چهارم :
    به کامپیوتر مقصد متصل می شویم. برای دیدن و استفاده کردن از منابع Share باید این فرمان را بزنیم. این فرمان فقط در یک حالت موفقیت آمیز خواهد بود که کامپیوتر مقصد لزوما کامپیوتر باشد ( پرینتر یا روتر نباشد) و ویندوزی باشد و Resource Sharing آن فعال باشد و Password Protected Sharing آن Turn Off باشد. در غیر این صورت نمی توانیم لیست منابع Share آن را ببینیم. البته با داشتن Username و password مقصد و کمی تغییرات در کد اسکنر می توانیم آن ها را هم اسکن کنیم.
    توضیح خط پنجم :

    در صورتی که فرمان قبل موفقیت آمیز باشد، این فرمان با موفقیت اجرا خواهد شد. این فرمان لیست تمامی منابع Share شده توسط IP مقصد را نمایش می دهد.

    همان طور که دیدید (و می دانستید) دستورات درون این Batch-file فقط برای آدرس 192.168.1.1 اجرا می شود. حال اگر بخواهیم این دستورات برای تمام IP های درون شبکه 192.168.1.0 اجرا شوند چه باید بکنیم ؟ 2 راه حل داریم: این 5 خط کد را برای سایر IP های شبکه 192.168.1.0 تکرار کنیم (copy and Paste) یا از یک حلقه For ساده استفاده کنیم و تمام!
    راه حل اول را که همگی بلد هستیم. پس می رویم سراغ راه حل دوم. استفاده از حلقه For در Batch-file مربوط از سرفصل های Batch-file Programming است. در صورتی که علاقه مند به یادگیری این مباحث هستید می توانید PDF آموزش Batch-file Programming را از لینک زیر دانلود کنید. این PDF به زبات انگلیسی و کمی قدیمی است، ولی برای شروع بسیار مناسب و متن آن بسیار ساده و روان است.


    و اما استفاده از حلقه For در Batch-file :
    خب ما می خواهیم 5 خط کد درون network-scanner.bat برای تمامی IP های درون شبکه 192.168.1.0 اجرا شود؛ یعنی 254 بار. پس نیاز به یک متغیر داریم که از 1 تا 254 تغییر کند. در این صورت ساختار حلقه For و Batch-File ما به شکل زیر خواهد شد:


    [IMG]
    ) For /L %%x in (1,1,254) Do
    ping 192.168.1.%%x -n 3 -l 0
    ping -a 192.168.1.%%x -n 1 -l 0
    arp -a 192.168.1.%%x
    net use \\192.168.1.%%x
    net view /all \\192.168.1.%%x
    (

    توضیح خط اول:
    یعنی برای متغیر عددی x که مقدار اولیه آن 1 است و 1 واحد-1 واحد به آن افزوده می شود تا 254، انجام بده کارهای داخل پرانتز را.
    خب پس از ذخیره کردن Batch-File، آنرا اجرا کنید.

    نتیجه :

    به شرط اینکه فرمان ها را درست نوشته باشید و Batch-file بدون مشکل اجرا شود به 2 نتیجه می رسیم:

    1 اینکه پس از پایان Batch-File ، خط فرمان خودکار بسته می شود.
    راه حل : برای حل مورد اول، در انتهای batch-file عبارت pause را اضافه کنید.
    2 اینکه این اسکنر بسیار کند است!

    راه حل : یکی از مهم ترین دلایلی که باعث کند شدن اسکنر ما می شود عدم اجرای همزمان حلقه For برای هر IP است. یعنی به جای اینکه مثلا به طور همزمان عمل ping شدن برای IP های 1 تا 20 اجرا شود، ابتدا برای 1 و بعد 2 و بعد ... در این مورد فعلا کاری نمی کنیم!

    دلیل بعدی که تا حدودی تاثیر گذار است، نمایش دستورات درون batch-file و خروجی آن ها در خط فرمان است. برای جلوگیری از نمایش دستورات در خط فرمان، کافیست عبارت @echo offرا در اولین خط برنامه قرار دهید.

    برای آن که خروجی در خط فرمان نمایش داده نشود، با ترفند ساده خط فرمانی، آن را به یک فایل txt هدایت می کنیم تا بتوانیم بعدا نیز آن را بررسی کنیم. کافیست در پایان هر دستور عبارت >>C:\hiva\scan-result.txtرا قرار دهیم تا خروجی به فایل scan-result.txt منتقل شود.

    و آخرین راه حل برای حل کندی، کاهش محدوده IP است. یعنی اگر شبکه شما 20 کلاینت دارد می توانید عدد اسکن را بجای 254 به 30 تغییر دهید.

    پس کد batch-file ما باید به شکل زیر تغییر کند:

    [IMG]

    این batch-file را اجرا کنید.
    خروجی CMD به شکل زیر خواهد شد:

    [IMG]

    بخشی از محتویات فایل scan-result.txt:

    [IMG]

    اسکنر ما آماده کار است و شما می توانید برای اسکن کردن شبکه از آن استفاده کنید اما برای اینکه اسکن ما کمی حرفه ای تر و خروجی آن هدفمندتر و تمیزتر شود بهتر است تغییرات زیر را در کد آن به کار ببریم:

    [IMG]
    [IMG]

    توضیح تغییرات :
    مورد اول: متغیری با نام logfile ایجاد کردیم که آدرس محل ذخیره خروجی را در آن قرار دادیم و در پایان هر دستور به جای اینکه کل آدرس محل scan-result.txt را بنویسیم، فقط این متغیر را می نویسیم.
    مورد دوم: برای اینکه بفهمیم اسکنر بر روی کدام IP در حال کار است این خط را اضافه کردیم.

    مورد سوم: برای اینکه اطلاعات خروجی خواناتر شوند برای خروجی هر مرحله توضیحی هم در فایل scan-result.txt قرار می گیرد
    مورد چهارم: برای اینکه فقط اطلاعات موفقیت آمیز و به درد بخور در scan-result ذخیره شود ( نه Error ها و اطلاعات غیر ضرروی و بی اهمیت) از دستور findکمک گرفتیم تا برای هر دستور فقط موارد مفید را پیدا کند و در scan-result.txt ذخیره کند.

    لطفاً انجمن را به دوستان خود معرفی نمایید تا محیطی پویا تر داشته باشیم.
  2. مشاوره، آموزش و پیاده سازی پروژه های شبکه های موردی، شبکه حسگر بی سیم و انواع شبکه های کامپیوتری . برای کسب اطلاعات بیشتر با شماره 08138270182 تماس بگیرید. .

به اشتراک بگذارید