c++ - trafico - wireshark en windows
¿Existe una API para Wireshark para desarrollar programas/complementos que interactúen con ella o la mejoren? (7)
Dado que hay al menos one que fabrica productos comerciales que se integran un poco con Wirehark, tiene que ser posible. Parece que el punto de integración inmediata es con los datos que produce según wikipedia, Wireshark usa libpcap . Una búsqueda rápida en Google revela que hay varias options
Scapy realmente parece algo interesante, aunque en realidad no hace nada para interactuar con wireshark, pero puedes capturar paquetes con él.
Googlear no me dio grandes resultados. ¿Existe algún tipo de API para Wireshark que se aleje del código fuente principal para que podamos desarrollar programas que interactúen con él y manejemos los datos que proporciona?
Edición: agradezco las sugerencias sobre diferentes formas de recibir paquetes, pero quiero implementar la inyección de paquetes en Wireshark. La inhalación será una parte importante de mi proyecto, sin embargo, no estoy seguro de que la solución sugerida permita la inyección de paquetes.
No pude encontrar ninguna información que indique que sea posible en la guía del desarrollador . Así que eso parece indicar "no".
Pruebe los scripts de lua que tienen en las versiones más recientes de wireshark ... puede escribir disectores personalizados (para sus propios protocolos, etc.).
c ++ no pudo encontrar uno ... ¡pero aquí está la documentación de Wirehark del soporte de Python ...! http://wiki.wireshark.org/Python
wireshark usa libpcap, esta biblioteca extrae las diferencias de plataforma en la detección de paquetes y proporciona un formato para archivos de datos . Así es como inyectaría paquetes en Wirehark.
tshark proporciona un CLI a gran parte de la funcionalidad de Wireshark, si está buscando aprovechar los analizadores de protocolo de Wireshark y las capacidades de manipulación de datos.
Si desea investigar un poco el código fuente de Wireshark, tiene varias bibliotecas de C que pueden ser de utilidad, en particular las escuchas telefónicas y epan. Se pueden encontrar ejemplos de su uso en la fuente tshark . Sin embargo, tienes que erigir un poco de andamios para usar las bibliotecas.
Si está buscando desarrollar complementos, esta página puede contener algunas respuestas para usted.
Uso pypcap
para leer paquetes y dpkt
para analizar.
Por ejemplo, para usar dpkt para leer paquetes de un pcap guardado:
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)
Para agarrar marcos del cable con 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)
Por supuesto, los dos pueden usarse juntos: (arrancado de la página de inicio de pypcap)
>>> import dpkt, pcap
>>> pc = pcap.pcap()
>>> pc.setfilter(''icmp'')
>>> for ts, pkt in pc:
... print `dpkt.ethernet.Ethernet(pkt)`
¡Buena suerte!