# crossfire distributed brute force infrastructure takes the difficulty out of creating custom brute force jobs ## status ### base - 🚧 input space manipulation functions - ✅ data types: interval, iset (interval set), pattern (vector of interval set) - ✅ pos->iset-pos, iset-count, pattern-count - 🚧 partitioning functions - 🚧 #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 - 🚧 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 - ability to compile input generator with different parameters 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 work rate - report successes - low priority: defer to external brute force program (eg, hashcat on GPU) # client: submit jobs and view progress - command line interface - securely connect to server - `crossfire new`: create new crossfire project - `crossfire test`: test project locally, replicates configuration of server with single local agent to debug issues - `crossfire submit`: submit task to server - `crossfire status`: check status of task (or network as a whole) - low priority: gui interface