پینگ گرفتن در سی شارپ :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات
  • ۲۲ مرداد ۰۲، ۰۰:۳۴ - Sami
    مرسی
  • ۱۴ مرداد ۰۲، ۱۴:۴۶ - farhad
    salam

توی این پست قراره برسی کنیم که چجوری میشه توی سی شارپ یک سایت یا ادرس رو توی شبکه داخلی پینگ کرد.

ping که مخفف کلمات Packet InterNet Groperـه در واقع یکی از دستوراتیه که برای پیدا کردن اشکالات شبکه و مشکل یابی استفاده میشه.

پینگ کردن از پروتکل ICMP استفاده میکنه و به صورت خلاصه کاربردش برسی ارتباط دو نقطه‌ست، حالا این دو نقطه میتونه دو تا کامیپوتر توی شبکه باشه هم میتونه برسی ارتباط کامپیوتر با یه سایت یا سرور باشه.


روش معمولیش که همون پینگ کرفتن با دستور ping توی cmd‌ـه که اگه یه چرخی توی این قسمت وب بزنین میتونین اموزشش رو پیدا کنین.


برای پینگ کردن در سی شارپ می تونیم از دو روش استفاده کنیم، روش اول استفاده از api های ویندوز که با استفاده از فراخوانی تابع های فایل wininet.dll ویندوز انجام میشه و روش دوم که با استفاده از کلاس ping که توی نیم اسپیس System.Net.NetworkInformation‌ـه انجام میشه.


توی این پست روش دوم رو برسی می کنیم و یه برنامه کنسول اپلیکیشن برای پینگ گرفتن از سایت ها یا کامیپوتر های داخل شبکه درست می کنیم. 

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


اول از همه یه برنامه سی شارپ کنسولی درست کنین، و namespace زیر رو به برنامه اضافه کنین:

 using System.Net.NetworkInformation;

و بعد کد های زیر روی توی متد mian پروژه تون بنویسین:

پ ن: می دونستین اگه حرف اول متد Main با حرف m کوچیک باشه، کامپایلر ارور میده!

            Console.WriteLine(@"    ____  _                ______          __              ________ ");
            Console.WriteLine(@"   / __ \(_)___  ____ _   /_  __/__  _____/ /____  __  _  |__  /__ \");
            Console.WriteLine(@"  / /_/ / / __ \/ __ `/    / / / _ \/ ___/ __/ _ \/  /_/   /_ <__/ /");
            Console.WriteLine(@" / ____/ / / / / /_/ /    / / /  __(__  ) /_/  __/  /    ___/ / __/ ");
            Console.WriteLine(@"/_/   /_/_/ /_/\__, /    /_/  \___/____/\__/\___/\_/    /____/____/ ");
            Console.WriteLine(@"              /____/                                                 ");
            Console.ForegroundColor = ConsoleColor.Green;

            string hostname_or_ip, data;
            int timeout;

            //نمونه سازی از کلاس ها
            Ping ping32 = new Ping();
            //                         مقدار ttl / fragmentation فعال بودن یا نبودن
            PingOptions pingo = new PingOptions(64,true);

            
            Console.Write("Plz Enter HostName Or Ip==> ");
            hostname_or_ip = Console.ReadLine();

            //فاصله زمانی
            timeout = 120;

            //حجم پاکت های ارسالی 
            data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);

             
            PingReply reply = ping32.Send(hostname_or_ip,timeout, buffer, pingo);

            Console.WriteLine("-------------------------------------------------");

            //برسی موفق بودن یا نبودن اتصال
            if (reply.Status == IPStatus.Success)
            {
                //موفق بودن یا نبودن اتصال
                Console.WriteLine("conection: {0}", reply.Status.ToString());

                //ادرس ای پی مقصد
                Console.WriteLine("Address: {0}", reply.Address.ToString());

                //RoundTrip time
                Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);

                //ttl
                Console.WriteLine("Time to live(ttl): {0}", reply.Options.Ttl);

                //سایز پاکت ها
                Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);

                //fragment
                Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
            }
            else
                Console.WriteLine("Ping failed!");


            Console.ReadKey();

یه روش دیگه هم هست که میشه دستورات cmd رو توی سی شارپ اجرا کرد (توی این پست توضیح داده شده) حالا اگه حال و حوصله یادگرفتن ping توی سی شارپ رو ندارین می تونین دستور ping سی ام دی رو به همراه سوییچ هاش توی سی شارپ بزنین که توسط cmd اجرا بشه.


و این که می تونین از همین پینگ گرفتن برای برسی اتصال کاربر به اینترنت استفاده کنین و یا این که با یه کمی دستکاری همین کدها یه دیداسر ساده بسازین و...


کد ها هم که کامنت گذاری شده بود ولی اگه بازم جایی مشکلی بود توی کامنت ها بگین :))

نظر (۴)

عالی مثل همیشه، فقط من این قسمت که حجم پکت ها تعریف میشه و داستان این aaaaaaaaaa ها رو نفهمیدم D:

Virus32 ولم کنید (: :
سلام ممنون
حجم دیتایی که ارسال میشه است
aaaaaaaaaa هم همون دیتای ارسالی است

سایت تون واقعا خوبه

Virus32 Ax0o 32 :
ممنون

آقا من آدرس ایمیلم رو تو قسمت "پست الکترونیک" وارد کردم الان هم دو سه روزه که صبر کردم ولی رمز مطالب برام ایمیل نشده کی برام ایمیل میشه 

 قسمت پست الکترونیک منظورتون همون کادر پایین تر نام هست

Virus32 MicRoB 32 :
حاجی ۲/۳ روز که چیزی نیست بیشتر صبر کن رمز ارسال میشه
اره همون کادره 

سلام من موقعی که آی پی رو وارد میکنم ارور میده

Object reference not set to an instance of an object

Virus32 Ax0o 32 :
سورست چیه
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی