Port_Scanner / app.py
ahmedumeraziz's picture
Create app.py
3bd669b verified
import gradio as gr
import socket
# Common ports to scan (you can expand this list if needed)
COMMON_PORTS = {
21: "FTP",
22: "SSH",
23: "Telnet",
25: "SMTP",
53: "DNS",
80: "HTTP",
110: "POP3",
143: "IMAP",
443: "HTTPS",
3306: "MySQL",
3389: "RDP"
}
def scan_ports(host):
result = f"πŸ” Scanning {host}...\n\n"
open_ports = []
try:
ip = socket.gethostbyname(host)
except socket.gaierror:
return "❌ Error: Invalid host or domain."
for port, service in COMMON_PORTS.items():
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.5)
result_code = sock.connect_ex((ip, port))
if result_code == 0:
open_ports.append(f"βœ… Port {port} ({service}) is open")
sock.close()
except Exception as e:
continue
if open_ports:
return result + "\n".join(open_ports)
else:
return result + "❌ No common ports are open."
iface = gr.Interface(
fn=scan_ports,
inputs=gr.Textbox(label="Enter Hostname or IP Address", placeholder="e.g. example.com or 8.8.8.8"),
outputs=gr.Markdown(label="Port Scan Result"),
title="πŸ”’ Port Scanner",
description="Scans a given IP or domain for open common ports (e.g. HTTP, FTP, SSH, etc.)."
)
if __name__ == "__main__":
iface.launch()