Skip to content

encounter/ghidra-panel

 
 

Repository files navigation

Ghidra Community Panel

The Ghidra community panel assists with collaborative reverse engineering. It features:

  • A self-service portal to allow users to create an account and request access to repositories
  • A web interface for repository administrators to manage user access

This repository is not an official Ghidra project.

Home Page Repo Page

Design

ghidra-panel introduces the following components:

  • SQLite database storing hashed user credentials
  • JAAS plugin implementing a Ghidra authentication provider
  • gRPC server providing an API for the panel to interact with Ghidra
  • Web server, written in Go
  • Discord OAuth2 integration to authenticate users, and link Ghidra usernames to Discord usernames
    • Discord was chosen because all RE communities I've worked with use it
    • I'm open to adding OAuth 2.0 / OpenID Connect to support other SSO providers
flowchart LR

subgraph User
    GhidraClient[Ghidra Client]
    Browser[Web Browser]
end

subgraph GhidraServer[Ghidra Server]
    JAASPlugin([JAAS Plugin])
    gRPCServer([gRPC Server])
end
Panel[Panel Server]
SQLite[(SQLite)]
Discord

GhidraClient --> GhidraServer
Browser --> Panel
Panel --> gRPCServer ~~~ SQLite
Panel --> SQLite
Panel --> Discord
JAASPlugin --> SQLite
Loading

Philosophy

This software serves a hobbyist community with limited time. As such, it aims to be simple, reproducible, and easy to maintain.

This rules out extensive use of external software, such as libraries, database servers, auth servers, etc. Any such software would require continuous updating.

This further means:

  • No fancy IdP or access controls
  • A Go-based web server is a safe choice, as the standard library contains almost everything we need
  • Web pages rendered server-side

Acknowledgements

This panel currently powers decomp.dev, a shared space for GC/Wii decompilation projects.

Special thank you to the mkw.re contributors for creating the original project.

About

Ghidra Community Panel simplifies user management

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 54.6%
  • Java 42.6%
  • CSS 1.3%
  • Makefile 1.1%
  • Shell 0.4%