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()