Skip to content

CrackQ Queuing System Explained

f0cker edited this page Nov 11, 2020 · 15 revisions

The Queue System

Docker Diagram

CrackQ uses Redis for queuing, there are currently 3 queues all using FIFO:

  • default - This is the main queue which you see in the GUI.
  • speed_check - This is a hidden queue which runs as soon as a job is added to the main queue. It triggers a pause operation in the main queue while it performs a *show* check and a *speed_only* check on the new job. This information is then used to provide cracked hashes from the profile immediately and also to make the decision on whether or not to enable the brain. An ETA estimation will likely be added to this in future to help organise jobs for better efficiency.
  • reports - This queue handles the processing of a password analysis report request.
There will be at least one additional queue included at a future date to handle low priority jobs that should only crack during idle time.

If you ever experience any unexpected issues with the queuing, the best workaround is to disable the brain during job creation.

Queues

Each queue has 3 registries/lists; Started, Complete or Failed. When a job is stopped or complete it can be found in the Complete list etc.

The Job Life-cycle

Each queue has a worker assigned to it, within it's own process handled by Circusd. The worker, when idle, will check for queued jobs and run them. There are 4 states for jobs in the main/default queue, this information is visible under the 'CrackQ State' key/value in the job details:

  • Run/Restored - job is currently set to run
  • Delete - job is marked for deletion, this may take up to a minute to clear down the Hashcat state
  • Stop - job is marked to stop, this may take up to a minute to clear down the Hashcat state
  • Pause - job has been marked to pause, due to the addition of a new job which is undergoing a speed check

Further Notes