NSICollectionPlatform/NSICollectionPlatformServer/portDetection.py
2023-08-30 20:29:42 +08:00

59 lines
1.3 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import dns.resolver
import re
def __check_ip(ip):
p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$')
if p.match(ip):
return True
else:
return False
def __resolution_a(domain):
query_list = []
a = dns.resolver.resolve(domain, 'A')
for i in a.response.answer:
for j in i.items:
if j.rdtype == 1:
ip = j.address
query_list.append(ip)
return query_list
def __detect_port(ip, port):
"""检测ip上的端口是否开放
"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((ip, int(port)))
s.shutdown(2)
return True
except:
return False
def detection(domain, port):
is_ip = __check_ip(domain)
__data = []
if is_ip:
port_status = __detect_port(ip=domain, port=port)
__data.append({
"domain": domain,
"port": port,
"status": port_status
})
else:
ips = __resolution_a(domain=domain)
for ip in ips:
port_status = __detect_port(ip=ip, port=port)
__data.append({
"domain": ip,
"port": port,
"status": port_status
})
return __data