vigbrute
v1.0.0
Published
This program tries to find the Plaintext and key from a given ciphertext that has been encoded using the Vigenere Substitution Cipher.
Downloads
3
Readme
VIG Brute
This program tries to find the Plaintext and key from a given ciphertext that has been encoded using the Vigenere Substitution Cipher.
Usage
Locally with Node:
$ npm install
$ node cli.js
Containerized using Docker
$ docker build -t vigbrute .
$ docker run vigbrute
Then follow the prompts!
Commands
There are various commands that you can use to try and crack the ciphertext:
chi
Conducts a chi-based attack on the passed data. It uses the kasiskia values to find the most likely key lengths, splits the ciphertext up into multiple decrypted ceasar texts, and calculates language/letter frequency on the cipher.
-data <data>
-- Use the passed data as the ciphertext for the chi attack. This or-file
is required.-file <file>
-- Use the passed filename as the ciphertext for the chi attack. This or-data
is required.- ~~
-alphabet [alphabet]
-- Optional. Set the specific alphabet to use.~~ Not available yet.
brute
Conducts a brute force attack on the passed data. This means each and every combination of the alphabet is attempted.
-data <data>
-- Use the passed data as the ciphertext for the brute force attack. This or-file
is required.-file <file>
-- Use the passed filename as the ciphertext for the brute force attack. This or-data
is required.-alphabet [alphabet]
-- Optional. Set the specific alphabet to use.
dict
Conducts a dictionary attack on the passed data. This means only potential candidate words from the dictionary file will be attempted.
-data <data>
-- Use the passed data as the ciphertext for the brute force attack. This or-file
is required.-file <file>
-- Use the passed filename as the ciphertext for the brute force attack. This or-data
is required.-dictionary [dict file]
-- Optional. Set the specific dictionary to use.
last <type>
Outputs the last attempt of the specified type. Ie, last brute
will output the last brute attack attempt, and last dict
will output the last dictionary attack attempt.
save <type> <destination>
Saves the last attempt of the specified type to the specified destination file.
help
Prints the command help.
exit
Exits the program.
NodeJS require("vigbrute")
You can also require("vigbrute")
in your code directly, to find find the password directly.
const vigbrute = require("vigbrute");
// OR, if it's not installed via NPM
const vigbrute = require("./vigbrute");
vigbrute.chi({
file: "mycipher.txt",
// alphabet: "zyxwvutsrqponmlkjihgfedcba",
callback: (result) => console.log(result)
});
vigbrute.dict({
file: "mycipher.txt",
dict: "mydict.txt",
callback: (result) => console.log(result)
});
vigbrute.brute({
file: "mycipher.txt",
alphabet: "zyxwvutsrqponmlkjihgfedcba",
callback: (result) => console.log(result)
});
Contributing
Currently not Open Source, but if you want ~~to use this as a prime example for the best way to attack this assignment~~, I'll keep it closed.