当我运行python端口扫描仪时,无论IP或网站如何,我只看到端口80打开。我在testphp.vulnweb.com上测试了代码,所以我希望打开的不仅仅是端口80。
import socket
from IPy import IP
def scan(target):
converted_ip = check_ip(target)
print('n' + '[-_0 Scanning Target] ' + str(target))
for port in range(1, 100):
scan_port(converted_ip, port)
def get_banner(s):
return s.recv(1024)
def check_ip(ip):
try:
IP(ip)
return(ip)
except ValueError:
return socket.gethostbyname(ip)
def scan_port(ipaddress, port):
try:
## define a socket descriptor
sock = socket.socket()
sock.settimeout(0.5) ## in order to scan target faster, lose accuracy but gain time
sock.connect((ipaddress, port))
try:
banner = get_banner(sock)
print('[+] Open port' + str(port) + ' : ' + str(banner))
except:
print('[+] Open Port ' + str(port))
except:
pass
targets = input('[+] Enter Target/s To Scan (split multiple targets with ,): ')
if ',' in targets:
for ip_add in targets.split(','):
scan(ip_add.strip(' '))
else:
scan(targets)
好吧,可能还有更多的端口打开,但您只能检查1到100。野外使用的大多数港口都比这个高。
for port in range(1, 100):
scan_port(converted_ip, port)
在我的脑海中,我只知道这个范围内的4个常用端口。SSH(22(、SMTP(25(、DNS(53(和HTTP(80(。
例如,HTTPS在443上的大部分时间都是可用的。MySQL默认为3306。Redis有6379个。
所以你至少应该检查10000次,甚至可能更高。允许的最高端口号为65535。