如何通过索引访问嵌套字典值

2024-06-01 02:14:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python-nmap库构建一个扫描器。代码如下:

import nmap
import json

def Nmap_Recon(host, port):
   nm = nmap.PortScanner()
   lol = nm.scan(host, '22-443')
   print(lol['scan'])
Nmap_Recon('www.stuxnoid.org',80)

输出:

{'77.72.0.90': {'hostnames': [{'name': 'www.stuxnoid.org', 'type': 'user'}, {'name': 'carbon.cloudhosting.co.uk', 'type': 'PTR'}], 'addresses': {'ipv4': '77.72.0.90'}, 'vendor': {}, 'status': {'state': 'up', 'reason': 'syn-ack'}, 'tcp': {25: {'state': 'open', 'reason': 'syn-ack', 'name': 'smtp', 'product': '', 'version': '', 'extrainfo': '', 'conf': '3', 'cpe': ''}, 80: {'state': 'open', 'reason': 'syn-ack', 'name': 'http', 'product': 'imunify360-webshield/1.6', 'version': '', 'extrainfo': '', 'conf': '10', 'cpe': ''}, 443: {'state': 'open', 'reason': 'syn-ack', 'name': 'https', 'product': 'imunify360-webshield/1.6', 'version': '', 'extrainfo': '', 'conf': '10', 'cpe': ''}}}}

我猜输出是字典格式的。问题是,我只想显示开放端口的详细信息。但是端口详细信息嵌套在dict\ u密钥IP地址(77.72.0.90)中,并且它随着我所经过的域而不断变化。如何访问这些开放端口详细信息并显示它们?你知道吗


Tags: 端口nameimportversionconf详细信息openproduct
1条回答
网友
1楼 · 发布于 2024-06-01 02:14:38

如果您的问题是如何从字典中获取第一项(Python3.6之前的任意项),可以这样做:

next(iter(lol['scan'].values()))

或者,破坏性地(这将返回最后一项):

lol['scan'].popitem()[1]

相关问题 更多 >