vigbrute

1.0.0 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i vigbrute

Weekly Downloads

0

Version

1.0.0

License

Copyright (C) 2021 Jarod Brennfleck

Unpacked Size

1.27 MB

Total Files

15

Last publish

Collaborators

  • thebrenny