{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/src/App.jsx",
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/src/protobufDecoder.js",
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/src/protobufPartDecoder.jsx",
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/src/ProtobufPart.jsx",
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/package.json",
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/.circleci/config.yml",
    "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/LICENSE",
    "https://protobuf-decoder.netlify.app/"
  ],
  "category": "protocol-analysis",
  "description_en": "Pawit Pornkitprasan's React web application for decoding Protocol Buffers data without the original .proto files, offered as a hosted page or run locally, with all decoding done in the browser. Pasted hex or base64 input, or an uploaded file, is split into a table of byte ranges, field numbers, wire types and contents: varints are shown as unsigned, two's-complement and zigzag integers, fixed32 and fixed64 values as integers and floating-point numbers, and length-delimited fields as nested messages when they parse cleanly, otherwise as UTF-8 strings or bytes. It skips a leading gRPC message header and can optionally split a stream of varint length-delimited messages.",
  "description_zh": "Pawit Pornkitprasan 开发的 React 网页应用，用于在没有原始 .proto 文件的情况下解码 Protocol Buffers 数据；既有在线托管页面，也可在本地运行，所有解码都在浏览器中完成。粘贴的十六进制或 base64 数据（也可上传文件）会被拆分成表格，列出字节范围、字段编号、线路类型和内容：varint 同时显示为无符号整数、补码整数和 zigzag 编码整数，fixed32 和 fixed64 显示为整数和浮点数，长度分隔字段若能完整解析则显示为嵌套报文，否则显示为 UTF-8 字符串或字节。它会跳过开头的 gRPC 报文头，还可选择按 varint 长度前缀拆分连续的多条报文。",
  "entry_url": "https://awesomerea.org/resources/pawitp-protobuf-decoder/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/pawitp-protobuf-decoder/",
  "evidence_url": "https://github.com/pawitp/protobuf-decoder/blob/7d0b5edecbbbd38c1230ba9301359cc27e373c23/README.md",
  "group": "tools",
  "id": "pawitp-protobuf-decoder",
  "json_url": "https://awesomerea.org/resources/pawitp-protobuf-decoder/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/pawitp-protobuf-decoder/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/pawitp-protobuf-decoder/index.md",
  "name": "Protobuf Decoder",
  "name_zh": "Protobuf Decoder 无定义 Protobuf 网页解码器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "No releases or tags; package.json declares a private 0.1.0 package. The reviewed master commit of 2026-10-17 is a Dependabot dependency bump, and the most recent functional changes added file upload in 2024 and varint length-delimited input in 2025. CircleCI runs the Vitest unit tests on Node 20.11 and uploads coverage to Codecov.",
    "The hosted page at protobuf-decoder.netlify.app needs only a browser, and the app states that all decoding is done locally in JavaScript. Running it locally needs Node.js and npm: npm install, then npm start for the Vite development server, or npm run build for a static build.",
    "Decoding is schema-less and heuristic: field names and declared types are not recovered, each length-delimited field is guessed to be a nested message, string or bytes, the source marks repeated-field support as a TODO, and the group wire types are not handled, so decoding stops there and the remaining input is shown as left-over bytes. It only decodes; there is no editing, re-encoding or proxy integration, and users supply their own captured messages.",
    "MIT (Copyright 2019 Pawit Pornkitprasan)."
  ],
  "requirements_zh": [
    "没有发行版或标签；package.json 声明的是私有的 0.1.0 软件包。所审阅的 2026-10-17 master 提交是 Dependabot 依赖升级，最近的功能性改动是 2024 年加入的文件上传和 2025 年加入的 varint 长度前缀输入。CircleCI 在 Node 20.11 上运行 Vitest 单元测试，并将覆盖率上传到 Codecov。",
    "托管在 protobuf-decoder.netlify.app 的页面只需浏览器即可使用，应用说明所有解码都在本地通过 JavaScript 完成。在本地运行需要 Node.js 和 npm：先运行 npm install，再用 npm start 启动 Vite 开发服务器，或用 npm run build 生成静态构建。",
    "解码不依赖定义文件，属于启发式推断：无法恢复字段名称和声明类型；每个长度分隔字段都要猜测是嵌套报文、字符串还是字节；源码将重复字段支持标为待办；也不处理 group 线路类型，遇到时解码会停止，剩余输入显示为未解析字节。它只负责解码，不能编辑、重新编码，也没有代理集成；待分析的报文需由用户自行获取。",
    "采用 MIT 许可（Copyright 2019 Pawit Pornkitprasan）。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/pawitp/protobuf-decoder",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
