45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
import socket
|
|
import sys
|
|
import datetime
|
|
|
|
target = socket.gethostbyname(sys.argv[1])
|
|
|
|
today = datetime.datetime.now()
|
|
title = f"{target}_{today.year}_{today.month}_{today.day}_{today.hour}-{today.minute}.md"
|
|
|
|
print(f"Scanning target: {target}")
|
|
print(f"Output file: {title}\n")
|
|
|
|
with open(title, "a") as f:
|
|
for port in range(1, 65535):
|
|
try:
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
s.settimeout(1)
|
|
|
|
result = s.connect_ex((target, port))
|
|
|
|
if result == 0:
|
|
print(f"[+] Port {port} is open")
|
|
|
|
banner = ""
|
|
try:
|
|
# Only send HTTP request to common web ports
|
|
if port in [80, 8080, 8000]:
|
|
s.send(b"GET / HTTP/1.1\r\nHost: test\r\n\r\n")
|
|
|
|
banner = s.recv(1024).decode(errors="ignore").strip()
|
|
except:
|
|
banner = "No banner"
|
|
|
|
line = f"[+] {target}:{port} → {banner}\n"
|
|
print(line)
|
|
f.write(line)
|
|
|
|
s.close()
|
|
|
|
except KeyboardInterrupt:
|
|
print("\nScan interrupted.")
|
|
sys.exit()
|
|
|
|
except Exception:
|
|
pass |