Hi, Our project often updates our proprietary protocol, we'll call the protocol: ZEPROTO. Our softwares use a single version of ZEPROTO, examples:
All versions use the same ports to communicate and are not necessarily backward compatible. Until now, we didn't have anything specific in the packet which could tell the version of the packet itself. We've added this feature recently, example:
Since we don't have the version bytes in previous version of ZEPROTO and there is no specific pattern allowing us to distinguish a version from data, we can't decode properly. Now (thank you if you've read until here), what can I do ?
What's the best ? asked 10 Mar '16, 05:48 _michel |
One Answer:
Probably easiest to have a single DLL with a protocol preference to manually select the version of protocol to decode the data as. One option for the preference could be "automatic", for use where the protocol has the version in the packet. answered 10 Mar '16, 07:44 grahamb ♦ |
well, that's the problem. For old versions, without the version 4 bytes, there is a chance that the data bytes look like version bytes.
So the user will have to manually set the preference to "old version xxx". Hopefully the users will know what version they are expecting to see.
If there are truly no heuristics available to determine the different protocol versions, then it will have to be done via a manual preference setting.
Using different dissectors means instead of a preference setting the user will have to manually chose "Decode As ..." and the required version. IMHO though, creating different dissectors for a protocol that is likely to have lots in common between the versions is a lot more work.