Domanda

Sto scrivendo programma Python per costruire cache di mac-address utilizzando pcap. Ma modulo pcap per Python non ha una buona documentazione. Ho trovato questa pagina http://pylibpcap.sourceforge.net/ con esempio di codice e funziona benissimo.

Qualcuno può modificare questo esempio per renderlo in grado di mostrare il mac-indirizzo sorgente per ogni pacchetto? O indicarlo alla documentazione in cui posso leggere su di esso ...

aggiornato

Ecco una parte di codice in cui le informazioni su indirizzi MAC sono stati tagliati.

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'])

Primi 14 ottetti di dati sono destinazione, fonte indirizzo_mac e tipo etere.

    decoded=decode_ip_packet(data[14:])

Ho bisogno di analizzare loro per ottenere queste informazioni. Compito è fatto.

È stato utile?

Soluzione

Google "formati di frame Ethernet". I primi 6 ottetti di un pacchetto è l'indirizzo MAC di destinazione, che è immediatamente seguita dalle 6 ottetti di MAC sorgente indirizzo.

Questa href="http://en.wikipedia.org/wiki/Ethernet_II_framing" rel="nofollow noreferrer"> pagina può aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top