Ask Your Question

proto_new there cannot be two protocols with the same name

asked 2021-10-19 12:45:20 +0000

rneustad gravatar image

updated 2021-10-19 13:27:01 +0000

grahamb gravatar image

Hi there!

I am using Wireshark Version 3.0.2 .

I created new protocol dissector and get the same error msg: proto_new there cannot be two protocols with the same name.

I tried with:

MQTTPROTO ="mqtt_new", "MQ Telemetry Transport New")


MQTTPROTO = Proto("mqtt_new", "MQ Telemetry Transport New")

both options throw exception.

edit retag flag offensive close merge delete


This works fine for me. Do you have more than one .lua file with the same "mqtt_new" name?

cmaynard gravatar imagecmaynard ( 2021-10-19 14:21:05 +0000 )edit

Any reason why you try to add a disssector to an old version?

hugo.vanderkooij gravatar imagehugo.vanderkooij ( 2021-10-19 14:21:24 +0000 )edit

@cmaynard I have a single file with this name. Maybe Wireshark use cheche somewhere? I reopen the app but no success

rneustad gravatar imagerneustad ( 2021-10-19 14:47:23 +0000 )edit

@hugo.vanderkooij I don't understand what do you mean by "add a dissector to an old version". What do you mean? I want that in case of specific code in the packet to process the rest of the packet with costumed MQTT protocol.

if buffer(0,1):uint() == 0x1 then dofile([[path_to_lua_dissector_file]])

What I did wrong?

rneustad gravatar imagerneustad ( 2021-10-19 14:49:20 +0000 )edit

You're working with Wireshark 3.0.2, which went EOL last year (See, so @hugo.vanderkooij is wondering why you're not working with a newer version of Wireshark such as 3.4.9, which is currently the latest stable version of Wireshark.

cmaynard gravatar imagecmaynard ( 2021-10-19 15:03:25 +0000 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2021-10-19 17:59:59 +0000

cmaynard gravatar image

Where is this being called from?

if buffer(0,1):uint() == 0x1 then dofile([[path_to_lua_dissector_file]])

Because I think that is likely the source of your problem. Your "mqtt_new" dissector is already registered but here you seem to be explicitly loading it again. Don't do that.

edit flag offensive delete link more


Ho! That makes sense! so I should I call this file? The line appears in another protocol which works fine! (All the header is processed as expected, but when the it should load the new mqtt protocol there is an error)

rneustad gravatar imagerneustad ( 2021-10-19 18:15:57 +0000 )edit

Maybe something like this?

if buffer(0,1):uint() == 0x1 then
    Dissector.get("mqtt_new"):call(tvb, pinfo, tree)
cmaynard gravatar imagecmaynard ( 2021-10-19 18:22:36 +0000 )edit

tvb is just the typical "testy virtual buffer" name. You need to create the actual tvb from your buffer, i.e., the part of the buffer that gets passed to your "mqtt_new" dissector.

cmaynard gravatar imagecmaynard ( 2021-10-19 18:41:54 +0000 )edit

Thank you very much! It works!!!

rneustad gravatar imagerneustad ( 2021-10-19 18:43:18 +0000 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2021-10-19 12:45:20 +0000

Seen: 1,357 times

Last updated: Oct 19 '21