اكتشاف الأجهزة الشغّالة (Host Discovery)
إزاي تعرف أنهي أجهزة شغّالة في الشبكة بـ Ping Sweep و ARP و Nmap -sn، وليه الـ ping لوحده مش كفاية، وتعمل sweep بسيط بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
دلوقتي هنبدأ الجمع النشط، يعني هنبعت packets للهدف. وأول سؤال: الـ network دي فيها كام جهاز شغّال؟ ومين هم؟
الطريقة الأبسط اسمها Ping Sweep: تبعت ping لكل IP في الـ range. اللي يرد، يبقى شغّال. والـ ping بيستخدم بروتوكول ICMP. وأدوات زي fping بتعمل ده بسرعة.
بس المشكلة: firewalls كتير بتمنع الـ ping، وبالذات Windows. يعني الجهاز شغّال، بس ساكت. علشان كده Nmap بيستخدم أكتر من طريقة مع بعض: ICMP، و TCP على ports زي eighty و four forty three.
الأوامر المهمة: nmap dash s n، ده Host Discovery من غير Port Scan. جُوّه نفس الشبكة المحلية، ARP أدق حاجة، لأن أي جهاز لازم يرد عليه، وأداته arp scan. و dash capital P n، معناها: افترض إن كل الأجهزة شغّالة، واعمل Scan على طول. نعمل sweep على network صغيرة: slash twenty eight، يعني أربعتاشر جهاز. عندنا dictionary بيقول كل IP بيرد على إيه، و function اسمها is up بتشوف الـ ICMP بس، زي الـ ping. نشغّل… تلات أجهزة شغّالة. بس بص على dot nine: بيرد على TCP، والـ firewall بتاعه مانع الـ ping. يعني إحنا فوّتناه.
import ipaddress
# What each IP answers in our lab (a real sweep sends packets)
answers = {
"10.10.10.1": {"icmp": True, "tcp": True},
"10.10.10.5": {"icmp": True, "tcp": True},
"10.10.10.9": {"icmp": False, "tcp": True}, # firewall blocks ping
"10.10.10.12": {"icmp": True, "tcp": False},
}
def is_up(ip):
a = answers.get(str(ip), {})
return a.get("icmp", False)
network = ipaddress.ip_network("10.10.10.0/28")
alive = [str(ip) for ip in network.hosts() if is_up(ip)]
print("scanned:", network.num_addresses - 2, "hosts")
print("alive:", alive)المخرجات
scanned: 14 hosts alive: ['10.10.10.1', '10.10.10.5', '10.10.10.12']
دورك: عدّل is up علشان تعتبر الجهاز شغّال لو رد على ICMP أو على TCP، زي ما Nmap بيعمل.
خلّي is_up ترجّع a.get("icmp", False) or a.get("tcp", False).
الحل: نشغّل… ظهر dot nine. علشان كده: ما تثقش في الـ ping لوحده.
import ipaddress
# What each IP answers in our lab (a real sweep sends packets)
answers = {
"10.10.10.1": {"icmp": True, "tcp": True},
"10.10.10.5": {"icmp": True, "tcp": True},
"10.10.10.9": {"icmp": False, "tcp": True}, # firewall blocks ping
"10.10.10.12": {"icmp": True, "tcp": False},
}
def is_up(ip):
a = answers.get(str(ip), {})
return a.get("icmp", False) or a.get("tcp", False)
network = ipaddress.ip_network("10.10.10.0/28")
alive = [str(ip) for ip in network.hosts() if is_up(ip)]
print("scanned:", network.num_addresses - 2, "hosts")
print("alive:", alive)المخرجات
scanned: 14 hosts alive: ['10.10.10.1', '10.10.10.5', '10.10.10.9', '10.10.10.12']
الدرس الجاي: لقينا الأجهزة، نشوف بقى أنهي ports مفتوحة عليها، وإزاي الـ Port Scan بيشتغل. يلا بينا.
03 / دروس المسار (22)
- 01يعني إيه جمع معلومات (Recon)؟
- 02سلبي ولا نشط؟ والنطاق القانوني
- 03WHOIS: مين صاحب الـ Domain؟
- 04سجلات DNS: كنز المعلومات
- 05اكتشاف الـ Subdomains
- 06Certificate Transparency: الشهادات بتتكلم
- 07Google Dorking
- 08OSINT: الموظفين والإيميلات
- 09الـ Metadata: أسرار جُوّه الملفات
- 10اكتشاف الأجهزة الشغّالة (Host Discovery)انت هنا
- 11الـ Port Scanning بيشتغل إزاي؟
- 12Nmap: البداية
- 13أنواع الـ Scan والسرعة في Nmap
- 14كشف الخدمات والإصدارات ونظام التشغيل
- 15NSE Scripts وحفظ النتايج
- 16تعداد الويب: الـ Headers والتكنولوجيا
- 17الـ Directory Brute Force
- 18تعداد SMB
- 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
- 20تنظيم نتايج الـ Recon
- 21أتمتة الـ Recon بـ Python
- 22مراجعة شاملة وخطة Recon