Wireshark-dev: Re: [Wireshark-dev] GUI functionality from plugins
From: Luis EG Ontanon <luis@xxxxxxxxxxx>
Date: Wed, 19 Sep 2012 14:11:51 -0500
Actually, funnel.h implements some GUI functionality that can be used by plugins. More functionality can be added to it. On Wed, Sep 19, 2012 at 9:34 AM, David Ameiss <netshark@xxxxxxxxxxxxx> wrote: > Summary: I'd like to propose implementing a method of making GUI > functionality more accessible from plugins. > > We have developed plugin dissectors for our internal protocols, all of which > are built on top of UDP and TCP. In addition, we've developed several > analytical tools within the plugin. One in particular is modeled after the > TCP flowgraph, and actually uses the graph_analysis.c functions to show > flows at the sub-frame level. > > A little explanation: We have a class of messages that allow one process to > unicast a message to another process. These are TCP, but are not treated as > bidirectional (for a number of reasons which aren't important here). So a > conversation between two such processes (actually, objects within a process, > identified by IP, port, and domain, which is a designator used for > forwarding) really involves a TCP connection from A to B, then another from > B to A. Each such message contains information about the destination > (domain, IP, and port), as well as where it is coming from (domain, IP, and > port). > > In a LAN, everyone is in the same domain, so things are easy. However, much > of our communication takes place across a WAN, between domains, and gateway > processes are used to bridge these domains. So while the ultimate > destination of a message is a specific domain, IP, and port, the message may > actually be sent to a gateway at a different domain, IP, and port. Hence the > destination and source embedded in the message. > > To complicate matters, multiple processes in one domain may be sending > messages to multiple processes in other domains, all sent via the > intervening gateway, and possibly multiple intervening gateways, depending > on where the destination domain actually is. So messages are multiplexed > together between gateways. > > This is not really ground-breaking, I know. > > What we have done is implement a flow-graph that identifies individual > "conversations" (not really the right word in terms of wireshark), and > follows them as they traverse possibly multiple gateway nodes. This is > incredibly useful, as you might imagine. > > This has been implemented following the TCP flowgraph model, which involves > a tap listener (the part of the dissector actually doing the dissection > queues tap packets - actually, since the protocol allows multiple messages > per frame, it can queue multiple tap entries per frame. > > The fundamental problem is that, in order to retap the capture, the plugin > needs access to cfile, which is defined in the Wireshark executable. This > works on Linux and OSX - but not on Windows, because cfile isn't exported. > And I think there are some issues with making symbols from an executable > exported for use by Windows DLLs - probably a solvable problem, but also > probably not easily. > > Yes, I know the best approach is to put our dissectors in the Wireshark > distribution, change from a plugin to a built-in, etc. I've been pushing > that for nearly 2 years. But that's a political issue, and it appears that > the path of least resistance is not to make a decision. So we're stuck with > that for now. > > One idea that occurred to me is the possibility of passing to a dissector a > parameter which gives (controlled) access to some things inside > wireshark/tshark. Possibly as a parameter to proto_register_XXX() or > proto_reg_handoff_XXX(). My thinking is along the lines of a structure which > contains either pointers to variables or callbacks which allow the variables > to be accessed. At minimum, for our purposes, a way to get at cfile is > needed. I'm sure others will have ideas for additional items. And down the > road, as Wireshark moves to a more generic GUI interface (as it seems to be > doing), this could give access to the various GUI components (such as adding > menu entries, although this can be done now via funnel_register_menu()). > > I realize the dissector/GUI split is useful, but I also know it is not in > concrete (the asn1 plugin, for example, creates windows). Short of > integrating our (admittedly application-specific) dissectors into Wireshark > itself, which isn't currently an option, the only way to provide the > analytical functionality is via GUI in the plugin. > > I would appreciate any comments. > > > -- > David Ameiss > netshark@xxxxxxxxxxxxx > ___________________________________________________________________________ > Sent via: Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx> > Archives: http://www.wireshark.org/lists/wireshark-dev > Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev > mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe -- This information is top security. When you have read it, destroy yourself. -- Marshall McLuhan
- Follow-Ups:
- Re: [Wireshark-dev] GUI functionality from plugins
- From: David Ameiss
- Re: [Wireshark-dev] GUI functionality from plugins
- References:
- [Wireshark-dev] GUI functionality from plugins
- From: David Ameiss
- [Wireshark-dev] GUI functionality from plugins
- Prev by Date: Re: [Wireshark-dev] r45005: changes in proto_item_append_string()
- Next by Date: Re: [Wireshark-dev] GUI functionality from plugins
- Previous by thread: [Wireshark-dev] GUI functionality from plugins
- Next by thread: Re: [Wireshark-dev] GUI functionality from plugins
- Index(es):