Spaces:
Sleeping
Sleeping
File size: 1,419 Bytes
3bd669b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
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()
|