Skip to content

Latest commit

 

History

History
398 lines (300 loc) · 14.7 KB

README.md

File metadata and controls

398 lines (300 loc) · 14.7 KB

Contributors GitHub code size in bytes Forks Stargazers Issues GPLv3 License


Logo

RWordlistctl

Rust wordlistctl!
Explore the docs »

· Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Commands
  5. Roadmap
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgments

About The Project

A script to fetch, install, and search wordlist archives from websites offering wordlists with more than 6400 available wordlists!

This is a Rust rewrite of the original tool: wordlistctl. The original tool was built in Python and suffered from the same pitfalls as many Python programs:

  • Memory intensive
  • Slow
  • Hard to read and debug
  • Excessively verbose

(back to top)

Built With

Rust NixOS

(back to top)

Getting Started

How to install and use this project

Prerequisites

  • Rust
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Installation

Building from scratch (locally)

  1. Clone the repo
    git clone https://github.com/Sable-20/rwordlistctl.git
  2. Move into directory
    cd rwordlistctl
  3. Install the app
    cargo install . --root /usr/local
  4. Copy config file to correct location
    touch ~/.config/rwordlistctl/config.toml && cp config/config.toml ~/.config/rwordlistctl/config.toml
  5. Copy repository file to correct location
    touch ~/.config/rwordlistctl/repo.toml && cp config/repo.toml ~/.config/rwordlsitctl/repo.toml

Building from scratch (from web)

  1. Install from web
    cargo install --git https://github.com/Sable-20/rwordlistctl.git --root /usr/local
  2. Install config files
    touch ~/.config/rwordlistctl/repo.toml && touch ~/.config/rwordlistctl/config.toml && curl -o ~/.config/rwordlistctl/repo.toml https://raw.githubusercontent.com/Sable-20/rwordlistctl/master/config/repo.toml && curl -o ~/.config/rwordlistctl/config.toml https://raw.githubusercontent.com/Sable-20/rwordlistctl/master/config/config.toml

With docker

Simply run:

docker build -t <image-name> .

(back to top)

Usage

Locally

Once the binary is built, ensure that it is in your path by running rwordlistctl or wordlistctl (if you have aliased the command or have installed via pacman where it is aliased automatically).

Once you know that the command is working you can run:

rwordlistctl [OPTIONS] [COMMAND]

The help is as follows:

                                        --==[ rwordlistctl by Blackarch Linux ]==--
Rust rewrite of wordlistctl: Fetch, install and search wordlist archives from websites.

Usage: rwordlistctl [OPTIONS] [COMMAND]

Commands:
  fetch
  search
  list
  help    Print this message or the help of the given subcommand(s)

Options:
  -c, --config <CONFIG>  Path to the configuration file [default: /usr/share/rwordlistctl/.config/config.toml]
  -h, --help             Print help
  -V, --version          Print version

With Docker

Caution

DEPRECATION WARNING: Docker support is a non-goal and will not recieve attention, Dockerfiles will be removed in version 1.0.0 to be replaced by nix generated Docker images

If you wish to load into a fresh shell within the docker container where the wordlists will be sandboxed and not be loaded onto your host system you may run:

docker run --rm -ti <image-name>

If you wish to connect the container to your host machine so that wordlists will be downloaded to your machine you may run:

docker run --rm -it --mount "type=bind,src=/usr/share/wordlists,target=/usr/share/wordlists" <image-name>

This will make it so that any wordlists downloaded in the container will also be downloaded into /usr/share/wordlists!

From here refer back to running locally

For more examples, please refer to the Documentation

(back to top)

Commands

Below is the help for various commands and explanations for each/

Fetch

                                    --==[ rwordlistctl by Blackarch Linux ]==--
Usage: rwordlistctl.exe fetch [OPTIONS] --wordlist=<WORDLISTS>...

Options:
  -d, --decompress               Decompress and remove the archive file
  -w, --workers=<COUNT>          Number of download workers [default: 10]
  -u, --user-agent=<USER_AGENT>  User agent to use for fetching [default: rwordlistctl/0.1.0]
  -b, --base-dir=<BASE_DIR>      Base directory to store wordlists [default: /usr/share/wordlists]
  -l, --wordlist=<WORDLISTS>...  Wordlist to fetch
  -g, --group=<GROUP>...         Group of wordlists to fetch [possible values: usernames, passwords, discovery, fuzzing, misc]
  -r, --regex                    Use regex to find wordlists with your search term contained within the name
  -h, --help                     Print help

Search

List

Roadmap

  • Use mangen to generate man pages
  • Implement multi threading in fetch properly
  • Gracefully shut down on Ctrl-C
  • Replace all instances of eyre! with graceful shutdowns
  • Determine if list and search are redundant and if we should remove
  • Implement both fetching by group and fetching by wordlist name with fetch command
  • Implement custom config file (TOML format)
  • Write tests
  • Write proper documentation
  • Implement proper workers
  • Multi-language Documentation
    • Chinese
    • Spanish
    • French

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

For Developers

Important

Information below is critical to developers looking to contribute

While developing, in order to reduce errors such as "it worked on my machine" or "it works on my version of Rust" we kindly request that if possible, consider using nix. nix is a wonderful tool that allows for reproducible development and build environments where we can lock versions in easily. While Docker is an amazing tool and we will continue to support using Dockerfile for builds and development until version 1.0.0 we will transition to using nix flakes as they are generally more secure. Docker images will still be available however they will be generated by nix's builtin tooling system for generated Docker images that are particularly compact.

Thank you for understanding that supporting Docker fully is a non-goal and will recieve minimal attention during this stage of development.

License

Distributed under the GPLv3 License. See LICENSE for more information.

(back to top)

Contact

Project Link: https://github.com/Sable-20/rwordlistctl

Issues Contact current maintainers here

X/Twitter @blackarch
E-Mail team[@]blackarch[.]org

Website Blackarch Linux

Matrix Matrix

(back to top)

Acknowledgments

Use this space to list resources you find helpful and would like to give credit to. I've included a few of my favorites to kick things off!

  • Major contributors
    • Sable-20
    • sepehrdaddev
    • Blackarch contributors

(back to top)


Description

Rust rewrite of original by Blackarch development team. Rewritten in Rust by Sable-20.

Script to fetch, install, update and search wordlist archives from websites offering wordlists with more than 6400 wordlists available.

In the latest version of the Blackarch Linux it has been added to /usr/share/wordlists/ directory.

Installation

pacman -S rwordlistctl