Python und libpcap. finden Quelle MAC-Adresse des Pakets
-
26-09-2019 - |
Frage
Ich schreibe Python-Programm zu bauen mac-Adresse Cache mit pcap. Aber pcap-Modul für Python hat keine gute Dokumentation. Ich habe diese Seite gefunden http://pylibpcap.sourceforge.net/ mit Codebeispiel und es funktioniert gut.
ändern kann jemand, dieses Beispiel machen es in der Lage für jedes Paket den Quell-MAC-Adresse zu zeigen? Oder zeigen Sie mir in der Dokumentation, wo ich darüber lesen können ...
aktualisiert
Hier ist ein Codeteil, wo Informationen über MAC-Adressen wurden geschnitten.
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'])
Zuerst 14 Bytes in Daten sind Ziel, Quelle mac-Adr und Ether-Typ.
decoded=decode_ip_packet(data[14:])
Ich brauche sie zu analysieren, diese Informationen zu erhalten. Aufgabe gemacht wird.
Lösung
Google "Ethernet-Frame-Formate". Die ersten 6 Bytes eines Pakets ist die Ziel-MAC-Adresse, die unmittelbar durch die 6 Bytes von Quell-MAC-Adresse folgt.
Die Wikipedia helfen kann.
Andere Tipps
Oh mein Gott Mann, warum tust du das? Verwenden Sie scapy statt.