- 前言
一、调用socket库的socket.connect_ex((ip, port))方法
二、调用shodan API
三、shodan介绍
- 1.获取Shodan - API
- 2.常用 Shodan 库函数
前言
服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大。
故对于网络安全而言,端口扫描也是资产探测的重要一环。
以下记录两种用python实现开放端口扫描的方案。
一、调用socket库的socket.connect_ex((ip, port))方法
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")
返回结果:
二、调用shodan API
import shodan
def shoda(domain):
myaddr = socket.getaddrinfo(domain, 'http')
dst_ip = myaddr[0][4][0]
api = shodan.Shodan('4lqyZddnTpSdLGoQxnNNsW0ny0a9tALc')
res = api.host(dst_ip, history=False)
port = str(res['ports']) # 返回该IP开放的端口号列表
print(port)
if __name__ == '__main__':
shoda("jd.com")
返回结果:
三、shodan介绍 1.获取Shodan - API
访问:account.shodan.io ,并复制API KEY
shodan.Shodan(key) :初始化连接API
Shodan.count(query, facets=None):返回查询结果数量
Shodan.host(ip, history=False):返回一个IP的详细信息
Shodan.ports():返回Shodan可查询的端口号
Shodan.protocols():返回Shodan可查询的协议
Shodan.services():返回Shodan可查询的服务
Shodan.queries(page=1, sort=‘timestamp’, order=‘desc’):查询其他用户分享的查询规则
Shodan.scan(ips, force=False):使用Shodan进行扫描,ips可以为字符或字典类型
Shodan.search(query, page=1, limit=None, offset=None, facets=None, minify=True):查询Shodan数据
Shodan.host(ip, history=False)部分返回结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)