Python y libpcap. encontrar la dirección MAC de origen del paquete
-
26-09-2019 - |
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.
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.
Otros consejos
Oh mi dios hombre, ¿por qué haces esto? Uso Scapy lugar.