سكربت بايثون لرؤية البورتات المفتوحة والمغلقة

x32x01
  • بواسطة x32x01 ||

برمجة سكربت بايثون لرؤية البورتات المفتوحة والمغلقة في موقع 🎯​

هنتعلم دلوقتي إزاي نعمل سكربت بسيط ببايثون يفتح ويجرّب اتصالات على بورتات في جهاز/راوتر/سيرفر عشان يشوف البورتات المفتوحة والـ مغلقة.

إيه اللي محتاجه قبل ما تبدأ؟ 🛠️​

  • بايثون 3 منصّب على جهازك.
  • فهم أساسي لمكتبة socket.
  • صلاحية تشغيل (لو هتجرب بورتات محمية أو فحوص متقدمة ممكن تحتاج sudo).
  • وما تنساش: افتح الفحص بس على أجهزة عندك أو عندك إذن بالفحص - أي استخدام تاني ممكن يوقعك في مشاكل قانونية.

السكربت الأساسي - نسخة بسيطة وواضحة ✅​

Python:
#!/usr/bin/env python3
# simple_port_scanner.py
# استخدام: python3 simple_port_scanner.py

import socket

def scan_ports(host, start=1, end=2000, timeout=1):
    print(f"Scanning {host} from port {start} to {end} (timeout={timeout}s)...\n")
    open_ports = []
    for port in range(start, end + 1):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(timeout)
        try:
            result = s.connect_ex((host, port))
            if result == 0:
                print(f"[+] Port {port} is OPEN")
                open_ports.append(port)
            # لو عايز تعرض البورتات المغلقة أرسل else وطبع رسالة
        except KeyboardInterrupt:
            print("\n[!] Scan cancelled by user.")
            break
        except Exception as e:
            # نتجاهل أخطاء مؤقتة عشان الفحص يكمل
            pass
        finally:
            s.close()
    print("\nScan finished.")
    if open_ports:
        print("Open ports:", ', '.join(map(str, open_ports)))
    else:
        print("No open ports found in the scanned range.")

if __name__ == "__main__":
    target = input("Enter target IP or hostname: ").strip()
    if not target:
        print("No target provided. Exiting.")
    else:
        # ممكن تخلي المستخدم يدخل نطاق بورتات أو يسيبه افتراضي
        scan_ports(target, start=1, end=2000, timeout=1)

شرح الكود خطوة بخطوة 🔍​

  • import socket - بنستخدم socket لفتح اتصالات TCP.
  • scan_ports(host, start, end, timeout) - دالة بتجرّب كل بورت من start لـ end.
  • داخل اللوب بنفتح socket جديد لكل بورت ونستخدم connect_ex علشان ما يرمزش exception على حاولات الفشل.
    • connect_ex بيرجع 0 لما الاتصال نجح - معناه البورت مفتوح.
  • بنستعمل settimeout علشان ما نستناش كتير على بورت مش موجود.
  • دايماً بنقفل السوكيت في finally عشان مايتراكموش موارد مفتوحة.

نسخة أسرع بالـ threading - لو عايز تسد الوقت ⏱️​

لو هتفحص آلاف البورتات أو شبكة كبيرة، يفضل تستخدم خيوط (threads) لتوازي الفحص. خلي بالك من عدد الخيوط عشان متشغّلش جهازك أو الشبكة.
Python:
# threaded_port_scanner.py (مقتطف)
import socket
import threading

def worker(host, port, timeout, results):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(timeout)
    try:
        if s.connect_ex((host, port)) == 0:
            results.append(port)
    except:
        pass
    finally:
        s.close()

def threaded_scan(host, start=1, end=2000, timeout=1, max_threads=100):
    threads = []
    results = []
    for port in range(start, end + 1):
        t = threading.Thread(target=worker, args=(host, port, timeout, results))
        threads.append(t)
        t.start()
        # تحكم بسيط بعدد الخيوط
        while threading.active_count() > max_threads:
            pass
    for t in threads:
        t.join()
    return sorted(results)
ملحوظة: متنساش تقلل max_threads لو الجهاز أو الشبكة ضعيفة. ومتنساش إن عدد كبير جدًا من الاتصالات ممكن يبان كـ هجوم على جدران الحماية.

نصايح عملية وتحسينات ممكن تضيفها 🔧​

  • خلي الواجهة تقبل نطاق بورتات أو قائمة بورتات محددة.
  • احفظ النتايج في CSV أو JSON للرجوع لها بعدين.
  • اضف كشف الخدمة بواسطة محاولة قراءة الـ banner لو البورت مفتوح (بعض الخدمات بتبعت سطر ترحيبي).
  • لو عايز تدي أولوية للفحص: ابدأ بالبورتات الشائعة (80, 443, 22, 21, 3306...) عشان تلاقي النتايج المهمة أسرع.
  • لو هتعمل فحص UDP استخدم أدوات متخصصة؛ socket UDP مختلف ومتعذر.

  • السكربت البسيط مفيد للتعلم ولمعرفة البورتات المفتوحة في جهازك أو الراوتر أو سيرفر عندك إذن اختباره.
  • لو عايز سرعة أكبر استخدم نسخة متعددة الخيوط، لكن خلي بالك من التأثير على الشبكة.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
753
x32x01
x32x01
x32x01
الردود
0
المشاهدات
725
x32x01
x32x01
x32x01
الردود
0
المشاهدات
755
x32x01
x32x01
x32x01
الردود
1
المشاهدات
504
x32x01
x32x01
x32x01
الردود
0
المشاهدات
854
x32x01
x32x01
الوسوم : الوسوم
برمجة سكريبت بايثون فحص البورتات المفتوحة فحص بورتات الموقع
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,319
المشاركات
2,532
أعضاء أكتب كود
557
أخر عضو
TNL soft
عودة
أعلى