Awesome Open Source
Awesome Open Source


A micro-framework for rapid development of reusable security tools

⚠️ Warning: Spellbook is currently in development, you've been warned :) and please consider contributing!


Here you will find a "spellbook" with my personal scripts, exploits and other small things I wrote during my bug hunts, pentesting or red teaming missions. Like any other spellbook, some things here are not going to be very easy to understand, but like any other spellbook it couldn't be different, right?

The main focus of this "micro-framework" is to keep my personal scripts organized and make them available in a structure where I can reuse the code that has already been written to write something else. Furthermore, the Spellbook is just a research project that so far is no big deal and does not replace a truly robust framework.

Download and install

  $ git clone && cd spellbook
  $ cpan install Getopt::Long Mojo::File Mojo::JSON

How to use

Spellbook v0.0.4
Core Commands
	Command       Description
	-------       -----------
	--show        List modules, you can filter by category
	--module      Set a module to use
	--read        Read the code of a module


# You can use the --show option to list the available modules
# valid parameters: all, recon, exploit, auxiliary or parser
$ perl --show recon

Module: Recon::Find_Emails
Category: recon
Description: Find e-mails from a domain using API

Module: Recon::Passive_Enum
Category: recon
Description: Enumerate ports and service from a IP using Shodan API

# To use a module, you can use the -m option followed by the name of the module
# followed by -t which is the main entry point of the module
$ perl -m Recon::Find_Emails -t

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
acadav[email protected]
[email protected]

How to create new modules

First, you need to specify your module in the list of packages that Spellbook reads, present in: .config/modules.json

Just copy the last block of the json and insert the information of the new module;

Second, all modules are stored and accessible through the lib/Modules folder, each module is organized in a third folder that defines its category, such as:

Find the folder for the specific category of your module, or create one, then you can create your module normally like any other Perl module.

The only premise is that your module receives a main entry point and returns the results in an array.



Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
perl (1,387
hacking (563
security-tools (413
pentesting (381
ctf (174
toolbox (63
exploits (60
ctf-tools (52
bug-bounty (49
tricks (19