طور حياتك

IP address calculation(بالعربي)


بسم الله الرحمن الرحيم
الحمد لله رب العالمين ، وأفضل الصلاة وأتم التسليم ، على سيدنا محمد وعلى آله وصحبه أجمعين .. وبعد :
إعضاء المنتدى الحبيب كما هوا واضح من خلال العنوان اليوم إنشاء الله سوف نظع هدا الموضوع المتواظع ونتمنى من الله
أن يكون فيه خير

مفاهيم مهمة

عنوان الأيبي

جدول التوجيه

المضيف المحلي

بروتوكول إيجاد العناوين

مقدمة
هدا المضووع موجه أيظن لناس الدين يدرسون الشبكات بشكل أكاديمي
الأن طريقة حساب الأيبيهات بالنسبة للجهاز في البداية مايجب معرفته هوا أن IPv4 طوله 32 byte

بنسة لكل جهاز هوا يبدو على هدا الشكل
10101010.10101010.01010101.01010101

كما نعرف في جميع لغات البرمجة الأرقام 0.1 ها متغير بولياني يعطي قيمة صحيح أو غطأ
سؤل : كيف يقوم الجهاز بتحويل هاته الأيبيهات من البينري الى الأيبي الدي نعرفه ؟

جواب : الأمر بسيط وغير معقد وبدون علم ورياضيات فقط بالمطق صحيح وبستخدام هدا الجدول

الجدول هوا عبارة عن صفين الصف الأول توجد به البيتات والصف التاني ناتج
كما نعرف فارقم ip يتكون من4 octets
و 8 byte في octet هدا رقم بما أن الحواسيب تعد من الصفر فهوا الموجود في القوة بالأحمر
الأن أضن أن الموضوع واضج
يمكنك أن تقوم بإستخراج الجدول إما عموديا أو أفقيا كما في صورة

طريقة تحويل ip الى bainry

نقوم برسم جدول على الشكل التالي

ونأخد كا متال 192.168.1.1

نظع قيمة كل byte كما في الأعلى تم نظع رقم الأيبي في الجانب كما في الجدول بلون الأحمر

الأن نقوم بوظع رقم 1 في الخانات التي مجموعها يساوي 192
وعندا تحقيق تساوي نملئ الباقي بقيمة 0
في حالتنا نظع رقم 1 في 128+64 = 192 ونملء الباقي بقيمة 0

أتمنى أن يكون الأمر واضح لكم

سؤل : مدا سوف نستفيد من كلامك التافه هدا ؟ :33:
جواب : كلنا نعرف الأدة المشهورة nmap او حتى metasploit
عندما كنا نقوم بإطائها رقم أيبي على هدا الشكل 192.168.1.1/24
لكن لم نكن نعرف السبب ولم نكن نعرف المجال الدي سوف تغطيه عند الفحص
أنت أيظن وقعة في هدا المشكل ؟ :34:

إدن هدا بعض من ما سوف تستفيده

ملاحظة : في أرقام الأيبي يوجد تقسيمين متال 192.186.1.63
192.168.1 هدا المجال يسمى network
.63 هدا المجال يسمى host
بمعنى إدا أنت حابب تبحت عن جهاز فلا تتعب نفسك رقمه سوف يكون أخر رقم في مجال من 2 الى 255
إدن دائمن سوف يكون الأيبي الفحص 192.168.1.1/24 هدا يعني جميع الأجهزة على الشبكة

نكمل الأن طريقة معرفة netmask و subnet و first and last host

نلاحظ في الجدول التالي أول صف يوجد به الرقم الأيبي مع / 24

من تم netmask سوف أفترض أنك قرأة تعريفه في الأعلى من ويكيبيديا
وسوف أكتفي بالقول أنه أخر رقم ip يمكن الوصول اليه إدا أردنا معرفته فتلك 24 تعني ظع
في جدول البينري قيمة 1 في البينري 24 مرة تم الباقي 0
بمعني
هنا
11111111111111111111111100000000
1 تكرر 24 مرة لهدا سوف تجدون أغلب أرقام netmask
تساوي 255.255.255.x
x = عدد منغير قيمته محصورة من 1 الى 255

Subnet

نحصل عليه عن طريق جمع القيم الخاصة البيناري عن طريق and
بمعنى
True + True = True
Fulse + True = Fulse
Fulse +Fulse = Fulse

Broadcast

نحصل عليه عن طريق تغير قيمة كل الأرقم 0 بعد 24 الى رقم 1

11111111111111111111111100000000

First and last Host

هوا مجموع الأرقام التي يمكن لك الحصول عليها في شبكة
وهما يساويان

Subnet +1 = First Host

Broadcast – 1 = Last Host

الأن هدا سكربت بسيط من أجل شرح وعمل هاته العمليات وفهمها
أكتر أسف الأني لم أقم بوظع تعليقات بشكل كافي
حاوة ما أمكن أن يكون الكود بصيط بدون تعقيدات لكي يفهم بسرعة

الملف الرئيسي

Python:
#! /usr/bin/python3
from prettytable import PrettyTable
from Function import subnet
from Function import netmask
from ipaddress import *
class operation():
    """docstring for ClassName"""
    def __init__(self):
        usrip=input("Enter IPv4: ")
        text_input= usrip.split("/")
        byte=text_input[1]
        ip=text_input[0]
        if byte <= "32":
            binaryIP = ('.'.join([bin(int(x)+256)[3:] for x in ip.split('.')]))
            self.binaryIP = binaryIP
            self.ipadd = ip[0]
            self.byte = int(byte)

        else:
            print("Your netmask is not defined :/")

    def netmask(self):
        nmsk1=("1"*self.byte)
        nmsk2=("0"*(32-self.byte))
        x=nmsk1+nmsk2
        nmsk_bin=("{}.{}.{}.{}".format(x[0:8],x[8:16],x[16:24],x[24:32]))
        nmsk=netmask.convertbin(nmsk_bin)
        return(nmsk)

    def subnet(self):
        sbnt1=self.binaryIP.split(".")
        sub_binary=("{}.{}.{}.{}".format((sbnt1[0]),(sbnt1[1]),(sbnt1[2]),subnet.calc_subnet(sbnt1[3])))
        sub_ip=netmask.convertbin(sub_binary)
        return(sub_ip)

    def broadcast(self):
        sbnt1=self.binaryIP.split(".")
        sub_binary=("{}.{}.{}.{}".format((sbnt1[0]),(sbnt1[1]),(sbnt1[2]),subnet.calc_subnet(sbnt1[3])))
        brd_bin=sub_binary.split(".")
        brdbin2=("{}.{}.{}.{}").format(brd_bin[0],brd_bin[1],brd_bin[2],brd_bin[3].replace("0","1"))
        brdcst_ip=netmask.convertbin(brdbin2)
        return(brdcst_ip)

def main():
    print("""
===========================
|      IPv4 Calculation    |
|       ~ CyberCode ~      |
|--> www.dev-piont.com <-- |
===========================
Press ENTER""")
    input("")
    try:
        setup=operation()
        table= PrettyTable()

        netmaskIP=setup.netmask()
        subnetIP=setup.subnet()
        broadcastIP=setup.broadcast()
        first_host=IPv4Address(subnetIP) + 1
        last_host=IPv4Address(broadcastIP) - 1
        table.field_names = ["  Protocole  ", "  IPv4 address  "]
        table.add_row(["Netmask", netmaskIP])
        table.add_row(["Subnet", subnetIP])
        table.add_row(["Broadcast", broadcastIP])
        table.add_row(["First host", first_host])
        table.add_row(["Last host", last_host])
        print(table)

    except ValueError:
        print("Oops!  That was no valid number.  Try again...")
if __name__ == '__main__':
    main()

هاته الملفات توظع في مجلد Function

ملف netmask

Python:
""" file converts binary to iPv4 """
"""binary  interpretation from byte table """
def calc(binSP):#binSP binary variables
    convert=list(binSP)
    if convert[0] == "1":
        var1 = 128
    else:
        var1 = 0  
    if convert[1] == "1":
        var2 = 64  
    else:
        var2 = 0  
    if convert[2] == "1":
        var3 = 32  
    else:
        var3 = 0  
    if convert[3] == "1":
        var4 = 16  
    else:
        var4 = 0  
    if convert[4] == "1":
        var5 = 8  
    else:
        var5 = 0  
    if convert[5] == "1":
        var6 = 4  
    else:
        var6 = 0  
    if convert[6] == "1":
        var7 =2  
    else:
        var7 = 0  
    if convert[7] == "1":
        var8 = 1
    else:
        var8 = 0  
    variables=(var1+var2+var3+var4+var5+var6+var7+var8)
    return(variables)

def convertbin(argbin):

    binIP=argbin.split(".")
    val=("{}.{}.{}.{}".format(calc(binIP[0]),calc(binIP[1]),calc(binIP[2]),calc(binIP[3])))
    return(val)
#s=input("binary ip : ")

#convertbin(s)

ملف subnet

Python:
"""Apply "AND" principle in order to extract subnet """
def calc(number):
    if number == "1":
        return("0")
    if number == "0":
        return("1")
def calc_subnet(argv):
    subval=("{}{}{}{}{}{}{}{}".format(calc(argv[0]),calc(argv[1]),calc(argv[2]),calc(argv[3]),calc(argv[4]),calc(argv[5]),calc(argv[6]),calc(argv[7])))
    #print(subval)
    return(subval)

#calc_subnet("10000001")

السكربت وسلايد مرفوعة على سيرفر المنتدى

هنا

 
بارك الله فيك اخي العزيز ذكرتني ايام دراستي للشبكات

هذي اول الدروس النظريه في دراسة الشبكات

لكن الكود طويل حبذا لو تقوم بأختصاره البايثون فيها طرق اختصار الكود

شكرآ لك عزيز

 
بارك الله فيك اخي العزيز ذكرتني ايام دراستي للشبكات

هذي اول الدروس النظريه في دراسة الشبكات

لكن الكود طويل حبذا لو تقوم بأختصاره البايثون فيها طرق اختصار الكود

شكرآ لك عزيز

الله يكرمك أستاذي الكريم وينورك يارب نعم والغريب لايوجد مصادر عربية في هذا المجال الأسف
بخصوص ختصار الكود خفت أن أختصره ويصبح غير مفهوم
الأن الهدف هوا الشبكات وليس سكربت لم أرد إستخدام مكتبة ip الموجدة
بشكل كبير

 
موضوع مفيد جدا جدا جدا

شكرا على الطرح ياغالي لا تحرمنا جديدك وتميزك

تحياتي لك اخي

 
موضوع مفيد جدا جدا جدا

شكرا على الطرح ياغالي لا تحرمنا جديدك وتميزك

تحياتي لك اخي

والله وجودك وحظورك الكريم هوا الشيئ الرائع دائمن كل الإحترام لك
على مجهودك الجبار في الإدارة شكرا لك على المرور المميز

 
بارك الله بك على هذا الطرح مفيد جدا واتمنى منك الاستمرار بهذا المجال مبدع به انت هل مجال
 
بارك الله بك على هذا الطرح مفيد جدا واتمنى منك الاستمرار بهذا المجال مبدع به انت هل مجال

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

 
:: تنوية هام :: تم جلب هذا الموضوع من موقع خارجى وهذا رابط مصدر الموضوع ونحن غير مسؤلين عن المحتوى الموجود بالموضوع ولا يعبر عن موقع يلا نت، .إذا كان هذا المحتوى خاص بك وتريد معرفة لماذا تمت إضافتة هنا أو يحتوى على مواد تخضع لحقوق الطبع والنشر وتريد إزالتة إضغط هنا.