AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 769308
Accepted
ron
ron
Asked: 2024-02-15 03:33:48 +0800 CST2024-02-15 03:33:48 +0800 CST 2024-02-15 03:33:48 +0800 CST

Como encontrar o endereço MAC não falsificado da NIC

  • 772

No Red Hat Enterprise Linux (RHEL) 8, se alguém fizer isso ifconfig eth0 hw ether abcd12341234,

tudo que sei é ifconfigeip -a ,

então existe uma maneira de obter com segurança o endereço MAC real dessa interface eth0 e, em caso afirmativo, como? ... além de, por exemplo, reiniciar em um live CD do Linux vindo de uma fonte confiável para ter certeza de que o endereço MAC da interface não foi alterado.

network-interface
  • 3 3 respostas
  • 1730 Views

3 respostas

  • Voted
  1. Best Answer
    A.B
    2024-02-15T05:23:47+08:002024-02-15T05:23:47+08:00

    Esta resposta é sobre Linux.

    ifconfigestá obsoleto e não tem acesso a uma API do kernel capaz de fornecer essas informações.

    Esta informação pode ser recuperada há muito tempo com o ethtool --show-permaddr. Exemplo (redigido):

    # ethtool --show-permaddr eth0
    Permanent address: 10:1f:74:32:10:fe
    

    Algumas combinações de placa/firmware/driver podem não ter um endereço permanente e o resultado pode ser assim:

    # ethtool --show-permaddr eth0
    Permanent address: not set
    

    Um /kernel suficientemente recente ip linkfornecerá (possivelmente através de outra API) o endereço permanente sempre que o endereço atual for diferente de um endereço permanente existente, se estiver definido. Por exemplo (redigido):

    # ip link set dev eth0 address 12:34:56:78:9a:bc
    
    $ ip link show dev eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff permaddr 10:1f:74:32:10:fe
    

    Aqui permaddr 10:1f:74:32:10:ferepresenta o endereço MAC original. É fornecido somente quando o endereço MAC atual difere do endereço MAC permanente. Tal mudança também poderia ter acontecido temporariamente, por exemplo, quando uma interface é definida como escravo do vínculo e (dependendo do seu modo) herda o endereço MAC do vínculo.

    Para recuperá-lo programaticamente, mesmo quando não foi alterado, é melhor usar a saída JSON e jq, por exemplo assim:

    ip -json link show dev eth0 | jq -r '.[] | .permaddr // .address'
    

    que recupera o endereço MAC permanente ou, se não for fornecido, o endereço MAC (o que significa que é o endereço MAC permanente inalterado... a menos que não haja nenhum, caso em que é o atual).

    Se isso for importante, primeiro é preciso ter certeza de que existe um endereço permanente, porque, ao contrário ethtooldisso, não parece permitir saber que não existe um endereço permanente conhecido definido para a combinação placa/firmware/driver.

    • 22
  2. Marcus Müller
    2024-02-15T05:17:40+08:002024-02-15T05:17:40+08:00

    Esta resposta é sobre NICs em geral.

    Nada nesse endereço MAC é "irreal". Em geral, nada garante que qualquer placa de rede possua alguma ROM que contenha um endereço MAC exclusivo. Na verdade, você encontrará isso com bastante frequência, especialmente em SoCs, que todo o dispositivo é definido por software e que existe apenas o endereço MAC definido pelo software.

    Então não. Em geral, não existe um endereço MAC "real", e se o seu sistema decidiu mudar o de uma interface, mesmo que fosse real antes, pelo que o seu computador pode saber, esse é o endereço MAC "real".

    PS: Muitas grandes empresas de software tentaram, na década de 1990, vincular suas licenças de software (muitas vezes para software multi-k€!) a endereços NIC, com resultados hilariantes. A Xilinx fez isso até a década de 2010 e foi uma delícia para quem precisava da licença flutuante, mas só tinha licença para um único assento.

    Identificar um computador através de sua interface de rede é um conceito morto, especialmente se você está tentando se defender contra alguém que tem root na máquina: o que os impediria de apenas modificar um driver de kernel para dizer o que você deseja ouvir?

    Se você precisar conseguir isso, existem TPMs. Na verdade, eles são "criptograficamente seguros", pois você não pode programar seu TPM para se comportar como o TPM de outra pessoa, porque para isso você precisaria acessar a memória dentro do TPM dessa outra pessoa que é ilegível externamente. E você não pede seu ID ao TPM (novamente, isso seria falsificado por um driver de kernel), mas pede que ele prove criptograficamente que possui o segredo interno correto, descriptografando algo.

    • 14
  3. Jim L.
    2024-02-15T05:37:42+08:002024-02-15T05:37:42+08:00

    Esta resposta é específica do FreeBSD.

    Os endereços MAC das NICs que foram identificados durante a inicialização mais recente são registrados em /var/run/dmesg.boot:

    $ grep 'Ethernet' /var/run/dmesg.boot 
    em0: Ethernet address: b8:ca:3a:9f:a8:1e
    igb0: Ethernet address: 90:e2:ba:78:ae:40
    igb1: Ethernet address: 90:e2:ba:78:ae:41
    igb2: Ethernet address: 90:e2:ba:78:ae:44
    igb3: Ethernet address: 90:e2:ba:78:ae:45
    
    • 7

relate perguntas

  • Como falar diretamente com a câmera IP através da Ethernet (sem switch, hub, roteadores...). Diferentes sub-redes na câmera e na porta Ethernet

  • Combine qualquer interface ethernet com systemd.networkd

  • Obtendo interfaces inesperadas no CentOS 7

  • Para superar as diferenças no formato do ifconfig Ubuntu16.04 e Ubuntu17.01

  • Acessar VM via IP estático (NAT?)

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve