All Projects → sandermvanvliet → ProtobufDecoder

sandermvanvliet / ProtobufDecoder

Licence: MIT license
A Google Protocol Buffers (Protobuf) payload decoder/analyzer

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to ProtobufDecoder

Protofuzz
Google Protocol Buffers message generator
Stars: ✭ 171 (+418.18%)
Mutual labels:  protobuf, protocol-buffers
Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (+524.24%)
Mutual labels:  protobuf, protocol-buffers
Protoc Jar Maven Plugin
Protocol Buffers protobuf maven plugin - based on protoc-jar multi-platform executable protoc JAR
Stars: ✭ 177 (+436.36%)
Mutual labels:  protobuf, protocol-buffers
Protolint
A pluggable linter and fixer to enforce Protocol Buffer style and conventions.
Stars: ✭ 142 (+330.3%)
Mutual labels:  protobuf, protocol-buffers
elm-protobuf
protobuf plugin for elm
Stars: ✭ 93 (+181.82%)
Mutual labels:  protobuf, protocol-buffers
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (+345.45%)
Mutual labels:  protobuf, protocol-buffers
Protobuf Dynamic
Protocol Buffers Dynamic Schema - create protobuf schemas programmatically
Stars: ✭ 186 (+463.64%)
Mutual labels:  protobuf, protocol-buffers
Protobuf.jl
Julia protobuf implementation
Stars: ✭ 127 (+284.85%)
Mutual labels:  protobuf, protocol-buffers
protobuf-ts
Protobuf and RPC for TypeScript
Stars: ✭ 527 (+1496.97%)
Mutual labels:  protobuf, protocol-buffers
Protoman
Postman for protobuf APIs
Stars: ✭ 241 (+630.3%)
Mutual labels:  protobuf, protocol-buffers
Pb And K
Kotlin Code Generator and Runtime for Protocol Buffers
Stars: ✭ 137 (+315.15%)
Mutual labels:  protobuf, protocol-buffers
j2cl-protobuf
Protocol Buffers implementation for J2CL
Stars: ✭ 23 (-30.3%)
Mutual labels:  protobuf, protocol-buffers
Protobuf Java Format
Provide serialization and de-serialization of different formats based on Google’s protobuf Message. Enables overriding the default (byte array) output to text based formats such as XML, JSON and HTML.
Stars: ✭ 134 (+306.06%)
Mutual labels:  protobuf, protocol-buffers
Sbt Protobuf
sbt plugin for compiling protobuf files
Stars: ✭ 163 (+393.94%)
Mutual labels:  protobuf, protocol-buffers
Protoeasy Go
Simpler usage of protoc. Deprecated.
Stars: ✭ 129 (+290.91%)
Mutual labels:  protobuf, protocol-buffers
Go Grpc Examples
This repo contains examples and implementations of different types of GRPC services and APIs using Golang.
Stars: ✭ 180 (+445.45%)
Mutual labels:  protobuf, protocol-buffers
Protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
Stars: ✭ 107 (+224.24%)
Mutual labels:  protobuf, protocol-buffers
Twirp
PHP port of Twitch's Twirp RPC framework
Stars: ✭ 108 (+227.27%)
Mutual labels:  protobuf, protocol-buffers
Protoc Gen Lint
A plug-in for Google's Protocol Buffers (protobufs) compiler to lint .proto files for style violations.
Stars: ✭ 221 (+569.7%)
Mutual labels:  protobuf, protocol-buffers
rules proto grpc
Bazel rules for building Protobuf and gRPC code and libraries from proto_library targets
Stars: ✭ 201 (+509.09%)
Mutual labels:  protobuf, protocol-buffers

ProtobufDecoder

This application helps with analyzing Google Protocol Buffers payloads where you don't have a corresponding .proto file.

Scenarios where you might want to use this is to inspect the result of serialization or when you need to interoperate with a system talking Protobuf but which does not provide a .proto file. It can be used for reverse engineering but bear in mind that this may not be legal in your jurisdiction.

ProtobufDecoder will read and decode binary data that you capture from either a debugger or a tool like Wireshark and parses the tags from the data. You can then analyze the payload to see which tags are present, what their types are (number, strings etc) and if there are embedded messages.

A changelog can be found here

Features

  • List fields in the captured payload and display information on:
    • Tag index
    • Wire type
    • Contents (raw bytes, values)
  • Display the location and size of a specific tag in the binary payload (select a tag in the tree view and it highlights the bytes)
  • Generate a Protobuf spec from the decoded payload (work in progress)
  • Save the generated Protobuf spec to a .proto file
  • Copy the value of a tag as a C# byte array

animated application demo

Usage

Download the latest installer from the Releases page.

When the application starts, open a file that contains a Protobuf payload either via File -> Open or using the keyboard shortcut Ctrl + O.

Please note that at this time the ProtobufDecoder only supports the a file that contains only a single raw Protobuf message. If the file contains a length prefix it will be automatically stripped (since version 0.4.0).

For the keyboard warriors: shortcut keys are available throughout the app and they are hinted in the menu items.

Integrating with other tools

ProtobufDecoder supports opening a file directly by passing in a command line argument:

C:\users\johndoe> ProtobufDecoder.Application.Wpf.exe <path to binary>

This will start ProtobufDecoder and immediately opens the specified file. If the file does not exist or can't be opened the error will be displayed in the status bar.

Building

Currently there is no packaged release of the application which means you will need to compile the application yourself.

  1. Clone this repository
  2. cd into the cloned directory
  3. cd src/ProtobufDecoder.Application.Wpf
  4. dotnet run -c Release

That will restore the necessary packages, build the application and start it.

To make running the application easier after step 3 run:

  1. dotnet publish -c Release
  2. Double-click the executable ProtobufDecoder.Application.Wpf.exe in the src/ProtobufDecoder.Application.Wpf/bin/Release/net5.0-windows/publish folder

You can create a shortcut to that executable in the Start Menu or wherever you wish.

Todo

  • Decode length-delimited tag values that could be strings, packed repeated values or embedded messages
  • Generate .proto file from decoded payload
    • Single tags
    • Optional vs required tags
    • Nested messages (work in progress)
    • Length-delimited tag type hinting (is it a string or a message?) (work in progress)
    • Repeated value tags
  • Package application for download
  • Set up release build for git tags
  • Load a .proto file and apply it to the decoded payload (to verify the .proto file and payload match)
  • Decode groups

License

See LICENSE.

Acknowledgements

This application uses:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].