Skip to content

Building a wireshark dissector for DLMS protocol with C++

License

Notifications You must be signed in to change notification settings

htanwar922/wireshark-dlms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c071e0a · Mar 11, 2025

History

12 Commits
Jul 24, 2024
Jul 25, 2024
Aug 16, 2024
Mar 11, 2025
Mar 11, 2025
Jun 29, 2024
Aug 12, 2024
Aug 12, 2024
Jul 24, 2024
Apr 15, 2024
Jul 24, 2024
Jul 24, 2024
Jul 24, 2024
Apr 21, 2024
Jul 24, 2024
Jun 29, 2024
Jul 24, 2024
Apr 21, 2024
Jul 24, 2024
Mar 11, 2025
Mar 11, 2025
Jul 24, 2024
Apr 21, 2024
Jul 24, 2024
Jul 24, 2024

Repository files navigation

wireshark-dlms

Device Language Message Specification (DLMS) dissector plugin for Wireshark.

The plugin can be used to dissect DLMS protocol, either captured live or imported from a pcap file or hex dump, in TCP packets with destination ports:

  • 4059 (the IANA assigned DLMS port)
  • 4060-4063 (ports used by GuruxDLMS C++ implementation)
  • 4064-4069 (some more ports for user-implementations if desired)

Screenshot

The figure is showing deciphered packets from Gurux DLMS Client-Server communication.

  • The ciphering parameters can be modified in file ./include/dlms-keys.h. Currently, only Security Suite 0 is supported (AES-128-GCM symmetric key encryption and authentication tag).
  • The reassembly of Data With-Block is not working perfectly yet.

Install

GNU/Linux

  1. Install the Wireshark development libraries: sudo apt-get install wireshark-dev
  2. Compile the dlms.so plugin: ./build.sh

License

These files are distributed under the same license as Wireshark (the GNU General Public License version 2).

References

  1. IEC 62056-5-3:2023 (DLMS Green Book)
  2. IEC 62056-6-2:2023 (DLMS Blue Book)
  3. Gurux DLMS C++ implementation
  4. GitHub:bearxiong99 Wireshark DLMS plugin template