2020-11-07 21:42:43 +00:00
|
|
|
<!--
|
|
|
|
crossfire: distributed brute force infrastructure
|
|
|
|
|
|
|
|
Copyright (C) 2020 haskal
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Affero General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Affero General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
-->
|
2020-11-07 21:12:53 +00:00
|
|
|
# crossfire
|
2020-10-25 05:49:31 +00:00
|
|
|
|
2020-11-07 21:12:53 +00:00
|
|
|
distributed brute force infrastructure
|
2020-10-25 05:49:31 +00:00
|
|
|
|
2020-11-07 21:12:53 +00:00
|
|
|
takes the difficulty out of creating custom brute force jobs
|
2020-10-25 05:49:31 +00:00
|
|
|
|
2020-11-07 21:12:53 +00:00
|
|
|
## 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
|