Python e libpcap. trovare l'indirizzo MAC sorgente del pacchetto
-
26-09-2019 - |
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.
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.
Altri suggerimenti
Oh mio dio uomo, perché stai facendo questo? Usa Scapy .