hiva-network.com

کارگاه تخصصی شبکه - هیوا شبکه

آموزش رایگان

 

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

Network scanner

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

در این آموزش می خواهیم به کمک فرمان هایی که از خط فرمان 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 تحویل می گیریم.

4 – فرمان Net Use

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

5 – فرمان Net View با سوئیچ /all

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

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

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

گام اول :

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

Network Scanner- تصویر 1

 

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 به زبات انگلیسی و کمی قدیمی است، ولی برای شروع بسیار مناسب و متن آن بسیار ساده و روان است.

دانلود PDF آموزش batch-file programming

و اما استفاده از حلقه For در Batch-file :

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


Network Scanner- تصویر 2

 ) 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 ما باید به شکل زیر تغییر کند:

Network Scanner- تصویر 3

این batch-file را اجرا کنید.

خروجی CMD به شکل زیر خواهد شد:

Network Scanner- تصویر 4

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

Network Scanner- تصویر 5

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

Network Scanner- تصویر 6

Network Scanner- تصویر 6-2

توضیح تغییرات :

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

مورد دوم: برای اینکه بفهمیم اسکنر بر روی کدام IP در حال کار است این خط را اضافه کردیم.

مورد سوم: برای اینکه اطلاعات خروجی خواناتر شوند برای خروجی هر مرحله توضیحی هم در فایل scan-result.txt قرار می گیرد

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

خروجی CMD پس از تغییر (با مورد قبل مقایسه کنید):

 

Network Scanner- تصویر 7

فایل scan-result.txt :

Network Scanner- تصویر 8

سخن پایانی:

شما می توانید با افزودن دستورات بیشتر، این اسکنر را دقیقتر و حرفه ای تر کنید. همچنین یکی از مهمترین دلایل کندی اسکنر خط مربوط به فرمان net useاست که برای گرفتن پاسخ از مقصد، حدود 60 ثانیه منتظر می ماند و در مرحله بعدی یعنی فرمان net viewحدود 10 ثانیه. بنابراین به ازای هر IP غیر فعال در شبکه، اسکن شما حداقل 1 دقیقه کندتر می شود. برای حذف این کندی می توانید از فرمان شرطی IF استفاده کنید به طوری که اگر IP مورد نظر ping شد آنگاه فرمان net use و net view را اجرا کن.

امیدواریم که این آموزش برای شما همراهان مفید باشد.

با سپاس از همراهی شما

هیوا شبکه

دانلود رایگان PDF با فرمان های CMD ، یک Network Scanner ساده بسازید!
                                             twitter.com/hivanetwork                             


روزی یک خط، فرمان با خط فرمان

حافظه کش DNS در کامپیوتر رو چطوری می شه پاک کرد؟ اینطوری :
Ipconfig /FlushDNS

بیشتر بگو!

به دوستانتان هم بگویید...

Submit to FacebookSubmit to Google PlusSubmit to TwitterSubmit to LinkedIn

دوره های جدید

 

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

telegram Hivashabakeinstagram hiva.network

تجهیزات شبکه

آمار بازدید سایت

3835850
امروز
هفته جاری
ماه جاری
بازدید کل
1760
12184
35597
3835850

آی‌پی شما: 23.20.129.162
امروز: ج، 26 آبان 1396

هر جای ایران که هستید...
ما پشتیبان و مشاور شما هستیم...

 

سامانه مشاوره و پشتیبانی

سازمان ها و ادارات ...

کارخانه ها و شرکت ها ...

 

تا راه اندازی و نگهداری از

سرویس های شبکه شما ...

با ما در تماس باشید ...

 

تلفن: 33241269-13

تلفن: 33260041-13

ایمیل: info@hiva-network.com

محصول ویژه برای شما

در جستجوی محصول آموزشی خاصی هستید اما هرچه جستجو می کنید آن را نمی یابید ؟

به ما بگویید...