tshark предоставляет интерфейс командной строки для большинства функций Wireshark, если вы хотите использовать анализаторы протоколов и возможности управления данными Wireshark.
Если вы хотите покопаться в исходном коде Wireshark , у него есть несколько библиотек C, которые могут быть полезны, в частности, для прослушивания телефонных разговоров и epan. Примеры его использования можно найти в источнике tshark . Однако для использования библиотек вам придется построить немало строительных лесов.
Если вы хотите разработать плагины, эта страница может дать вам несколько ответов.
Мне не удалось найти никакой информации, указывающей на то, что это возможно, в руководстве разработчика . Так что это, кажется, означает "нет".
Поскольку существует по крайней мере один , который делает коммерческие продукты, которые в некоторой степени интегрируются с проволочными акулами, это должно быть возможно. Похоже, что непосредственная точка интеграции находится с данными, которые она производит согласно википедии, Wireshark использует libpcap. Быстрый поиск в Google показывает, что есть несколько опций
Scapy на самом деле выглядит довольно интересно, хотя на самом деле он ничего не делает для взаимодействия с wireshark, но вы можете перехватывать с его помощью пакеты.
Я использую 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)`
Удачи!
Wireshark использует libpcap, эта библиотека абстрагирует различия платформ в сниффинге пакетов , а предоставляет формат для файлов данных . вот как я вставлял пакеты в wirehark.
Попробуйте сценарий lua, который есть в новых версиях wirehark ... вы можете написать собственные диссекторы (для ваших собственных протоколов и так далее).