distributed (?) programmable brute force harness
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haskal 7183bcad33 make sure to flush-output before fsync 1 day ago
agent-deployment implement basic simulated agent, fix issues 4 days ago
crossfire make sure to flush-output before fsync 1 day ago
etc improve robustness of task distribution 2 days ago
.envrc implement basic project support 1 week ago
.gitignore implement embedding config params in agent binary 2 weeks ago
COPYING change gpl to agpl 1 month ago
LICENSE add gpl 1 month ago
Makefile update agent embedding system 2 weeks ago
README.md update progress 1 day ago
license.template get equipped with: obnoxious 3 weeks ago



distributed brute force infrastructure

takes the difficulty out of creating custom brute force jobs



  • 🚧 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
  • 🚧 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 work rate
  • report successes
  • low priority: defer to external brute force program (eg, hashcat on GPU)
  • low priority: support finding all matching inputs for a project, rather than just the first one

client: submit jobs and view progress

  • securely connect to server
  • command line interface
    • crossfire new: create new crossfire project
    • crossfire 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 server
    • crossfire cancel: cancels submitted task
    • crossfire status: check status of task (or network as a whole)
  • low priority: gui interface (racket/gui & framework time)