# مباحث متفرقه برنامه نویسی > تالار های مرتبط با شبکه و امنیت > حرفه ای: با فرمان های CMD ، یک Network Scanner ساده بسازید!

## twinkle

*
با فرمان های* *CMD** ، یک* *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 خالی را باز کنید و فرمان های زیر را در آن قرار دهید ( مانند تصویر )



*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 ما به شکل زیر خواهد شد:



* ) 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* را اضافه کنید.


منبع : سایت هیوا شبکه

----------

