Pregunta

Estoy escribiendo programa de Python para la memoria caché de direcciones mac-build usando PCAP. Pero módulo de pcap para Python no tiene una buena documentación. He encontrado esta página http://pylibpcap.sourceforge.net/ con el ejemplo de código y funciona bien.

¿Alguien puede modificar este ejemplo para que sea capaz de mostrar el mac-dirección de origen para cada paquete? O que me señale la documentación donde puedo leer sobre él ...

actualización

Aquí está una parte de código donde la información sobre las direcciones MAC fueron cortadas.

def print_packet(pktlen, data, timestamp):
  if not data:
    return

  if data[12:14]=='\x08\x00':
    decoded=decode_ip_packet(data[14:])
    print '\n%s.%f %s > %s' % (time.strftime('%H:%M',
                                           time.localtime(timestamp)),
                             timestamp % 60,
                             decoded['source_address'],
                             decoded['destination_address'])
    for key in ['version', 'header_len', 'tos', 'total_len', 'id',
                'flags', 'fragment_offset', 'ttl']:
      print '  %s: %d' % (key, decoded[key])
    print '  protocol: %s' % protocols[decoded['protocol']]
    print '  header checksum: %d' % decoded['checksum']
    print '  data:'
    dumphex(decoded['data'])

primeros 14 octetos de datos son destino, fuente mac-addr y tipo éter.

    decoded=decode_ip_packet(data[14:])

necesito para analizar ellos para obtener esta información. Tarea se realiza.

¿Fue útil?

Solución

Google "formatos de trama Ethernet". Los primeros 6 octetos de un paquete es la dirección MAC de destino, que es seguido inmediatamente por los 6 octetos de dirección MAC de origen.

Esta href="http://en.wikipedia.org/wiki/Ethernet_II_framing" rel="nofollow noreferrer"> página puede ayudar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top