Ask Your Question
0

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 = Proto.new("mqtt_new", "MQ Telemetry Transport New")

and

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

both options throw exception.

edit retag flag offensive close merge delete

Comments

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 https://gitlab.com/wireshark/wireshar...), 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
0

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

Comments

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)
end
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
1

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

Stats

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

Seen: 1,726 times

Last updated: Oct 19 '21