hashcat-rules-js
Version:
An implementation of the hashcat rules engine in javascript
99 lines (75 loc) • 4.65 kB
Markdown
# hashcat-rules-js
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](https://hashcat.net/wiki/doku.php?id=rule_based_attack).
## Installation
```sh
npm install hashcat-rules-js
```
### Compiles and minifies for production
```sh
npm run build
```
## Usage
```javascript
const hashcatRule = require('hashcat-rules-js');
const password="hashcat";
const rule="$1";
const result= hashcatRule.applyRule(password,rule)
```
### Parameters
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.
### Return Value
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
### Example
```javascript
const hashcatRule = require('hashcat-rules-js');
const result= hashcatRule.applyRule("hashcat","$1")
console.log(result);//hashcat1
```
### Rules and output
|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 |