





Я никогда раньше не использовал pcapy, но использовал libpcap в проектах C. Как указано на странице pcapy, он не связан статически с libcap, поэтому вы можете перейти на более новую версию с поддержкой IPv6.
Согласно журнал изменений libpcap, версия 1.0, выпущенная 27 октября 2008 года, имеет поддержку IPv6 по умолчанию (предполагается, что IPv6 будет намного дольше, но теперь он скомпилирован по умолчанию с этой опцией), поэтому вы должны иметь возможность захватывать трафик IPv6 с этой версией. . Последний выпуск pcapy выпущен 27 марта 2007 г., поэтому он должен включать максимум версии 0.9.8 libcap, выпущенной 10 сентября 2007 г.
Я не знаю, будет ли этого достаточно для вас, чтобы иметь возможность захватывать трафик IPv6, поскольку pcapy API, вероятно, потребует некоторых изменений для его поддержки, и это на крыше разработчика pcapy.
Обновлять: очевидно, что pylibpcap, оболочка python для libpcap, имеет более новые версии, чем pcapy, поэтому новые функции libpcap должны поддерживаться лучше.
Дополнительная информация о PCAP (libpcap) в целом здесь.
Я говорил не о захватывать пакетов IPv6 (что-то, что libpcap делает уже очень давно), а об их декодировании. libpcap не декодирует, вам придется делать это самостоятельно с помощью низкоуровневых трюков C. pcapy поставляется с декодерами.
Scapy, рекомендованный разработчиками Impacket, в настоящее время не имеет декодирования IPv6. Но для этого есть неофициальное расширение.
С этим расширением он работает:
for packet in traffic:
if packet.type == ETH_P_IPV6 or packet.type == ETH_P_IP:
ip = packet.payload
if (ip.version == 4 and ip.proto == UDP_PROTO) or \
(ip.version == 6 and ip.nh == UDP_PROTO):
if ip.dport == DNS_PORT and ip.dst == ns:
all_queries = all_queries + 1
но это ужасно медленно для больших следов. Так что, возможно, мне все же придется попробовать Impacket или даже вернуться к C.
Вы можете использовать действительно полезную однофайловую библиотеку от Google из
http://code.google.com/p/ipaddr-py/
который поддерживает IPv4, IPv6, проверку IP, управление маской сети и префиксом и т. д. Он хорошо закодирован и задокументирован.
Удачи Эмилио
это можно сделать в Ubuntu с помощью apt-get install python-ipaddr
Похоже, IPv6 был добавлен в impacket: code.google.com/p/impacket/downloads/…