文章目录
一、调用socket库
import socket
def get_port(domain):
ports = [21, 22, 23, 25, 53, 69, 79, 80, 88, 110, 113, 220, 443, 3306]
open_list = []
for port in ports:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ipv4,tcp通信
server.settimeout(3) # 超过3,断定端口关闭
result = server.connect_ex((domain, port)) # 尝试连接
if result == 0: # 连接成功返回0
print(str(port) + "-->open")
open_list.append(port)
else:
print(str(port) + "-->close")
return open_list
if __name__ == '__main__':
get_port("192.168.137.129")
返回结果:
二、调用API
def sd(domain):
myaddr = socket.getaddrinfo(domain, 'http')
dst_ip = myaddr[0][4][0]
api = shodan.Shodan('xxxxxxxxxxxxxxxxxx')
res = api.host(dst_ip, history=False)
port = str(res['ports']) # 返回该IP开放的端口号列表
print(port)
if __name__ == '__main__':
sd("jd.com")
返回结果:
获取API-key:
访问:s h o d a n . i o ,并复制API KEY