atomdrift/hopper
1
0
Fork
You've already forked hopper
0
malware analysis job broker & sample store https://atomdrift.org/
  • Go 87.4%
  • Shell 12.3%
  • Makefile 0.3%
2026年07月14日 01:30:35 -04:00
cmd/hopper back to 56 local workers 2026年07月14日 01:30:35 -04:00
media get stricter about empty fields 2026年04月24日 09:53:30 -04:00
pkgparse add oci/clawhub/github purl tests 2026年07月11日 07:00:50 -04:00
scripts optimizations and hardening 2026年07月13日 16:29:51 -04:00
testdata serve data from more archive formats 2026年06月21日 20:43:49 -04:00
.gitignore add missing pool.go (gitignored) 2026年04月11日 16:32:22 -04:00
.golangci.yml smarter sample serving 2026年06月21日 23:52:41 -04:00
archive.go don't waste so much RAM with unnecessary JSON unmarshals 2026年06月27日 18:04:40 -04:00
archive_test.go don't waste so much RAM with unnecessary JSON unmarshals 2026年06月27日 18:04:40 -04:00
cleave_trait_keys_test.go faster replicas 2026年07月01日 10:06:18 -04:00
extract.go memory consumption adjustments 2026年06月25日 16:28:27 -04:00
extract_formats_test.go serve data from more archive formats 2026年06月21日 20:43:49 -04:00
extract_test.go memory consumption adjustments 2026年06月25日 16:28:27 -04:00
go.mod add sightings triage 2026年07月11日 16:23:34 -04:00
go.sum add sightings triage 2026年07月11日 16:23:34 -04:00
hopper.go tighten up good triage 2026年07月13日 16:43:45 -04:00
hopper_test.go tighten up good triage 2026年07月13日 16:43:45 -04:00
Makefile lower worker count to 40 2026年07月07日 15:19:21 -04:00
migrate.go Add top-3 traits as interpret fallback 2026年07月09日 10:43:50 +02:00
migrate_test.go add support for backfilling based on trait versions 2026年04月18日 20:45:50 -04:00
pg.go tighten up good triage 2026年07月13日 16:43:45 -04:00
promotion_candidates_test.go Add sighted queue 2026年07月10日 14:39:49 -04:00
provenance.go add provenance update ability 2026年06月28日 20:49:27 -04:00
provenance_db_test.go add provenance update ability 2026年06月28日 20:49:27 -04:00
README.md support OmniOS as a server 2026年05月08日 14:58:58 -04:00
schema.sql Add sighted queue 2026年07月10日 14:39:49 -04:00
schema_sqlite.sql Add sighted queue 2026年07月10日 14:39:49 -04:00
sightings_test.go Add sighting category 2026年07月10日 15:56:22 -04:00
sqlite.go tighten up good triage 2026年07月13日 16:43:45 -04:00

hopper

hopper

Job broker and sample store for the atomdrift malware analysis pipeline. Hopper catalogs samples, distributes analysis work to litmus workers, and publishes labeled results to collimator for ML training.

 samples ──► hopper ◄──► litmus workers (pull jobs, return verdicts)
 │
 └──► collimator (ML training)

Workers poll /api/next, fetch bytes from /api/file/{sha256}, and POST results to /api/result. Hopper tracks liveness, retries stuck jobs, and serves a dashboard so you can watch the swarm. Point as many litmus workers as you like at the hopper URL — they'll pull until the queue drains.

Quick start

hopper init --db samples.db # SQLite, for a laptop
hopper load --db samples.db --data ./samples # expects bad/ good/ unknown/
hopper serve # embedded postgres on :5433
hopper load --data ./samples # uses DATABASE_URL

Production deployment

PostgreSQL 18 is recommended; PostgreSQL 17+ is required for JSON_TABLE, which collimator uses to dedupe embedded hashes. On the DB host:

sudo -u postgres psql -c "CREATE ROLE hopper LOGIN PASSWORD 'changeme'; \
 CREATE DATABASE hopper OWNER hopper; ALTER ROLE hopper WITH REPLICATION;"
echo 'localhost:5432:hopper:hopper:changeme' >> ~/.pgpass && chmod 600 ~/.pgpass
hopper init # applies migrations
hopper load --data /srv/samples --dashboard-addr 0.0.0.0:8081 # HTTP API + dashboard

Run the hopper load process under rc.d, systemd, or s6 — it stays up serving the worker API and dashboard. scripts/master/freebsd-bastille.sh is a working FreeBSD/bastille rollout with tuned postgres, hourly pg_dump backups, and a hopper_replica logical-replication publication for replica subscribers. Imports use COPY-based bulk loads and resume with --after <id>.

Commands & building

serve, init, load, import, reset, stats, backfill, purge-unsupported, false-positives, false-negatives, bad-review, benign-review. Run hopper for the full list. Build with Go 1.25+ and CGO: make build && make test && make lint.