Unix maneira de enviar / transmitir raw Ethernet frame

6

Eu quero enviar dados Ethernet em bruto, como o netcat para Ethernet em vez de TCP. Qual é a maneira mais simples de fazer isso no Unix? Até agora, parece que preciso escrever minha própria ferramenta.

    
por jtpereyda 15.11.2016 / 23:59

2 respostas

3

Bastante simples de conseguir em Python, consulte Github: Uma forma de enviar pacotes Ethernet brutos em Python

from socket import *
def sendeth(src, dst, eth_type, payload, interface = "eth0"):
  assert(len(src) == len(dst) == 6) # 48-bit ethernet addresses
  assert(len(eth_type) == 2) # 16-bit ethernet type
  s = socket(AF_PACKET, SOCK_RAW)
  s.bind((interface, 0))
  return s.send(src + dst + eth_type + payload)

if __name__ == "__main__":
  print("Sent %d-byte Ethernet packet on eth0" %
  sendeth("\xFE\xED\xFA\xCE\xBE\xEF",
          "\xFE\xED\xFA\xCE\xBE\xEF",
          "\x7A\x05",
          "hello"))
    
por 16.11.2016 / 00:05
0

O Scapy faz o favor para você? Ele permite que você construa seus próprios pacotes. → link

    
por 16.11.2016 / 01:11