npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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.