Hi Chris,

I confirm that I see the same issue with your Lua script. However, I am
able to dissect the GeoNetworking header normally in another pcap trace
that does not contain my proprietary header that encapsulates my
GeoNetworking PDU. So I think the Native Wireshark gnw Dissector is working
just fine.

However, when I add the custom Dissector for my proprietary header and then
chain the gnw Dissector to it, I am able to see my proprietary headers, but
fail to see the GeoNetworking header dissected.

@Anders: I did not notice anything particular in the way the gnw Dissector
is registered:


> expert_module_t* expert_geonw;
> module_t *geonw_module;
> proto_geonw = proto_register_protocol("GeoNetworking", "GNW", "gnw");
> geonw_handle = register_dissector("gnw", dissect_geonw, proto_geonw);
> proto_register_field_array(proto_geonw, hf_geonw, array_length(hf_geonw));
> proto_register_subtree_array(ett, array_length(ett));
> expert_geonw = expert_register_protocol(proto_geonw);
> expert_register_field_array(expert_geonw, ei, array_length(ei));
>

Am I missing something here?

Thanks again for your help.




On Thu, Feb 13, 2020 at 10:50 PM Maynard, Chris via Wireshark-dev <
wireshark-dev@wireshark.org> wrote:

> I’m not sure what you’re trying to do, but there’s already a Wireshark
> built-in dissector for GeoNetworking[1].
>
>
>
> If you’re trying to replace it for some reason, then you may either need
> to disable that one or remove it completely.  And if you’re trying to
> implement in Lua, then you’ll need to register it as a heuristic dissector
> using register_heuristic[2].  However, it seems that there might be a bug
> with respect to this function[3], as the following simple Lua script seems
> to indicate:
>
>
>
> local p_gnw = Proto("gnwHdr", "GeoNetworkingHdr")
>
>
>
> function p_gnw.dissector(tvbuf, pinfo, tree)
>
>
>
>     local ethertype = tvbuf(12, 2):uint()
>
>     if ethertype == 35143 then
>
>         pinfo.cols.protocol:set("GNW")
>
>         return true
>
>     else
>
>         return false
>
>     end
>
> end
>
>
>
> p_gnw.register_heuristic("eth", p_gnw.dissector)
>
>
>
>
>
> When Wireshark is started with this gnw.lua script loaded, the following
> error message is encountered:
>
>
>
> Lua: Error during loading:
>
> path\to\gnw.lua:14:bad
>
> argument #1 to ‘register_heuristic’ (userdata expected, got string)
>
> stack traceback:
>
>          [C]: in function ‘register_heuristic’
>
>          path\to\gnw.lua:14:
>
> in main chunk
>
>
>
> - Chris
>
> [1]:
> https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob;f=epan/dissectors/packet-geonw.c;h=21290a3b179c8974483a2f762cbe512fbec67103;hb=HEAD
>
> [2]:
> https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html
> (Section 11.6.5.3)
>
> [3]:
> https://osqa-ask.wireshark.org/questions/54158/register-heuristic-function-for-multiple-heuristic-list-names-in-lua
>
>
>
>
>
> *From:* Wireshark-dev <wireshark-dev-boun...@wireshark.org> *On Behalf Of
> *sandip gangakhedkar
> *Sent:* Wednesday, February 12, 2020 4:46 PM
> *To:* wireshark-dev@wireshark.org
> *Subject:* [Wireshark-dev] Unable to detect custom protocol dissector
>
>
>
> Hi,
>
>
>
> I am using a Custom protocol dissector (Lua script) for the GeoNetworking
> header. I have build wireshark 3.2.1 from source on Ubuntu 18.04 and placed
> the Lua script in the Global plugins directory. However, the script fails
> when to find the Geonetworking protocol when I invoke it in the script:
>
>
>
>   Dissector.get("gnw"):call(newTvb, pkt, root)
>
>
>
> So I tried another approach:
>
>
>
>   gnw_dissector = DissectorTable.get("ethertype"):get_dissector(35143)
>
>
>
> The protocol gnw (GeoNetworking) corresponds to an EtherType of 35143 in
> my Wireshark protocols configuration. However, this also fails to find the
> "gnw" protocol.
>
>
>
> How can I get wireshark to detect the GeoNetworking protocol from my
> custom Lua script?
>
>
>
> Thanks in advance.
>
>
>
>
> CONFIDENTIALITY NOTICE: This message is the property of International Game
> Technology PLC and/or its subsidiaries and may contain proprietary,
> confidential or trade secret information. This message is intended solely
> for the use of the addressee. If you are not the intended recipient and
> have received this message in error, please delete this message from your
> system. Any unauthorized reading, distribution, copying, or other use of
> this message or its attachments is strictly prohibited.
> ___________________________________________________________________________
> 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-requ...@wireshark.org
> ?subject=unsubscribe
___________________________________________________________________________
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-requ...@wireshark.org?subject=unsubscribe

Reply via email to