An implementation of the hashcat rules engine in JavaScript. More information about rule-based attacks and the rules themselves can be found on the Hashcat wiki.
npm install hashcat-rules-js
npm run build
const hashcatRule = require('hashcat-rules-js');
const password="hashcat";
const rule="$1";
const result= hashcatRule.applyRule(password,rule)
The applyRule function takes the following options:
- password (required): The password to which the rules will be applied.
- rule (required): Rules compatible with the Hashcat rules engine.
The applyRule function returns a string with the applied rules.
- if rule is an empty string, false will be returned
- if rule starts with # (hash), false will be returned
const hashcatRule = require('hashcat-rules-js');
const result= hashcatRule.applyRule("hashcat","$1")
console.log(result);//hashcat1
Name | Function | Description | Example Rule | Input Word | Output Word |
---|---|---|---|---|---|
Nothing | : | Do nothing (passthrough) | : | p@ssW0rd | p@ssW0rd |
Lowercase | l | Lowercase all letters | l | p@ssW0rd | p@ssw0rd |
Uppercase | u | Uppercase all letters | u | p@ssW0rd | P@SSW0RD |
Capitalize | c | Capitalize the first letter and lower the rest | c | p@ssW0rd | P@ssw0rd |
Invert Capitalize | C | Lowercase first found character, uppercase the rest | C | p@ssW0rd | p@SSW0RD |
Toggle Case | t | Toggle the case of all characters in word. | t | p@ssW0rd | P@SSw0RD |
Toggle @ | TN | Toggle the case of characters at position N | T3 | p@ssW0rd | p@sSW0rd |
Reverse | r | Reverse the entire word | r | p@ssW0rd | dr0Wss@p |
Duplicate | d | Duplicate entire word | d | p@ssW0rd | p@ssW0rdp@ssW0rd |
Duplicate N | pN | Append duplicated word N times | p2 | p@ssW0rd | p@ssW0rdp@ssW0rdp@ssW0rd |
Reflect | f | Duplicate word reversed | f | p@ssW0rd | p@ssW0rddr0Wss@p |
Rotate Left | { | Rotate the word left. | { | p@ssW0rd | @ssW0rdp |
Rotate Right | } | Rotate the word right | } | p@ssW0rd | dp@ssW0r |
Append Character | $X | Append character X to end | $1 | p@ssW0rd | p@ssW0rd1 |
Prepend Character | ^X | Prepend character X to front | ^1 | p@ssW0rd | 1p@ssW0rd |
Truncate left | [ | Delete first character | [ | p@ssW0rd | @ssW0rd |
Trucate right | ] | Delete last character | ] | p@ssW0rd | p@assW0r |
Delete @ N | DN | Delete character at position N | D3 | p@ssW0rd | p@sW0rd |
Extract range | xNM | Extract M characters, starting at position N | x04 | p@ssW0rd | p@ss |
Omit range | ONM | Delete M characters, starting at position N | O12 | p@ssW0rd | psW0rd |
Insert @ N | iNX | Insert character X at position N | i4! | p@ssW0rd | p@ss!W0rd |
Overwrite @ N | oNX | Overwrite character at position N with X | o3$ | p@ssW0rd | p@s$W0rd |
Truncate @ N | 'N | Truncate word at position N | '6 | p@ssW0rd | p@ssW0 |
Replace | sXY | Replace all instances of X with Y | ss$ | p@ssW0rd | p@$$W0rd |
Purge | @X | Purge all instances of X | @s | p@ssW0rd | p@W0rd |
Duplicate first N | zN | Duplicate first character N times | z2 | p@ssW0rd | ppp@ssW0rd |
Duplicate last N | ZN | Duplicate last character N times | Z2 | p@ssW0rd | p@ssW0rddd |
Duplicate all | q | Duplicate every character | q | p@ssW0rd | pp@@ssssWW00rrdd |