xenia 630c1b96f0 | ||
---|---|---|
agent-deployment | ||
crossfire | ||
etc | ||
.envrc | ||
.gitignore | ||
COPYING | ||
LICENSE | ||
Makefile | ||
README.md | ||
license.template |
README.md
crossfire
distributed brute force infrastructure
takes the difficulty out of creating custom brute force jobs
status
base
- 🚧 input space manipulation functions
- ✅ data types: using data/integer-set, pattern (vector of integer-set)
- ✅ basic manipulation functions
- ✅ representation of input space as a flat integer
- 🚧 #lang for configuration/definitions
- (input) mode
- stdio: user program gets input by stdio, integers separated by space, one per line
- callback: input generator compiled into user program, user main calls
crossfire_main
with callback function that returns true or false - other modes??
- SMP: performed by crossfire or performed by the user code
- "performed by user code" can also mean GPU, for example
- (input) mode
- 🚧 codegen for input generator (in C)
- ✅ stdio mode
- 🚧 callback mode
- success reporting mechanism
- low priority: configurable "character" type -- currently a "character" is a uint64_t
server: distribute jobs to workers
- ✅ base definitions of input classes and how to divide them
- ✅ dynamic slicing and scheduling based on agents' reported work rate
- low priority: randomized input space distribution
- low priority: store common configuration templates for clients
- low priority: track upload/download progress
- streaming interface for file transfers
- ✅ accept submitted projects (with client-compiled input generator) and distribute to agents
- ✅ low priority: support for multiple architectures
- ✅ agent authentication
- ✅ client authentication
agent: accept and run jobs
- ✅ securely connect to server
- retrieve assigned tasks
- report number of cores available (configurable limit)
- report completions
- report errors
- report successes
- low priority: defer to external brute force program (eg, hashcat on GPU)
- this could be implemented on top of the existing project format
- low priority: support finding all matching inputs for a project, rather than just the first one
- the architecture currently doesn't stop on the first match so it could be a thing
client: submit jobs and view progress
- ✅securely connect to server
- command line interface
crossfire new
: create new crossfire projectcrossfire test
: test project locally, replicates configuration of server with single local agent to debug issues- low priority:
crossfire node-test
: submit a mini-task to a node that has the necessary resources to debug issues crossfire submit
: submit task to servercrossfire cancel
: cancels submitted taskcrossfire status
: check status of task (or network as a whole)
- low priority: gui interface (racket/gui & framework time)