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 |
Swap front | k | Swap first two characters | k | p@ssW0rd | @pssW0rd |
Swap back | K | Swap last two characters | K | p@ssW0rd | p@ssW0dr |
Swap @ N | *NM | Swap character at position N with character at position M | *34 | p@ssW0rd | p@sWs0rd |
Bitwise shift left | LN | Bitwise shift left character @ N | L2 | p@ssW0rd | p@æsW0rd |
Bitwise shift right | RN | Bitwise shift right character @ N | R2 | p@ssW0rd | p@9sW0rd |
ASCII increment | +N | Increment character @ N by 1 ascii value | +2 | p@ssW0rd | p@tsW0rd |
ASCII decrement | -N | Decrement character @ N by 1 ascii value | -1 | p@ssW0rd | p?ssW0rd |
Replace N + 1 | .N | Replace character @ N with value at @ N plus 1 | .1 | p@ssW0rd | psssW0rd |
Replace N - 1 | ,N | Replace character @ N with value at @ N minus 1 | ,1 | p@ssW0rd | ppssW0rd |
Duplicate block front | yN | Duplicate first N characters | y2 | p@ssW0rd | p@p@ssW0rd |
Duplicate block back | YN | Duplicate last N characters | Y2 | p@ssW0rd | p@ssW0rdrd |
Title | E | Lower case the whole line, then upper case the first letter and every letter after a space | E | p@ssW0rd | P@ssw0rd W0rld |
Title w/separator | e | Lower case the whole line, then upper case the first letter and every letter after a custom separator character | e- | p@ssW0rd | P@ssw0rd-W0rld |