{"id":25686186,"url":"https://github.com/lethalbit/panko","last_synced_at":"2025-04-23T22:41:06.534Z","repository":{"id":277458708,"uuid":"931807032","full_name":"lethalbit/Panko","owner":"lethalbit","description":"Crispy and Fried modern packet dissection","archived":false,"fork":false,"pushed_at":"2025-03-17T00:03:32.000Z","size":336,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-20T00:54:13.190Z","etag":null,"topics":["packet-analyser","packet-dissection"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lethalbit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":"lethalbit","ko_fi":"lethalbit"}},"created_at":"2025-02-12T22:14:11.000Z","updated_at":"2025-03-17T00:03:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"bb708879-4e56-478b-ab20-b802a3bbcb8f","html_url":"https://github.com/lethalbit/Panko","commit_stats":null,"previous_names":["lethalbit/panko"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lethalbit%2FPanko","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lethalbit%2FPanko/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lethalbit%2FPanko/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lethalbit%2FPanko/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lethalbit","download_url":"https://codeload.github.com/lethalbit/Panko/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250528682,"owners_count":21445511,"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":["packet-analyser","packet-dissection"],"created_at":"2025-02-24T19:07:33.554Z","updated_at":"2025-04-23T22:41:06.523Z","avatar_url":"https://github.com/lethalbit.png","language":"C++","funding_links":["https://github.com/sponsors/lethalbit","https://ko-fi.com/lethalbit"],"categories":[],"sub_categories":[],"readme":"# Panko\n\nPanko is a dedicated packet dissection and analysis tool with a modern and sane API for dissectors.\n\nIt's primary input are compressed or raw [PCAP] and [PCAPNG] files, it then runs dissectors and analysis plugins on the packet stream, and the data can be inspected or exported.\n\n\u003e [!IMPORTANT]\n\u003e Panko doesn't do ***ANY*** capturing, nor does it have the ability to do so, and implementing the\n\u003e needed machinery for it is unplanned. It's mainly geared for ingesting captures from external\n\u003e software or Wireshark itself.\n\u003e\n\u003e There might be the possibility for an [extcap]-like interface in the future to allow for live\n\u003e dissection of an active capture, but once again, Panko won't be doing the capture itself.\n\n## Panko vs Wireshark\n\nPanko was developed in response to the absolute pain using the [Wireshark] C API is, as well as the discarding of potentially vital capture information from the capture files, such as which interface a packet the dissector is looking at came in on, and also any ancillary metadata attached to the packet capture files.\n\n## Dissectors and Analysis plugins\n\n```\nTODO(aki): Document\n```\n\n## Configuring and Building\n\nThe following steps describe how to build Panko, it should be consistent for Linux, macOS, and Windows, but macOS and Windows remain untested.\n\n\u003e [!NOTE]\n\u003e The minimum C++ standard to build Panko is C++23.\n\n### Prerequisites\n\nTo build Panko, ensure you have the following build time dependencies:\n\n* git\n* meson\n* ninja\n* g++ \u003e= 14 or clang++ \u003e= 19\n\nIn addition, the following dependencies are needed to build but have built-in build support if not present on the build system:\n\n* [brotli] (only if `with_brotli` is specified)\n* [cxxopts]\n* [frozen]\n* [libbzip2]\n* [liblz4]\n* [liblzma]\n* [lua] or [luajit]\n* [pybind11]\n* [snappy] (only if `with_snappy` is specified)\n* [spdlog]\n* [tomlplusplus]\n* [zlib]\n* [zstd]\n\n[brotli] and or [snappy] are only needed if the respective `with_` options are enabled, they are used as part of the dissector API to allow decompression of [brotli] and [snappy] compressed buffers respectively.\n\nTo build the GUI, you need the following in addition to the above:\n\n* [Qt6]\n* [KF6] (Only if on Linux and `KDE_INTEGRATION` is enabled)\n\nThe following dependencies are needed for testing and fuzzing:\n\n* [Doctest]\n* [protobuf]\n* [libprotobuf-mutator]\n* [llvm] \u003e= 19\n\nThe [protobuf], [libprotobuf-mutator], and [llvm] dependencies are only needed if you're doing fuzzing, otherwise only [Doctest] is used.\n\n### Configuring\n\nYou can build Panko with the default options, all of which can be found in [`meson.options`]. You can change these by specifying `-D\u003cOPTION_NAME\u003e=\u003cVALUE\u003e` at initial meson invocation time, or with `meson configure` in the build directory post initial configure.\n\nTo change the install prefix, which is `/usr/local` by default ensure to pass `--prefix \u003cPREFIX\u003e` when running meson for the first time.\n\nIn either case, simply running `meson setup build` from the root of the repository will be sufficient and place all of the build files in the `build` subdirectory.\n\n### Building\n\nOnce you have configured Panko appropriately, to simply build and install simply run the following:\n\n```\n$ ninja -C build\n$ ninja -C build test # Optional: Run Tests\n$ ninja -C build install\n```\n\nThis will build and install Panko into the default prefix which is `/usr/local`, to change that see the configuration steps above.\n\n### Notes to Package Maintainers\n\nIf you are building Panko for inclusion in a distributions package system then ensure to set `DESTDIR` prior to running meson install.\n\nThere is also a `bugreport_url` configuration option that is set to this repositories issues tracker by default, it is recommended to change it to your distributions bug tracking page.\n\n## License\n\nPanko is licensed under the [BSD-3-Clause] license. The full text of which can be found in the [`LICENSE`] file.\n\nThe documentation is licensed under the Creative Commons [CC-BY-SA 4.0] and can be found in the [`LICENSE.docs`] file\n\n[PCAP]: https://ietf-opsawg-wg.github.io/draft-ietf-opsawg-pcap/draft-ietf-opsawg-pcap.html\n[PCAPNG]: https://ietf-opsawg-wg.github.io/draft-ietf-opsawg-pcap/draft-ietf-opsawg-pcapng.html\n[extcap]: https://www.wireshark.org/docs/wsdg_html_chunked/ChCaptureExtcap.html\n[Wireshark]: https://gitlab.com/wireshark/wireshark\n[brotli]: https://github.com/google/brotli\n[frozen]: https://github.com/serge-sans-paille/frozen\n[libbzip2]: https://www.sourceware.org/bzip2/\n[liblz4]: https://github.com/lz4/lz4\n[liblzma]: https://github.com/tukaani-project/xz\n[lua]: https://www.lua.org/\n[luajit]: https://luajit.org/\n[pybind11]: https://github.com/pybind/pybind11\n[snappy]: https://github.com/google/snappy\n[spdlog]: https://github.com/gabime/spdlog\n[tomlplusplus]: https://github.com/marzer/tomlplusplus\n[cxxopts]: https://github.com/jarro2783/cxxopts\n[zlib]: https://www.zlib.net/\n[zstd]: https://github.com/facebook/zstd\n[Qt6]: https://www.qt.io/product/qt6\n[KF6]: https://develop.kde.org/products/frameworks/\n[Doctest]: https://github.com/doctest/doctest\n[protobuf]: https://github.com/protocolbuffers/protobuf\n[libprotobuf-mutator]: https://github.com/google/libprotobuf-mutator\n[llvm]: https://llvm.org/\n[`meson.options`]: ./meson.options\n[BSD-3-Clause]: https://spdx.org/licenses/BSD-3-Clause.htm\n[`LICENSE`]: ./LICENSE\n[CC-BY-SA 4.0]: https://creativecommons.org/licenses/by-sa/4.0/\n[`LICENSE.docs`]: ./LICENSE.docs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flethalbit%2Fpanko","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flethalbit%2Fpanko","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flethalbit%2Fpanko/lists"}