يعد Network Scannerعنصرًا مهمًا لمسؤول الشبكة بالإضافة إلى اختبار الاختراق. يسمح للمستخدم بتعيين الشبكة للعثور على الأجهزة المتصلة بنفس الشبكة.
في هذا البرنامج التعليمي ، ستتعلم كيفية إنشاء Network Scanner بسيط باستخدام مكتبة Scapy في Python.
سأفترض أنك قمت بالفعل بتثبيته ، إذا لم يكن الأمر كذلك ، فيرجي الرجوع الي هذه المصادر :
بالعودة إلى هذه النقطة ، هناك العديد من الطرق لفحص أجهزة الكمبيوتر في شبكة واحدة ، لكننا سنستخدم إحدى الطرق الشائعة التي تستخدم طلبات ARP .
أولاً ، سنحتاج إلى استيراد methods الأساسية من scapy :
from scapy.all import ARP, Ether, srp
ثانيًا ، سنحتاج إلى تقديم طلب ARP كما هو موضح في الصورة التالية:
سيرسل network scanner طلب ARP الذي يشير إلى من لديه عنوان IP محدد ، دعنا نقول "192.168.1.1" ، سيستجيب مالك عنوان IP هذا (الهدف) تلقائيًا قائلاً إنه "192.168.1.1" ، بهذه الاستجابة ، سيتم أيضًا تضمين عنوان MAC في الحزمة ، وهذا يسمح لنا باسترداد عناوين IP و MAC لجميع مستخدمي الشبكة بنجاح في وقت واحد عندما نرسل broadcast packet (إرسال packet إلى جميع الأجهزة في الشبكة).
تظهر استجابة ARP في الشكل التالي:
لذلك ، دعونا نصنع هذه الحزم:
# قم بادخال IP Address for the destination
target_ip = input(str("please enter target ip : " ))
# انشاء ARP packet
arp = ARP(pdst=target_ip)
# انشاء Ether broadcast packet
# ff:ff:ff:ff:ff:ff MAC address indicates broadcasting
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
# stack them
packet = ether/arp
result = srp(packet, timeout=3)[0]
result الآن هي قائمة ذات التنسيق (sent_packet, received_packet) ، دعنا نكررها باستخدام for loop:
# قائمة باسم cliensts سيتم ملئها في for loop
clients = []
for sent, received in result:
# ادخال ip و mac في clients
clients.append({'ip': received.psrc, 'mac': received.hwsrc})
الآن كل ما علينا فعله هو طباعة هذه القائمة
# طباعة clients
print("All devices available in the network")print("IP" + " "*18+"MAC")# loop من أجل طباعتهم مع ترتيبهمfor client in clients:print("{:16} {}".format(client['ip'], client['mac']))
الكود كامل علي github علي هذا الرابط اضغط :