{"id":18300530,"url":"https://github.com/eclipse-zenoh/zenoh-dissector","last_synced_at":"2025-04-12T13:52:53.796Z","repository":{"id":260106789,"uuid":"877922803","full_name":"eclipse-zenoh/zenoh-dissector","owner":"eclipse-zenoh","description":"Wireshark dissector for the Zenoh protocol","archived":false,"fork":false,"pushed_at":"2025-04-07T00:08:33.000Z","size":2364,"stargazers_count":3,"open_issues_count":5,"forks_count":6,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-07T01:22:34.055Z","etag":null,"topics":["wireshark","zenoh"],"latest_commit_sha":null,"homepage":"http://zenoh.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-zenoh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-24T13:27:17.000Z","updated_at":"2025-04-04T14:59:57.000Z","dependencies_parsed_at":"2024-11-15T01:18:27.644Z","dependency_job_id":"44e2949d-26e6-4796-931e-b9b04dab224d","html_url":"https://github.com/eclipse-zenoh/zenoh-dissector","commit_stats":null,"previous_names":["eclipse-zenoh/zenoh-dissector"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-dissector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-dissector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-dissector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-dissector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-zenoh","download_url":"https://codeload.github.com/eclipse-zenoh/zenoh-dissector/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248576393,"owners_count":21127385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wireshark","zenoh"],"created_at":"2024-11-05T15:12:44.659Z","updated_at":"2025-04-12T13:52:53.789Z","avatar_url":"https://github.com/eclipse-zenoh.png","language":"Rust","funding_links":[],"categories":["Tools"],"sub_categories":[],"readme":"![zenoh dissector banner](./assets/zenoh-dissector.svg)\n\n# Zenoh Dissector in Rust\n\n[Zenoh](http://zenoh.io/) protocol dissector for Wireshark.\n\n\u003e [!WARNING]\n\u003e For Zenoh protocol of version older than 0.10.0, please check the lua plugin [here](https://github.com/eclipse-zenoh/zenoh-dissector/tree/v0.7.2-rc).\n\u003e\n\u003e The plugin currently requires the Wireshark library version 4.4.\n\n## Prerequisites\n\nYou must have Wireshark 4.4 installed on your platform. Please refer to the [download page](https://www.wireshark.org/download.html) or follow the\ninstallation commands below.\n\n## Installation\n\nWe highly recommend following the instructions in the [releases](https://github.com/eclipse-zenoh/zenoh-dissector/releases).\nOr you can follow the following instructions to build your own plugin.\n\n## (Optional) Build the zenoh-dissector from source\n\n### Install dependencies\n\nZenoh dissector is based on Wireshark EPAN (Enhanced Packet ANalyzer) library.\nWe need to install Wireshark with its library. Please follow the steps below according to your operating system.\n\n- Linux (Ubuntu)\n\n    ```bash\n    sudo apt install -y software-properties-common\n    sudo add-apt-repository -y ppa:wireshark-dev/stable\n    sudo apt install -y wireshark-dev\n    sudo apt install -y --allow-change-held-packages wireshark\n    ```\n\n- macOS\n\n    Install Wireshark with [Homebrew](https://brew.sh/).\n\n    ```bash\n    brew install --cask wireshark\n    ```\n\n    Create a symbolic link for linking the wireshark dynamic library later.\n\n    ```bash\n    ln -snf $(find /Applications/Wireshark.app/Contents/Frameworks -name \"libwireshark.*.dylib\" | tail -n 1) libwireshark.dylib\n    export WIRESHARK_LIB_DIR=$(pwd)\n    ```\n\n- Windows\n\n    Install Wireshark with [Chocolatey](https://docs.chocolatey.org/en-us/choco/setup#install-with-powershell.exe).\n\n    ```bash\n    choco install -y --force --no-progress xsltproc docbook-bundle nsis winflexbison3 cmake wireshark\n    ```\n\n### Build the plugin\n\nzenoh-dissector is written in [Rust](https://www.rust-lang.org/), therefore the toolchain [Rustup](https://rustup.rs) is needed to build the program.\n\n```bash\ncargo build --release\n```\n\n\u003e [!NOTE]\n\u003e (Optional) Choose your custom Wireshark library\n\u003e In case you want to build your Wireshark from source and link to this library while building zenoh-dissector.\n\u003e We also support this way via setting enviromental variable. Note that users need to ensure this library can be found\n\u003e while using it with Wireshark.\n\u003e\n\u003e - Windows (Powershell and Windows version \u003e= 10)\n\u003e     For example, assuming that you have Wireshark installed at 'C:\\MyWireshark'. You can tell cargo build to find the Wireshark library you want to link.\n\u003e\n\u003e     ```powershell\n\u003e     $Env:WIRESHARK_LIB_DIR='C:\\MyWireshark'\n\u003e     cargo build --release\n\u003e     ```\n\u003e\n\u003e     Add the folder into the `PATH` so that it can find the dynamic library in runtime.\n\u003e\n\u003e     ```powershell\n\u003e     [System.Environment]::SetEnvironmentVariable('PATH', [System.Environment]::GetEnvironmentVariable('PATH', 'user')+';C:\\MyWireshark', 'user')\n\u003e     ```\n\u003e\n\u003e - Linux (Ubuntu) and macOS\n\u003e\n\u003e     ```bash\n\u003e     WIRESHARK_LIB_DIR=MyWireshark cargo build --release\n\u003e     ```\n\u003e\n\u003e     Add the library into  `LD_LIBRARY_PATH` for linux or `DYLD_LIBRARY_PATH` for macOS.\n\n### Move the plugin to Wireshark's plugin folder\n\n- Linux (Ubuntu)\n\n    ```bash\n    mkdir -p ~/.local/lib/wireshark/plugins/4.4/epan\n    cp ./target/release/libzenoh_dissector.so ~/.local/lib/wireshark/plugins/4.4/epan/libzenoh_dissector.so\n    ```\n\n- macOS\n\n    ```bash\n    mkdir -p ~/.local/lib/wireshark/plugins/4-4/epan\n    cp ./target/release/libzenoh_dissector.dylib ~/.local/lib/wireshark/plugins/4-4/epan/libzenoh_dissector.so\n    ```\n\n- Windows\n\n    ```powershell\n    $epan_dir = \"$Env:APPDATA\\Wireshark\\plugins\\4.4\\epan\"\n    if (-Not (Test-Path $epan_dir)) {\n        mkdir -p $epan_dir\n    }\n    cp .\\target\\release\\zenoh_dissector.dll $epan_dir\n    ```\n\n## Usage\n\n### Example: Sample Data\n\nRunning Wireshark in TUI version\n\nLinux(Ubuntu) and macOS\n\n```bash\ntshark -r ./assets/sample-data.pcap\n```\n\nWindows PowerShell\n\n```powershell\n\u0026 'C:\\Program Files\\Wireshark\\tshark.exe' -r .\\assets\\sample-data.pcap\n```\n\nExample outpout\n\n```bash\n1 0.000000000    127.0.0.1 → 127.0.0.1    TCP 74 60698 → 7447 [SYN] Seq=0 Win=65495 Len=0 MSS=65495 SACK_PERM TSval=1530879817 TSecr=0 WS=128\n2 0.000021385    127.0.0.1 → 127.0.0.1    TCP 74 7447 → 60698 [SYN, ACK] Seq=0 Ack=1 Win=65483 Len=0 MSS=65495 SACK_PERM TSval=1530879817 TSecr=1530879817 WS=128\n3 0.000042754    127.0.0.1 → 127.0.0.1    TCP 66 60698 → 7447 [ACK] Seq=1 Ack=1 Win=65536 Len=0 TSval=1530879817 TSecr=1530879817\n4 0.000342409    127.0.0.1 → 127.0.0.1    Zenoh 88\n5 0.000358149    127.0.0.1 → 127.0.0.1    TCP 66 7447 → 60698 [ACK] Seq=1 Ack=23 Win=65536 Len=0 TSval=1530879817 TSecr=1530879817\n6 0.000488613    127.0.0.1 → 127.0.0.1    Zenoh 138\n7 0.000507245    127.0.0.1 → 127.0.0.1    TCP 66 60698 → 7447 [ACK] Seq=23 Ack=73 Win=65536 Len=0 TSval=1530879817 TSecr=1530879817\n8 0.000602256    127.0.0.1 → 127.0.0.1    Zenoh 124\n9 0.000731706    127.0.0.1 → 127.0.0.1    Zenoh 74\n10 0.001131081    127.0.0.1 → 127.0.0.1    Zenoh 100\n11 0.001280084    127.0.0.1 → 127.0.0.1    TCP 66 60698 → 7447 [ACK] Seq=81 Ack=115 Win=65536 Len=0 TSval=1530879818 TSecr=1530879818\n12 0.501613967    127.0.0.1 → 127.0.0.1    Zenoh 119\n13 0.501667850    127.0.0.1 → 127.0.0.1    Zenoh 70\n14 0.501971515    127.0.0.1 → 127.0.0.1    TCP 66 7447 → 60698 [ACK] Seq=115 Ack=138 Win=65536 Len=0 TSval=1530880319 TSecr=1530880319\n15 0.502048215    127.0.0.1 → 127.0.0.1    TCP 66 60698 → 7447 [FIN, ACK] Seq=138 Ack=115 Win=65536 Len=0 TSval=1530880319 TSecr=1530880319\n16 0.502105376    127.0.0.1 → 127.0.0.1    TCP 66 7447 → 60698 [FIN, ACK] Seq=115 Ack=139 Win=65536 Len=0 TSval=1530880319 TSecr=1530880319\n17 0.502135271    127.0.0.1 → 127.0.0.1    TCP 66 60698 → 7447 [ACK] Seq=139 Ack=116 Win=65536 Len=0 TSval=1530880319 TSecr=1530880319\n```\n\n### Example: Pub/Sub\n\nTake the pub/sub as a example. One can check [here](https://github.com/eclipse-zenoh/zenoh#how-to-build-it) for the building instructions.\n\n![demo-pubsub](./assets/demo-pubsub.png)\n\n### Preferences\n\nZenoh dissector's settings can be changed via the menu bar through `Edit \u003e Preferences \u003e Protocols \u003e\nZenoh` or by right clicking a Zenoh packet and selecting `Protocol Preferences \u003e ZenohProtocol`.\n\nCurrently supported settings are as follows:\n\n- TCP/UDP port selection.\n- (Experimental) Message decompression.\n\n\u003e [!WARNING]\n\u003e Zenoh dissector does not support packet captures that mix compressed and uncompressed messages.\n\u003e Message decompression should be enabled if and only if all Zenoh messages are compressed. If you\n\u003e see a message that reads \"Failed to decode possibly due to the experimental compression\n\u003e preference\", this might indicate that some Zenoh messages are not compressed, while the dissector\n\u003e is configured to decode them as compressed messages (or vice versa).\n\n- (Experimental) Heuristic dissector. This setting is not present in `Edit \u003e Preferences \u003e Protocols \u003e Zenoh`\n  but instead in `Analyze \u003e Enabled Protocols`. Under the `Zenoh` protocol,\n  the two heuristic dissectors `zenoh_tcp_heur` (Zenoh over TCP) and `zenoh_udp_heur` (Zenoh over UDP)\n  can be enabled by switching their respective checkboxes.\n\n\u003e [!IMPORTANT]\n\u003e When enabled, Zenoh dissector will attempt to decode all TCP and UDP packets as Zenoh messages.\n\u003e Note that this might be performance-intensive and could theoretically even lead to decoding\n\u003e non-Zenoh messages. For these reasons, the heuristic dissector is disabled by default.\n\n## License\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-zenoh%2Fzenoh-dissector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-zenoh%2Fzenoh-dissector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-zenoh%2Fzenoh-dissector/lists"}