Jump to content
Sign in to follow this  
gnoo

Onde é que é feita a alteração do endereço MAC?

Recommended Posts

Saudações,

Eu queria tentar fazer um "mac changer", e tenho lido algumas coisas que me indicam que o mac poderá ser alterado na eeprom, eprom, talvez... Mas não compreendi muito bem. Alguém sabe como isso é feito na prática?

Share this post


Link to post
Share on other sites
Posted (edited)
# ip link eth0 set macaddr xx:xx:xx:xx:xx:xx

Se o device aceitar... Obtenha a lista de devices com:

# ip link

 

Edited by fredericopissarra

Share this post


Link to post
Share on other sites

@fredericopissarra não sei se me fiz entender bem.

O que eu quero é fazer um script em C ou em python que altere o endereço MAC, e também não quero usar bibliotecas para executar comando do sistema, na realidade por motivos educacionais quero fazer a alteração do MAC diretamente na memória ( se for essa forma ).

No exemplo que tu usaste com programa " ip " onde é que ele está a fazer essa alteração quando executamos o comando mencionado ?  quando iniciamos  o sistema o endereço que pertence à placa de rede deve ficar numa memória qualquer sem ser alterado, certo? onde? 

Questões a ponderar são:

A alteração desse endereço deve ser feito ( " reescrito " ), na memória?

Se deve ser "reescrito" na memória em que memória deve ser feita essa alteração?

Se a opção for "reescrever" na memória riscos envolvidos nisso?

 

Share this post


Link to post
Share on other sites
1 hora atrás, gnoo disse:

@fredericopissarra não sei se me fiz entender bem.

O que eu quero é fazer um script em C ou em python que altere o endereço MAC, e também não quero usar bibliotecas para executar comando do sistema, na realidade por motivos educacionais quero fazer a alteração do MAC diretamente na memória ( se for essa forma ).

No exemplo que tu usaste com programa " ip " onde é que ele está a fazer essa alteração quando executamos o comando mencionado ?  quando iniciamos  o sistema o endereço que pertence à placa de rede deve ficar numa memória qualquer sem ser alterado, certo? onde? 

Questões a ponderar são:

A alteração desse endereço deve ser feito ( " reescrito " ), na memória? 

Se deve ser "reescrito" na memória em que memória deve ser feita essa alteração?

Se a opção for "reescrever" na memória riscos envolvidos nisso?

 

Não tenho muito conhecimento na área de redes, mas acredito que este projeto pode lhe ajudar: SpoofMAC for debugging

Share this post


Link to post
Share on other sites
6 horas atrás, gnoo disse:

quando iniciamos  o sistema o endereço que pertence à placa de rede deve ficar numa memória qualquer sem ser alterado, certo? onde? 

É no contexto do driver da placa de rede em kernelmode e/ou nos serivços de rede do SO, também em kernelmode. Você não vai conseguir alterar isso em usermode.

A maneira como programas como ipifconfig, etc fazem é através de bibliotecas userland, que por sua vez invocam syscalls ou falando via socket. Você pode espiar como o ip faz em userland com o ltrace:

# ltrace ip link set eth0 address de:ad:be:ef:b0:b0

Aqui fez via socket.

Se quiser ver as syscalls chamadas, você pode usar a opção -S do ltrace ou usar o strace. No entanto, vai cair nas syscalls de rede de qualquer forma.

Alternativas incluem a netlink (man 7 netlink / rtnetlink).

Mas se realmente quiser fazer na memória, você vai precisar de um driver (kernel module, como são chamados no Linux) pra mudar o que pode ser visto em /sys/class/net/eth0/address (não adianta tentar mudar diretamente aqui... o endereço MAC exibido aqui é gerenciado pelo kernel, logo, em kernelmode).

4 horas atrás, kassane disse:

Se a opção for "reescrever" na memória riscos envolvidos nisso?

Vai depender de quão esperto é o código do teu módulo. Buscando nas estruturas certas, não me parece muito perigoso, mas um find na área de memória do kernel toda é loucura. Não que não deva ser feito (adoro loucura! haha) como PoC.

E isso tudo só vale pra Linux. 😀 Então se quiser fazer no Windows, muda tudo...

Abraço e boa sorte! Vou curtir ver isso pronto, independente do caminho escolhido.

 

Share this post


Link to post
Share on other sites

Olá @kassane tudo bem, o projeto que tu estás a indicar ele segue precisamente o caminho que eu não quero,  eu não quero usar este tipo de utilitários do sistema, e como podemos ver no código do projeto em questão:

 def set_interface_mac(self, device, mac, port=None):
        """
        Set the device's mac address.  Handles shutting down and starting back up interface.
        """
        # turn off device & set mac
        cmd = "ifconfig {} down hw ether {}".format(device, mac)
        subprocess.call(cmd.split())
        # turn on device
        cmd = "ifconfig {} up".format(device)
        subprocess.call(cmd.split())

ele está a criar sub-processos, auxiliado com o programa " ifconfig ", eu quero ir um pouco mais fundo do que isso, aquilo que ele faz, isso eu já sei fazer qualquer das formas obrigado por mostrar esse projeto pode servir para outras coisas, nunca se sabe, tirar  uma  ideia...

 

@Fernando Mercês  obrigado pelas dicas com certeza vão ser muito úteis, na escolha do caminho a seguir, quando tiver pronto eu deixo ai o resultado, mas ainda vai demorar um bocado eu tenho outras prioridades no momento e não tenho cabeça para tudo, mas já vai dar para tentar desenhar uma estratégia de estudo e material a reunir, provavelmente vou ter que cair em cima do código do programa "  ip ", para analisar isso melhor. Acho que vai ser interessante ficar a perceber como realmente funciona até para futuras ferramentas ou scripts que possam surgir... a estratégia de usar subprocess do python é um pouco primitivo, temos que refinar um pouco mais isso...

Obrigado, abraço. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...