Skip to content
ZaryobPublic

About

Wireshark-inspired packet analyzer in C++20 and Dear ImGui: pcap/pcapng reading, protocol dissectors, display filters, TLS/DTLS decryption and live capture.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

439 Commits

Folders and files

Repository files navigation

ImShark

English | Türkçe

CI Release workflow Latest release License: GPL-3.0 C++20 Platforms

A Wireshark-inspired packet analyzer built with Dear ImGui. It opens capture files, dissects protocols and combines the packet list with an interactive protocol tree and a hex/ASCII view. Live capture through libpcap is supported as well.

ImShark on macOS: dark theme, a selected HTTP packet, protocol tree and hex view

Native build on macOS (Apple Silicon); the image shows the synthetic sample.pcap from the repository.

Linux (Docker, software OpenGL) — before the UI refresh

ImShark on Linux: packet list, protocol tree and hex/ASCII view

The real application started in Ubuntu 24.04 Docker with Mesa software OpenGL. Reproducible validation.

What it does

  • Capture files: pcap and pcapng; gzip-compressed files; readers for Sun snoop, NetMon 2.x, Endace ERF and AIX iptrace 2.0.
  • Packet inspection: sortable, colorized list, byte highlighting for the selected field, text/hex search and copy.
  • Display filters: protocol and field queries, CIDR, sets and PCRE2 regular expressions evaluated under hard work limits; validation while typing and a field reference.
  • Streams and statistics: TCP/UDP Follow Stream, TCP and IP reassembly, conversations, endpoints, protocol hierarchy and Expert Information.
  • TLS/DTLS: decryption of supported TLS 1.2/1.3 and DTLS 1.2 cipher suites with a key log file or keys embedded in pcapng.
  • Export: all, displayed or selected packets as pcap, pcapng, CSV and JSON; stream data as raw bytes.
  • Live capture: interface selection, BPF filter, snaplen, promiscuous mode and start/stop/restart.
  • Interface: dark and light themes, a welcome screen with recent files, a toolbar and resizable panes; the window size and position are remembered.

Detailed coverage for Ethernet, wireless, IP, DNS, HTTP, TLS, enterprise, database, USB and Bluetooth protocols is in the support matrix. Recognizing a protocol does not mean every field is decoded; the known issues list what is not.

Download

Download the latest release from GitHub Releases: an AppImage, DEB and tar.gz for Linux x86_64, a DMG for macOS Apple Silicon and a ZIP for Windows x86_64. Check your download against SHA256SUMS.txt. The release workflow publishes packages only when every platform check passes. The macOS app is ad hoc signed, without Developer ID signing or notarization (the first time, allow it under System Settings > Privacy & Security > Open Anyway); the Windows build has no live capture.

Versions follow SemVer in the v0.x.y series (v0.8.x → v0.9.x → v0.10.x ...); the release workflow is triggered by a vMAJOR.MINOR.PATCH tag. The v0.9.0 tag produced no packages because of a Windows (MSVC) test build failure; v0.9.1 stopped on Docker Hub outages in the Linux GUI check; v0.9.2 is the first published release. Remaining release checks are tracked in the release backlog; local test results are in the portfolio validation record.

Quick start

Dear ImGui 1.92.9b and its GLFW/OpenGL3 backends are installed through vcpkg.

You need a C++20 compiler, CMake ≥ 3.21, Ninja, Git and a bootstrapped vcpkg, with VCPKG_ROOT pointing at it. The third-party C/C++ libraries of the default build come from the version-pinned vcpkg manifest; see the build guide for platform prerequisites and the optional Npcap setup on Windows.

cmake --preset default
cmake --build --preset default
ctest --preset default

Open the sample capture:

# Linux
./build/imshark tests/data/sample.pcap

# macOS
./build/imshark.app/Contents/MacOS/imshark tests/data/sample.pcap

# Windows (PowerShell)
.\build\imshark.exe tests/data/sample.pcap

imshark --help lists the command-line options; --version works without a display server.

Use File > Open (Ctrl+O; Cmd+O on macOS) for the file picker, or drop a file on the window. python3 tools/make_sample_pcap.py regenerates the sample file.

Example display filters:

tcp.port in {80 443} && !tcp.flags.rst
ip.addr == 10.0.0.0/8 && frame.len > 1000
dns or arp
tls.decrypted

Documentation

You need Document
Platform prerequisites, vcpkg, tests and Docker validation Build guide
Checks that were run and package validation evidence Validation record
Interface, filters, streams and live capture User guide
Live capture privileges and the administrator helper Capture privileges (Turkish)
Accepted display filter fields Generated field reference
File/link/protocol support Support matrix
Protocol specifications and implementation files Protocol references
Functional limits and validation gaps Known issues
What 1.x keeps stable; attackers, mitigations and residual risks Compatibility promise, threat model
Data flow and modules Architecture
Development and adding a dissector Contributing, dissector guide
Next priorities Roadmap
What changed in each version Changelog

The architecture notes, known issues, portfolio validation record and roadmap are written in Turkish.

License

GPL-3.0. Dependencies fetched through vcpkg are under their own licenses; the packaging step adds their license notices to the distribution.

About

Wireshark-inspired packet analyzer in C++20 and Dear ImGui: pcap/pcapng reading, protocol dissectors, display filters, TLS/DTLS decryption and live capture.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages