Есть ли API для Wireshark, разрабатывать программы/плагины, которые взаимодействуют с ним/улучшают его?
Гуглинг не принес мне больших результатов. Существует ли какой-либо API для Wireshark, который абстрагируется от основного исходного кода, чтобы мы могли разрабатывать программы, которые взаимодействуют с ним и обрабатывают данные, которые он предоставляет?
edit: Я ценю предложения по различным способам получения пакетов, но я хочу внедрить пакетную инъекцию в Wireshark. Sniffing станет важной частью моего проекта, однако я не уверен, что предлагаемое решение позволяет вставлять пакеты.
Ответы
Ответ 1
Я использую pypcap
для чтения пакетов и dpkt
для разбора.
Например, чтобы использовать dpkt для чтения пакетов из сохраненного pcap:
import socket
import dpkt
import sys
pcapReader = dpkt.pcap.Reader(file(sys.argv[1], "rb"))
for ts, data in pcapReader:
ether = dpkt.ethernet.Ethernet(data)
if ether.type != dpkt.ethernet.ETH_TYPE_IP: raise
ip = ether.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
print "%s -> %s" % (src, dst)
Чтобы захватить кадры с провода с помощью pypcap:
import pcap
pc = pcap.pcapObject()
dev = sys.argv[1]
pc.open_live(dev, 1600, 0, 100)
pc.setfilter("udp port 53", 0, 0)
while 1:
pc.dispatch(1, p.pcap_dispatch)
Конечно, эти два могут использоваться вместе: (разорвано с домашней страницы pypcap)
>>> import dpkt, pcap
>>> pc = pcap.pcap()
>>> pc.setfilter('icmp')
>>> for ts, pkt in pc:
... print `dpkt.ethernet.Ethernet(pkt)`
Удачи!
Ответ 2
tshark предоставляет CLI для большей части функциональности Wireshark, если вы хотите использовать анализаторы протоколов Wireshark и возможности обработки данных.
Если вы хотите сделать кое-что в Wireshark исходный код, у него есть несколько библиотек C, которые могут быть полезны, особенно wiretap и epan, Примеры его использования можно найти в tshark source. Тем не менее, вы должны установить довольно много лесов для использования библиотек.
Если вы хотите разработать плагины, эта страница может содержать некоторые ответы для вас.
Ответ 3
Попробуйте использовать lua-скрипты, которые у них есть в более новых версиях wirehark.. вы можете писать пользовательские диссекторы (для собственных протоколов и т.д.).
http://wiki.wireshark.org/Lua
Ответ 4
С++ хорошо не удалось найти его, но вот документация по поддержке Python.
http://wiki.wireshark.org/Python
Ответ 5
Мне не удалось найти информацию о том, что это возможно в руководстве разработчика. Так что кажется, что "нет".
Ответ 6
Поскольку существует one, который делает коммерческие продукты, которые несколько интегрируются с wirehark, это должно быть возможно. Кажется, немедленная точка интеграции с данными, которые она производит в соответствии с wikipedia, Wireshark использует libpcap. Быстрый поиск в Google показывает, что существует несколько options
Scapy действительно выглядит интересным, хотя на самом деле он ничего не делает для взаимодействия с wirehark, но вы можете захватывать пакеты с этим.
Ответ 7
wireshark использует libpcap, эта библиотека абстрагирует различия между платформами в обнюхании пакетов и предоставляет формат для файлов данных. что как я буду вводить пакеты в wirehark.