یک برنامه نویس مبتدی

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

یک برنامه نویس مبتدی

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

آشنایی با کتابخانه قدرتمند PCap.Net - بخش اول

کتاب خانه مشهور pcap که نخستین بار بر روی لینوکس و با هدف دریافت پاکت های شبکه ایجاد شد و بعداً به سیستم عامل ویندوز با نام WinpCap  راه یافت و امکاناتی چون ارسال پاکت نیز به آن اضافه شد. برای برنامه نویسان دات نت استفاده از توابع موجود در این کتابخانه و تطابق نوع داده و مواردی نظیر آن دشوار است ، از این رو یک کتابخانه دات نتی اپن سورس با نام PCap.Net توسعه داده شده است که در واقع بر مبنای WinPCap ساخته شده است و پیش نیاز استفاده از PCap.Net وجود کتابخانه WinPcap است.

 

با استفاده از توابع موجود در این کتابخانه قادر خواهید بود ، به کارت های شبکه موجود روی سیستم و مشخصات آنها دسترسی داشته باشید ، پاکت های ارسالی به هر کارت شبکه را دریافت و مشاهده نمایید و نیز بر روی ورودی فیلتر بگذارید و نهایتاً می توانید با استفاده از کارت شبکه خاصی انواع پاکت های شبکه از جمله TCP ، ICMP ، HTTP و غیره را ایجاد و به آدرس خاصی در شبکه ارسال نمود.

 

برای آشنایی با این کتابخانه قدرتمند با ادامه مطلب همراه باشید.

 

 

 درباره کتابخانه Pcap.Net

Pcap.Net پوشش دهنده کتابخانه Wincap تحت دات نت است که با استفاده از CLI-C++,C# به صورت متن باز نوشته شده است و تقریبا تمامی امکانات Wincap  را به همراه  یک فریم ورک برای تفسیر پاکت ها ارائه می کند.

برای دریافت Pcap.Net می توان از آدرس   http://pcapdotnet.codeplex.com/ استفاده کرد.برای استفاده از این کتابخانه بایستی حتما Wincap روی سیستم نصب شده باشد. نسخه Developers Pack بایستی دانلود گردد.

برای دریافتWincap نیز می توان از آدرس زیر اقدام نمود.

http://www.winpcap.org/install/default.htm



درباره Wincap

Wincap در واقع پیاده سازی کتابخانه libpcap تحت سیستم عامل ویندوز است و مهم ترین هدف آن ارائه روشی ساده برای ضبط پاکت های شبکه است ، این کتابخانه همچنین قابلیت ها فراوانی را در زمینه فیلتر کردن پاکت ها و نیز ارسال انواع پاکت های شبکه را در اختیار برنامه نویسان قرار می دهد.


شروع کار.

برای ایجاد برنامه های مبتنی بر Pcap.Net پس از نصب Winpcap اقدام به ایجاد یک پروژه در ویژوال استدیو می کنیم پروژه مد نظر می توان از نوع Console Application ، Windows Forms Application یاApplication WPF باشد.




برای افزودن DLL های Pcap.Net به پروژه پس از خارج کردن فایل دانلودی از حالت فشرده در ویژوال استدیو  و پس از ایجاد پروژه از مسیر زیر اقدام می کنیم:


Project Menu > Add Reference > Browse


در این بخش بایستی از مسیر فایل های Extract شده مربوط به Pcap.Net به مسیر زیر رفته و تمامی فایل هایDLL موجود را انتخاب و OK را بزنیم.


\PcapDotNet.DevelopersPack.0.10.0.67076.x86\PcapDotNet.DevelopersPack\3rdParty\PcapDotNet


لازم به ذکر است که اگر برنامه را روی سیستم عامل  32 بیتی کامپایل می کنید حتما از پوشه  x86 استفاده کنید.


تمامی مقدمات آماده است و می توانید برنامه های کاربردی مبتنی برPcap.Net را توسعه دهید. در ادامه این بخش ترجمه مستندات Pcap.Net آورده شده است.لازم به ذکر است که تمامی مثال های آورده شده برای سادگی به صورت Console Application تهیه شده است.


دریافت لیست کارت های شبکه


معمولا، اولین کار در برنامه های مبتنی بر Pcap.Net بدست آوردن لیست کارتهای شبکه متصل به سیستم است.Pcap.Net  از مشخصه ایستای LivePacket.AllLocalMacin برای این منظور پشتیبانی می کند. این مشخصه مجموعه ای از آبجکت های کلاس LivePacketDevice را برمی گرداند. هر یک از اعضای مجموعه شامل اطلاعات جامعی درباره کارت شبکه متصل به سیستم است. خصوصاً ، فیلد های نام و توضیح که شامل نام و توضیحات قابل خواندن توسط انسان برای دستگاه های متناظر است.

کد زیر لیست کارتهای شبکه را دریافت و نمایش می دهد ، درصورتی که هیچ موردی یافت نشد پیغام خطا نشان خواهد داد.


using System;

using System.Collections.Generic;

using PcapDotNet.Core;

 

namespace ObtainingTheDeviceList

{

    class Program

    {

        static void Main(string[] args)

        {

            // Retrieve the device list from the local machine

            IList<LivePacketDevice> allDevices = LivePacketDevice.AllLocalMachine;

 

            if (allDevices.Count == 0)

            {

                Console.WriteLine("No interfaces found! Make sure WinPcap is installed.");

                return;

            }

 

            // Print the list

            for (int i = 0; i != allDevices.Count; ++i)

            {

                LivePacketDevice device = allDevices[i];

                Console.Write((i + 1) + ". " + device.Name);

                if (device.Description != null)

                    Console.WriteLine(" (" + device.Description + ")");

                else

                    Console.WriteLine(" (No description available)");

            }

        }

    }

}



برخی نکات درباره این کد:

پیش از همه ،  LivePacket.AllLocalMacin مانند تمامی متد های دیگر Pcap.Net می تواند در هنگام بروز خطا یک استثا تولید کند که شامل توضیحات خطا است.

دوماً ؛ به یاد داشته باشید تمامی سیستم عامل هایی که از  LibpCap پشتیبانی می کنند ، امکان تولید توضیحات برای کارت شبکه را فراهم نمی کنند ، بنابر این اگر بخواهیم برنامه قابل حمل (Portable) بنویسیم ، باید به حالتی که توضیحات Null است توجه داشته باشیم ، ما پیغام توضیحی در دسترس نیست  را برای این حالت چاپ می کنیم.

بیایید کد اولین مثالمان را کامپایل کنیم. در ویندوز ، شما نیازبه ایجاد یک پروژه دارید. برای این منظور راهنمایی های استفاده از Pcap.Net را در بخش راهنمایی ها دنبال کنید. با این حال ، پیشنهاد می کنیم ، از بسته توسعه دهندگانPcap.Net استفاده کنید.چون شامل مثال های زیادی است  که شامل کد موجود در این مثال و DLL هایی است که برای کامپایل و اجرای مثال ها مورد نیاز هستند.

برنامه را کامپایل کردیم بیایید آن را اجرا کنیم. دریک سیستم معمولی با ویندوز XP نتیجه ای که حاصل شد به شکل زیر است.

1. rpcap://\Device\NPF_{555EA70B-BC91-4520-8307-E7FC043C6997} (Network adapter 'Atheros AR8121/AR8113 PCI-E Ethernet Controller (Microsoft's Packet Scheduler) ' on local host)

 

همان طور که می بینید ، نام کارت های شبکه (که برای بازکردن و استفاده از کارت های شبکه این نام به Libpcapپاس خواهد شد) در ویندوز واقعا قابل خواندن نیستند، اما توضیحات درج شده می توانند بسیار سودمند باشند.


بخش نخست آشنایی با کتابخانه PCap.Net در اینجا به اتمام می رسد ، بخش های بعدی بزودی در همین وبلاگ منتشر می شود. ضمناً در بخش آخر کل این مجموعه بصورت یک فایل PDF عرضه خواهد شد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد