Wireshark mailing list archives
Re: Wireshark-dev: Re: Lua embedded into C++
From: Peter Wu <peter () lekensteyn nl>
Date: Tue, 14 Mar 2017 14:40:49 +0100
On Mon, Mar 13, 2017 at 10:25:17PM +0000, Kunal Thakrar wrote:
My aim for my module is to create a web browser agnostic developer's tools, similar to Chrome and Firefox. When a user opens my module they will see all the current TCP conversations occurring on their system (this works in a similar way to the Conversation dialog). A user will be able to choose a conversation. From there I want to be able to use listeners to see all the packets to do with that conversation which they selected on a new GUI window, and hopefully be able to implement some sort of check whether there are HTTP or https packets etc. In my previous email thread Peter Wu mentioned "The classes included with the WSLUA API are not designed to be registered with multiple users. If you are lucky, it sometimes does not work as expected (due to shared global variables, registrations to other parts of the dissector APIs), if you are unlucky it will just crash." Which seems to be the problem I am running into. So my question is, is there a way to get around these problems with the Lua stack or would it be easier to create/register listeners and post dissectors in C and C++ and if it is, how would I go about doing it?
I think you can still use Lua as long as you load it through the "normal" methods (putting the Lua script in the plugins directory or using -Xlua_script:path/to/alert.lua). This will allow your Lua code to be executed as post-dissector or listener. Note that the Wireshark core will then invoke your Lua code, you should not call the Lua code from your C++ module. To trigger the post-dissector, I think your best chance will be invoking the redissection routines. Some grepping around points to something like MainWindow::redissectPackets (no idea whether it works for you, ymmv). If you have some functionality to expose to the Lua script, maybe you could register a class as usual (luaL_newmetatable, luaL_setfuncs, etc.), but you have to be careful to leave the Lua stack pointer unchanged. -- Kind regards, Peter Wu https://lekensteyn.nl ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Wireshark-dev: Re: Lua embedded into C++ Kunal Thakrar (Mar 13)
- Re: Wireshark-dev: Re: Lua embedded into C++ Peter Wu (Mar 14)