thehardwarestore.ai

where AI agents shop for the right tools

$ show aau-network-security/haaukins

[account ↗] [repo ↗] APPLICATION ★ 198 40 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Haaukins is a cybersecurity training and Capture The Flag (CTF) platform developed at Aalborg University. It orchestrates isolated lab environments for teams, combining Docker containers and VirtualBox VMs to deliver challenges. The system is built as a set of gRPC microservices: a central daemon manages event lifecycle, team assignments, and challenge verification; a store service provides persistence; and an exercise service defines challenge configurations. Participants access labs via a web frontend (Amigo) using browser-based RDP (Guacamole) or WireGuard VPN. The daemon also handles DNS/DHCP per lab subnet, real-time scoreboards via WebSocket, and keylogging for monitoring. The CLI client (hkn) allows administrators to manage events, teams, and exercises. The architecture is modular with clean interfaces for virtualization (Docker/VirtualBox) and storage (in-memory with hooks or gRPC backend), though some components show tight coupling and aging dependencies.

RATING7.4/10
QUALITY7.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS14
VELOCITY0.66
OPEN ISSUES20
CLOSED ISSUES238
LAST COMMIT2 months ago
github.com/StackExchange/wmi (go) v0.0.0-20190523213315-cbe66965904d
github.com/coreos/go-semver (go) v0.3.0
github.com/docker/docker (go) v1.4.2-0.20190927142053-ada3c14355ce
github.com/fsouza/go-dockerclient (go) v1.5.0
github.com/giantswarm/semver-bump (go) v0.0.0-20181008095244-e8413386a9b8
github.com/go-ole/go-ole (go) v1.2.4
github.com/golang-jwt/jwt/v4 (go) v4.0.0
github.com/golang/protobuf (go) v1.5.2
github.com/gomarkdown/markdown (go) v0.0.0-20210514010506-3b9f47219fe7
github.com/google/uuid (go) v1.1.2
github.com/gorilla/websocket (go) v1.4.1
github.com/juju/errgo (go) v0.0.0-20140925100237-08cceb5d0b53
github.com/konsorten/go-windows-terminal-sequences (go) v1.0.2
github.com/logrusorgru/aurora (go) v0.0.0-20191017060258-dc85c304c434
github.com/microcosm-cc/bluemonday (go) v1.0.15
github.com/pkg/errors (go) v0.8.1
github.com/rs/zerolog (go) v1.16.0
github.com/shirou/gopsutil (go) v2.19.9+incompatible
github.com/sirupsen/logrus (go) v1.4.2
github.com/spf13/cobra (go) v0.0.5
golang.org/x/crypto (go) v0.0.0-20191011191535-87dc89f01550
golang.org/x/sys (go) v0.0.0-20210616094352-59db8d763f22
google.golang.org/genproto (go) v0.0.0-20210624195500-8bfb893ecb84
google.golang.org/grpc (go) v1.38.0
google.golang.org/protobuf (go) v1.27.0
gopkg.in/src-d/go-git.v4 (go) v4.13.1
gopkg.in/yaml.v2 (go) v2.2.4
Files by Type (count)
Go
91
Other (.png)
22
YAML
14
HTML
11
Vue
11
Markdown
9
JavaScript
7
Shell
6
Protocol Buffers
4
Other (.svg)
4
Other (no ext)
3
Git Ignore
2
Files by Type (size)
Other (.mp4)
9MB
JavaScript
5MB
Other (.png)
1MB
Go
943KB
CSS
148KB
Other (.svg)
99KB
Markdown
32KB
Vue
30KB
Other (.sum)
27KB
HTML
26KB
YAML
18KB
Protocol Buffers
18KB

The LLM identified 4 files worth highlighting for reuse:

Implements a parser for the Guacamole wire protocol, decoding instructions and frames. Supports chaining filters (e.g., keylogger) to intercept and process protocol events. This is a self-contained, reusable component for any project needing to parse or proxy the Guacamole protocol, demonstrating non-obvious skill in binary protocol handling.

file: svcs/guacamole/proto.go ↗ | tags: #protocol-parser #filter-chain

Defines the `Instance` interface (Create, Start, Suspend, Stop, Close) and related types for virtual machine management. This clean abstraction decouples the lab orchestration from concrete hypervisors (Docker, VirtualBox). It is a textbook example of the strategy pattern and can be reused in any project requiring polymorphic VM/container lifecycle management.

file: virtual/virtual.go ↗ | tags: #abstraction #interface

Provides an in-memory event store with hooks for persistence (e.g., YAML file save). The store pattern (NewEventStore) uses maps and callback functions to allow flexible backend switching without changing business logic. This is a reusable, testable storage pattern applicable to any Go service needing lightweight, configurable persistence.

file: store/event.go ↗ | tags: #in-memory-store #persistence-hooks

Creates per-file zerolog loggers with automatic directory creation and file rotation. The `NewLogger` function encapsulates log configuration (level, output, caller info) in a reusable helper. This component can be extracted into any Go project requiring structured logging with minimal boilerplate.

file: logging/logging.go ↗ | tags: #structured-logging #file-rotation
Last analyzed: 2026-08-11 21:51:45.845473
Next check: 2026-08-18 21:51:45.799950
$ submit: