1
resposta

KeyError "mac"

import nmap

nm = nmap.PortScanner()
nm.scan('162.241.2.243', '21-3389')
nm.command_line()
for host in nm.all_hosts():
    print('NMAP scan report for:', host)
    print('Host is', nm[host]['status']['state'])
    for proto in nm[host].all_protocols():
        print('PORT\tSTATE\tSERVICE')
        for porta in nm[host][proto]:
            aim = nm[host][proto][porta]
            print(str(porta) + '/' + proto + '\t' + \
                aim['state'] + '\t' + aim['name'])
        endereco_mac = nm[host]['addresses']['mac']
        print('MAC Address:' + endereco_mac + '(' + \
        nm[host]['vendor'][endereco_mac] + ')' + '\n')

print Error: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Andre! Como vai?

O erro KeyError: 'mac' que você está enfrentando indica que a chave 'mac' não foi encontrada no dicionário que você está tentando acessar. Isso pode acontecer por vários motivos, mas o mais comum é que o endereço MAC não esteja disponível para o host que você está escaneando. Isso é especialmente comum quando você está fazendo um scan em uma rede remota, onde os endereços MAC não são transmitidos além do gateway local.

Para resolver esse problema, você pode modificar o seu código para verificar se a chave 'mac' existe antes de tentar acessá-la. Aqui está um exemplo de como você pode fazer isso:

# Resto do seu código...

for host in nm.all_hosts():
    # Resto do seu código...
    if 'mac' in nm[host]['addresses']:
        endereco_mac = nm[host]['addresses']['mac']
        print('MAC Address:' + endereco_mac + '(' + \
        nm[host]['vendor'][endereco_mac] + ')' + '\n')
    else:
        print('MAC Address: Não disponível\n')

Neste trecho, antes de tentar acessar o endereço MAC, verificamos se a chave 'mac' existe no dicionário nm[host]['addresses']. Se ela existir, o código prossegue como antes. Se não, ele imprime uma mensagem informando que o endereço MAC não está disponível.

Espero que essa sugestão resolva o problema que você está enfrentando.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.