Python и libpcap. Найти исходный MAC-адрес пакета
-
26-09-2019 - |
Вопрос
Я пишу Python Program для создания кэша MAC-адреса с помощью PCAP. Но модуль PCAP для Python не имеет хорошей документации. Я нашел эту страницу http://pylibpcap.sourceforge.net/ С примером кода и работает нормально.
Может кто-нибудь может изменить этот пример, чтобы он мог показать исходный MAC-адрес для каждого пакета? Или укажите мне документацию, где я могу прочитать об этом ...
обновленный
Вот кодовая часть, где информация о MAC-адресах была разрезана.
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'])
Первые 14 октетов в данных являются пункт назначения, источник Mac-Addr и эфирный тип.
decoded=decode_ip_packet(data[14:])
Мне нужно разобрать их, чтобы получить эту информацию. Задача сделана.
Решение
Google "Форматы кадров Ethernet". Первые 6 октетов пакета - это MAC-адрес назначения, который сразу же сопровождается 6 октетами исходного MAC-адреса.
Этот Страница Википедии может помочь.
Другие советы
Боже мой, человек, почему ты это делаешь? Использовать Скаксировать вместо.