ایده اینه که با استفاده از کتابخونه استاندارد socket، به پورتهای مشخص روی یک IP وصل بشیم و ببینیم باز هستن یا نه. این کار برای مواردی مثل:
• چک کردن اینکه فایروال درست تنظیم شده یا نه 🔥
• مطمئن شدن از اینکه فقط پورتهای لازم بازن
• تست سریع قبل از تحویل سرور به کارفرما
همهچیز روی کتابخونههای استاندارد Python 3 سوار میشه و نیاز به نصب چیزی اضافه نیست.
نمونه داکیومنت رسمی socket در پایتون اینجاست:
docs.python.org/3/library/socket.html
کد زیر یک اسکنر ساده است که چند پورت مهم مثل 22، 80، 443 و... را روی یک IP اسکن میکند. حتما روی سرور خودت یا سیستمی که مجوز داری استفاده کن. ✅
import socket
TARGET_HOST = "192.168.1.10" # آدرس دستگاهی که مجوز تستش را داری
PORTS = [22, 80, 443, 3389]
TIMEOUT = 1.0
def scan_port(host, port):
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")
else:
print(f"[-] Port {port} is closed")
except Exception as e:
print(f"[!] Error on port {port}: {e}")
finally:
s.close()
if __name__ == "__main__":
print(f"Scanning {TARGET_HOST}...")
for p in PORTS:
scan_port(TARGET_HOST, p)
چند نکته ریز ولی مهم 🧠
• قبل از اجرا، آدرس TARGET_HOST را بذار روی سرور خودت یا یک ماشین تست داخل شبکه.
• لیست PORTS را میشود براساس نیاز عوض کرد؛ مثلا برای سرور وب داخلی، پورتهای 80، 443، 8080، 8443.
• مقدار TIMEOUT اگر خیلی کم باشد روی لینکهای کند ممکن است پورتها را اشتباها بسته نشان بدهد؛ ۱ یا ۲ ثانیه معمولا خوب است.
• در شبکههای بزرگ، حتما قبل از اسکن از قوانین سازمان و تیم امنیت هماهنگ باش؛ حتی اسکن پورت ساده هم اگر بدون هماهنگی باشد میتواند مشکلساز شود. ⚠️
این اسکریپت یک نقطه شروع خوب برای ساخت ابزارهای شخصی در حوزه Network & Security است؛ بعدا میشود لاگها را روی فایل ذخیره کرد، خروجی JSON گرفت، یا حتی یک رابط وب کوچک روی آن سوار کرد.
امتحانش روی یک محیط تست امن، چیزهای خوبی درباره وضعیت واقعی سرویسها و فایروال نشانت میدهد. اگر مفید بود برای همتیمیهای فنی بفرست تا آنها هم نسخه سبک اسکن پورت خودشان را داشته باشند. 🚀
🔖 #Security #امنیت #Python #Network_Security #Port_Scanning #Socket #Linux #امنیت #اسکریپتنویسی
👤 Developix
💎 Channel: @DevelopixNetwork