تازه های سایت

شناسایی کلیه سیستم های آنلاین داخل شبکه – رویکرد آسان (قسمت اوّل)

بسم الله الرّحمن الرّحیم

سلام دوستان

چند روز پیش یه مقاله نوشتم در مورد شناسایی کلیه سیستم های آنلاین داخل شبکه  و تو سایت code project ثبتش کردم. دوست داشتم که تو یه سایت ایرانی هم این مقااله رو قرار بدم. یکی از سایت هایی که مدنظرم بود همین سایت Qtips بود. با صحبتایی که با آقا سعید داشتم قرار شد این مقاله رو اینجا قرار بدم. البته به زبان شیرین فارسی! به خاطر طولانی بودن مقاله، اونو به دو قسمت تقسیم کردم.

حالا کم کم بریم سراغ مقاله.

یک نگاه: در Dll طراحی شده این قابلیت وجود دارد که همه ی آدرس IPهای آنلاین داخل شبکه شناسایی شوند. علاوه بر dll، یک پروژه نمونه هم برای دانلود گذاشته شده که می توانید از آن به راحتی استفاده کنید.

۱- مقدمه

یکی از بزرگترین مشکلات برنامه نویس های شبکه، پیدا کردن بک تابع آماده ای است که همه ی سیستم های آنلاین داخل شبکه را شناسایی کند. یکی از بزرگترین مشکلات من هم همین بود که وقت زیادی را صرف خودش کرد. جستجوهای زیادی انجام شد ولی تابع قابل قبولی پیدا نشد. یکی از دلایلی که من را مجبور به نوشتن این مقاله کرد همین موشوع بود. زمانیکه شما این مقاله را می خوانید، یک dll آماده دارید. پس دیگر نیازی نیست که وقت خودتان را تلف کنید!

در این مقاله من سعی دارم رویکردهای های مختلف پیدا کردن آدرس IPهای فعال داخل شبکه را به همراه مزایا و معایب آن ها معرفی کنم و در آخر بهترین روش را انتخاب و آن را پیاده سازی نمایم. شما می توانید فایل های .dll و .lib (هم برای Debug و هم برای Release)، هدر فایل های مربوط و پروژه نمونه را از انتهای این مقاله دانلود بفرمائید.

۱-۱ رویکرد مبتنی بر ping

در این رویکرد، ما به همه ی آدرس IPهای داخل subnet، بسته های icmp می فرستیم یا به عبارتی همه ی آدرس IPها را پینگ می کنیم. اگر جوابی دریافت کردیم متوجه می شویم آن آدرس IP هم اکنون فعال است.

پیاده سازی این رویکرد آسان است. شما نیازی نیست خیلی کدنویسی کنید. فقط کافیست Command Propmt را با استفاده از QProcess اجرا نمائید.

این رویکرد یک رویکرد قابل اعتماد نیست! در بسیاری از شبکه ها بسته های UDP مخصوصا بسته های Ping بلاک می شوند. پس این رویکرد مقبول نیست.

۱-۲ رویکرد مبتنی بر Nmap

در این رویکرد، ما از نرم افزار Nmap برای شناسایی کلیه آدرس IPهای فعال استفاده می کنیم. این رویکر دنیز همانند رویکرد قبلی، پیاده سازی آسانی دارد به خاطر اینکه فقط کافیست از Command Prompt اسفتفاده کنید. برای شناسایی کلیه آدرس IPهای فعال داخل شبکه کافیست دستور زیر را بزنید:

به عنوان مثال:

در این ویدئوی آموزشی؛ شما یاد میگیرید که چطور می توانید  در Qt از Nmap استفاده کنید:

آموزش استفاده از Nmap در Qt

(این فیلم با مقداری تفاوت مشابه فیلمی است که در یوتیوب آپلود کردم. به همین خاطر به انگلیسی نوشته شده)

بزرگترین عیب این رویکرد، سربار اسفاده از Nmap می باشد. به خاطر اینکه هرجایی که نرم افزار اصلیتان را نصب کردید، مجبورید Namp را هم نصب کنید! خیلی منطقی نیست!

۱-۳ رویکرد مبتنی بر ARP

بهترین رویکرد تشخیص کلیه آدرس IPهای فعال داخل شبکه همین رویکرد است. در این رویکرد ما بسته های ARP Requst را به کلیه آدرس IPهای ممکن داخل subnet می فرستیم و منتظر پاسخ ها می مانیم. زمانیکه یک بسته ARP Reply دریافت کردیم، بدین معناست که فرستنده ی بسته آنلاین است. بعضی از نرم افزارهای معروف مانند Cain and Abel و Nmap از این رویکرد استفاده می کنند.

۱-۳-۱ بسته های ARP چه بسته هایی هستند؟

هر سیستم داخل شبکه دارای یک آدرس در لایه دوم و یک آدرس در لایه سوم می باشد. وظیفه بسته های ARP پیدا کردن آدرس لایه دوم از روی لای سوم است و بالعکس می باشد.

۱-۳-۲ ساختار بسته های ARP

دو نوع مهم بسته های ARP بسته های ARP Request و بسته های ARP Reply هستند. در بسته های ARP Request فرستنده می گوید کسی که فلان آدرس IP را دارد، آدرس MAC اش را برای من بفرستد! و این درخواست را به همه ی سیستم های داخل شبکه broadcast می کند. کسی آدرس IP مذکور را دارد با دریافت این بسته آدرس MAC خود را داخل بسته ARP Reply می گذارد و فقط برای درخواست کننده ارسال می کند. در زیر ساختار بسته های ARP را می بینید:

اگر فیلد OP صفر باشد بسته از نوع ARP Request است و اگر یک باشد بسته از نوع ARP Reply خواهد بود. شما می توانید خودتان نیز به بررسی سایر فیلدها فوق بپردازید.

من بسته های ARP Request را در dllای که به مقاله پیوست کردم ایجاد می کنم. بنابراین نیازی نیست که خیلی با بسته های ARP سروکار داشته باشید.

لطفا منتظر قسمت دوم مقاله بمانید.

ان شاء الله در قسمت دوم با یک پروژه نمونه یاد می گیریم که چطور از این Dll بتوانیم استفاده کنیم.

۵,۶۶۳ total views, 2 views today

Print Friendly
Facebook0Google+0Twitter0LinkedIn0

درباره‌ی محمّدرضا

من محمّدرضا هستم فارع التحصیل سال 93 کارشناسی IT. علاقمند به مباحث امنیت و برنامه نویسی، مخصوصا برنامه نویسی شبکه.

۶ نظر

  1. سلام
    آفرین خیلی خوب بود، ان شاا… که موفق باشی http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif

  2. سلام
     خیلی عالی بود ممنون از زحمتی که کشیدین 
     

  3. سلام

    ۱-      تشکر

    ۲-      بالاخره همت کردم و آمدم تا تشکر رو ثبت کنم!

    ۳-      اون موقع­هایی که نوشته نمیشه به حساب تنبلی بگذارید

    ۴-      باز هم تشکر

جوابی بنویسید

ایمیل شما نشر نخواهد شد.خانه های ضروری نشانه گذاری شده است. *

*


3 × = هجده

http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_good.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wmpl_laughing.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_angry.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bigsmile.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bigsup.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_hopless.gif