Dosu LogoDosu Logo
Ask
Join our Discord
Organization avatar
HashHivePublic
EvilBit Labs LLC
DocumentsHashHive
attack
attack
Type
External
Status
Published
Created
Jul 18, 2026
Updated
Jul 18, 2026
Source
docs/v2_rewrite_implementation_plan/notes/original_notes/attack.md

Attack Editor Pain Points#

OK, the next set of pain points involve Attack editing.

  • In the previous version the attack editor takes over the entire session and is just a single form that is hard to navigate with every hashcat attack option in there, even though my users never use several of them.
  • One issue that applies to all attacks is that there should be an indicator in the attack editor that tells you same keyspace number and complexity value as would be shown in the campaign view, but it updates dynamically as you modify the attack settings. So the backing endpoint needs to handle attacks that are not persisted.
  • Another issue is that if you modify an attack that has been exhausted or is already running, it should warn you and demand confirmation. If you click yes, it should kick the attack back to pending and it should start over on the agent.
  • A few issues that are specific to different attacks. I'll break these up by attack type:
    • Dictionary:
      • The user should be able specify how many characters they think it might be with the defaults in the minumum and maximum fields being the defaults for the hash_type (or just 1 to 32 since they're usually keep the optimize kernel feature on).
      • The word list selection should be done with a searchable drop down that should show the number of entries in the word list and maybe be sorted by last modified so the most recent ones show up first
      • They should be able to add some very simple rules by clicking some "Modifiers" buttons such as "+ Change case", "+ Change Character Order", and "+ Substitute Characters". They shouldn't have to understand how that works under the hood. This gives them basically a dictionary attack + rules, without them realizing that's what they're doing.
      • If they do know what they're doing, they should be able to select a rules list file.
      • There should an option in the dictionary attack editor to choose "Previous Passwords" instead of a specific dictionary, in which case it should just use every plain text that has ever been recovered for the entire project.
      • Similar to how I'll describe for mask attack, you should be able to choose not to use "Previous Passwords" or a dictionary file and instead be able to add a single word. You should have a small button in this fieldset that says "Add word" that adds another small text field to add another word. This has the effect of creating a one-time use word list that only applies to this attack and doesn't show up in the larger list of available word lists and is deleted when the attack is deleted.
    • Mask (manual, not mask list file):
      • When creating a new mask attack you should be able to add a containing the mask, but then click a small button "Add mask" and add another line with a mask. There should be an X button next to the mask input line to remove the mask entry. This has the effect of basically generating a one-time mask list that applies only to that attack and shouldn't show up in the Resource Browser or when generating other attacks. It also gets deleted when the attack gets deleted.
      • If you put an invalid character in the mask field, it should indicate the edit field is invalid just like it would for a normal editor field.
    • Brute Force:
      • This is basically an incremental mask attack, but with a nicer UI. You should have check boxes with the different character types ("Lowercase", "Uppercase", "Numbers","Symbols", "Space") and it should create a mask that is basically ?1 * maximum_increment_number and then the first custom characterset is the tokes for whichever character type is selected in the UI. So, if the user pick the range of 5 to 7 characters with only lowercase and numbers selected you'd have the mask as ?1?1?1?1?1?1?1 and character set 1 being ?l?d. It's a connivence for the user.
  • Users have asked for the ability to save an attack or an entire campaign as a file to their local computers and then load it in later to create new campaigns. We can define our own schema, but it should be JSON-based.
Documents
.impeccable
0001-agent-enrollment-two-token-exchange
0002-docker-supervision-over-pm2
0003-bind-agent-to-enrollment-token
0004-agent-api-revisable-until-1.0
0005-version-public-api-after-1.0
0006-seaweedfs-over-minio
0007-three-api-surfaces
0008-betterauth-over-handrolled-jwt
0009-postgres-task-store-bullmq-orchestration
0010-schema-first-drizzle-zod
0011-pull-advisory-notify-task-distribution
0012-in-memory-websocket-v1-redis-deferred
0013-route-as-spec-hono-zod-openapi
0014-turborepo-bun-over-nx
0015-append-only-telemetry-timescaledb-rrd
0016-server-fanout-bus
0017-adaptive-task-sizing-lease
0018-real-db-integration-test-lane
0019-campaign-archiving-immutable-lifecycle
155-ac-traceability-matrix
155-task-distribution-assignment-spec
156-ac-traceability-matrix
156-object-storage-file-management-spec
160-login-project-selection-ui
2026-05-25-websocket-realtime-infrastructure-requirements
2026-05-29-dashboard-stats-and-read-endpoint-contract-requirements
2026-05-31-openapi-auto-generation-migration-requirements
2026-06-08-results-analysis-export-ui-requirements
2026-06-19-task-distribution-architecture
2026-06-20-campaign-archiving-requirements
2026-06-30-hash-export-import-search-requirements
227-spa-deep-link-refresh-redirect-spec
94-p0-cracker-binary-management-agent-auto-update
96-keyspace-task-distribution-spec
97-task-preemption-spec
99-attack-complexity-state-machine-spec
AGENTS
AGENTS
AI_POLICY
AI_POLICY
ARCHITECTURE
ARCHITECTURE
Agent_Authentication_&_Authorization
Agent_Heartbeat_&_Error_Handling
Agent_List_&_Detail_UI
Base Model Schema System
BullMQ_Queue_Architecture_&_Redis_Integration
CLAUDE
CONTRIBUTING
CONTRIBUTING
Campaign_Creation_Wizard_UI
Campaign_List_&_Detail_UI
Campaign_Orchestration_API
Code Quality Automation with Husky and Kiro Hooks
Core_Flows__HashHive_User_Journeys
Dashboard_&_Real-Time_Monitoring_UI
Dashboard_Stats_API_Endpoint_(GET__api_v1_dashboard_stats)
Development Workflow and Tooling Integration
ESLint and Formatting Configuration
Epic_Brief__HashHive_-_Modern_Distributed_Password_Cracking_Platform
GOTCHAS
GOTCHAS
Health Check Endpoint Enhancements
Login_&_Project_Selection_UI
MERN_proposal
Mixed Hash Type Detection & Automatic Campaign Splitting (#202)
MongoDB Connection Management
Object_Storage_&_File_Management
Project_Selection_&_User_Authentication_API
README
README
README
README
README
README
Real-Time_Events_&_WebSocket_Infrastructure
Resource_Management_API
Resource_Management_UI
Results_API_&_CSV_Export_(Dashboard_Backend)
Results_Analysis_&_Export_UI
SECURITY
SECURITY
STRATEGY
Task_Distribution_&_Assignment
Tech_Plan__HashHive_Architecture
Testing Strategy for Database and Models
advanced_task_scheduler
agent
agent-resource-protocol
agent-server-collaboration-vision
agent-token-rotation
agent_notes
agent_sync_extensions
agent_v1_contract_violations
allow_hybrid_hash_lists
attack
attack_notes
authentication_cleanup
back-compat-credential-format-migration
barrel-plus-subdir-service-split
brute_force_attack_editor
bullmq-jobid-dedup-requires-eviction
bun-test-mock-module-import-order
campaign_list_view
campaign_notes
campaigns
ci_check.prompt
code_review.prompt
contract-test-mocks-mirror-service-not-schema
copilot-instructions
core_algorithm_implementation_guide
crackable_uploads_plan
dashboard-read-endpoint-contract
dashboard-ux
default_config_suggestions
development
development
feat-agent-list-detail-ui
feat-betterauth-project-selection-rbac
feat-campaign-list-detail-ui
feat-masklist-keyspace
form-submit-payload-null-checks-2026-05-19
full_testing_architecture
getbytext-collision-waitfor-timeout
hard_password_attack_strategies
hash_hive_gap_analysis
health_status_screen
implementation_plan
learned_rules_parser_plan
llmstxt.prompt
markov_autogen_plan
new_dictionary_attack_editor
new_mask_attack_editor
openldap-testcontainer-bootstrap-race
performance_tuning.prompt
phase-1-core-infrastructure
phase-2-api-implementation
phase-2-api-implementation-part-1
phase-2-api-implementation-part-2
phase-2-api-implementation-part-3
phase-2b-resource-management
phase-2c-refactor-cleanup
phase-3-e2e-test-coverage-plan
phase-3-step-1
phase-3-step-2
phase-3-step-3
phase-3-step-4
phase-3-step-5
phase-3-web-ui-foundation
phase-4-containerization-deployment
phase-5-task-distribution
phase-6-monitoring-testing-documentation
playwright-shared-seed-user-last-project-id-flake
playwright-visual-baselines
pre-prod-wire-rename-and-schema-version-bump
previous_password_dictionary_attack_editor
projection-narrows-zrecord-wire-shape
psycopg_migration
radix-roving-focus-preventdefault-breaks-keyboard-nav
reactflow-position-by-array-index-2026-05-19
rule_explanation
salvage_templates
security_hardening.prompt
shadcn-radix-non-destructive-add-on-tailwind-v4
shared-zod-openapi-wire-contract-mirror-2026-05-25
spa_to_ssr
summary
template
test-coverage-plan
testcontainers_minio_support
testing
testing
user_flows_notes
v2-upgrade-overview
v2_agent_api_removal
work_next_task.prompt