h4cker/programming_and_scripting_for_cybersecurity/perl-resources.md
Omar Santos 23bd69df60
Create perl-resources.md
# Perl Resources

## Libraries for developing CLI applications:
* [App::Cmd](https://metacpan.org/pod/App::Cmd) - Write command line apps with less suffering.
* [Getopt::Long](https://metacpan.org/pod/Getopt::Long) - Extended processing of command line options.

## Cloud
* [AWS::CloudFront](https://metacpan.org/pod/AWS::CloudFront) - Lightweight interface to Amazon CloudFront CDN
* [AWS::S3](https://metacpan.org/pod/AWS::S3) - Lightweight interface to Amazon S3 (Simple Storage Service)
* [Net::Amazon::EC2](https://metacpan.org/pod/Net::Amazon::EC2) - Interface to the Amazon Elastic Compute Cloud (EC2) environment.
* [Net::AWS::SES](https://metacpan.org/pod/Net::AWS::SES) - Perl extension that implements Amazon Simple Email Service (SES) client
* [WebService::DigitalOcean](https://metacpan.org/pod/WebService::DigitalOcean) - Access the DigitalOcean RESTful API (v2)
* [WebService::Dropbox](https://metacpan.org/pod/WebService::Dropbox) - Interface to Dropbox API

## Cryptography
* [Bitcoin::Crypto](https://metacpan.org/pod/Bitcoin::Crypto) - Bitcoin cryptography in Perl
* [CryptX](https://metacpan.org/pod/CryptX) - Cryptographic toolkit

## Data Format - Libraries for serializing, formatting and parsing data
* [BSON](https://metacpan.org/pod/BSON) - Binary JSON format
* [CBOR::Free](https://metacpan.org/pod/CBOR::Free) - Support for (CBOR)[https://tools.ietf.org/html/rfc7049], IETF’s “binary JSON”
* [Data::Dumper::Simple](https://metacpan.org/pod/Data::Dumper::Simple) - Reduce and faster Data::Dumper and eval() equivalent
* [Data::MessagePack](https://metacpan.org/pod/Data::MessagePack)
* [JSON::PP](https://metacpan.org/pod/JSON::PP)
* [JSON::XS](https://metacpan.org/pod/JSON::XS)
* [Sereal](https://metacpan.org/pod/Sereal)
* [Storable](https://metacpan.org/pod/Storable)
* [Text::CSV](https://metacpan.org/pod/Text::CSV)
* [Text::CSV_XS](https://metacpan.org/pod/Text::CSV_XS)
* [Text::Markdown](https://metacpan.org/pod/Text::Markdown)
* [TOML](https://metacpan.org/pod/TOML)
* [XML::LibXML](https://metacpan.org/pod/XML::LibXML)
* [XML::Compile::Schema](https://metacpan.org/pod/XML::Compile::Schema) - Interpret schema elements and types: create processors for XML messages.
* [XML::Compile::SOAP](https://metacpan.org/pod/XML::Compile::SOAP) - Implements the SOAP 1.1 protocol, client side.
* [XML::Compile::WSDL](https://metacpan.org/pod/XML::Compile::WSDL) - Use SOAP with a WSDL version 1.1 communication specification file.
* [YAML](https://metacpan.org/pod/YAML)

## Database - Libraries for interacting with relational databases
* [DBI](https://metacpan.org/pod/DBI)
* [DBIx::Connector](https://metacpan.org/pod/DBIx::Connector) - Fast, safe DBI connection and transaction management
* [DBIx::Handler](https://metacpan.org/pod/DBIx::Handler) - Fork-safe DBI handler
* [DBIx::Inspector](https://metacpan.org/pod/DBIx::Inspector)
* [DBIx::QueryLog](https://metacpan.org/pod/DBIx::QueryLog)
* [DBIx::Sunny](https://metacpan.org/pod/DBIx::Sunny) - Useful DBI Wrapper
* [DBIx::TransactionManager](https://metacpan.org/pod/DBIx::TransactionManager)

### Relational Databases
* [DBD::CSV](https://metacpan.org/pod/DBD::CSV)
* [DBD::Firebird](https://metacpan.org/pod/DBD::Firebird)
* [DBD::mysql](https://metacpan.org/pod/DBD::mysql)
* [DBD::ODBC](https://metacpan.org/pod/DBD::ODBC) - Any ODBC Driver. MS-SQL w/ placeholders
* [DBD::Oracle](https://metacpan.org/pod/DBD::Oracle) - Oracle database driver for the DBI module
* [DBD::Pg](https://metacpan.org/pod/DBD::Pg) - PostgreSQL driver for DBI.
* [DBD::SQLite](https://metacpan.org/pod/DBD::SQLite)
* [DBD::Sybase](https://metacpan.org/pod/DBD::Sybase) - Sybase and MS-SQL. No placeholders w/ MS-SQL though

### NoSQL Databases
* [Cache::Memcached::Fast](https://metacpan.org/pod/Cache::Memcached::Fast)
* [Mango](https://metacpan.org/pod/Mango) - Pure-Perl non-blocking I/O MongoDB driver
* [Redis](https://metacpan.org/pod/Redis)
* [Redis::Fast](https://metacpan.org/pod/Redis::Fast) - Perl wrapper around hiredis driver
* [Search::Elasticsearch](https://metacpan.org/pod/Search::Elasticsearch) - Offical Elasticsearch client library
* [UnQLite](https://metacpan.org/pod/UnQLite)

## Network

*Libraries that help when you are dealing with computer networks*

* [DOCSIS::ConfigFile](https://metacpan.org/pod/DOCSIS::ConfigFile) -  Decodes and encodes DOCSIS config files
* [NetAddr::MAC](https://metacpan.org/pod/NetAddr::MAC) - Handle MAC addresses

*Libraries that help when you are working across computer networks*

* [Net::SSH::Perl](https://metacpan.org/pod/Net::SSH::Perl) - SSH client implemented in Perl.
* [Net::SSH2](https://metacpan.org/pod/Net::SSH2) - Wrapper for [libssh2](https://libssh2.org/).
* [Net::OpenSSH](https://metacpan.org/pod/Net::OpenSSH) - Run commands remotely using the [OpenSSH](http://www.openssh.com/) client.
* [Net::OpenSSH::Parallel](https://metacpan.org/pod/Net::OpenSSH::Parallel) - Run remote commands in parallel using the OpenSSH client.
* [Net::SSH::Any](https://metacpan.org/pod/Net::SSH::Any) - Run remote commands using any module or binary client available.
* [Net::SFTP::Foreign](https://metacpan.org/pod/Net::SFTP::Foreign) - SFTP client for remote file access.
* [Object::Remote](https://metacpan.org/pod/Object::Remote) - Run Perl code on remote machines.
* [Net::CLI::Interact](https://metacpan.org/pod/Net::CLI::Interact) - Automates interactive programs.
* [Net::Appliance::Session](https://metacpan.org/pod/Net::Appliance::Session) - Automates interaction with appliances.

## Protocol

*Protocol clients and libraries*

* [Furl](https://metacpan.org/pod/Furl) - Faster HTTP(S) Client
* [HTTP::Tiny](https://metacpan.org/pod/HTTP::Tiny) - Minimal and fast client. Included in the standard packages.
* [LWP::UserAgent](https://metacpan.org/pod/LWP::UserAgent) - Popular HTTP(S) Client
* [Net::Curl](https://metacpan.org/pod/Net::Curl) - (libcurl)[https://curl.se/libcurl/] integration
* [Net::DHCP](https://metacpan.org/pod/Net::DHCP) - Send and receive DHCP packets
* [Net::DNS](https://metacpan.org/pod/Net::DNS) - Resolve DNS host names
* [Protocol::DBus](https://metacpan.org/pod/Protocol::DBus) - D-Bus in (pure) Perl

## Stream Manipulation

*Libraries for manipulating event streams*

* [RxPerl](https://metacpan.org/pod/RxPerl) - Perl implementation of [Reactive Extensions](http://reactivex.io) / rxjs

## REST Frameworks

*Libraries for developing REST applications*

* [Catalyst::Action::REST](https://metacpan.org/pod/Catalyst::Action::REST) - Automated REST Method Dispatching
* [Dancer2::Plugin::REST](https://metacpan.org/pod/Dancer2::Plugin::REST) - A plugin for writing RESTful apps with Dancer2
* [Dancer::Plugin::REST](https://metacpan.org/pod/Dancer::Plugin::REST) - A plugin for writing RESTful apps with Dancer
* [Raisin](https://metacpan.org/pod/Raisin) - a REST API micro framework for Perl
* [Squatting](https://metacpan.org/pod/Squatting) - A Camping-inspired Web Microframework for Perl

## Template Engines

*Libraries and tools for templating*

* [HTML::Template](https://metacpan.org/pod/HTML::Template) - Templates for web pages
* [Template::Alloy](https://metacpan.org/pod/Template::Alloy) - TT2/3, HT, HTE, Tmpl, and Velocity Engine
* [Template::Toolkit](https://metacpan.org/pod/Template::Toolkit) - Very Popular Template Processing System
* [Text::MicroTemplate](https://metacpan.org/pod/Text::MicroTemplate) - Fast, simple and safe template engine written in pure-Perl and core modules.
* [Text::MicroTemplate::Extended](https://metacpan.org/pod/Text::MicroTemplate::Extended) - Extended Text::MicroTemplate.
* [Text::Template](https://metacpan.org/pod/Text::Template) - Templates with embedded perl
* [Text::Xslate](https://metacpan.org/pod/Text::Xslate) - Faster template engine with XS. Supports multiple syntaxes.
* [Tiffany](https://metacpan.org/pod/Tiffany) - Generic interface for template engines. It makes it easy to use multiple template engines.
* [Template::Magic](https://metacpan.org/pod/Template::Magic) - Magic merger of runtime values with templates.

## Testing

*Libraries for testing codebases and generating test data.*

### Testing Frameworks

* [Test::Base](https://metacpan.org/pod/Test::Base) - A Data Driven Testing Framework
* [Test::Base::Less](https://metacpan.org/pod/Test::Base::Less) - Limited version of Test::Base
* [Test::BDD::Cucumber](https://metacpan.org/pod/Test::BDD::Cucumber) - Implementation of the popular Cucumber framework in Perl
* [Test::Class](https://metacpan.org/pod/Test::Class) - Class-based testing. Support "setup" and "teardown".
* [Test::Deep](https://metacpan.org/pod/Test::Deep) - Test deep and complex data structures with great flexibility.
* [Test::Deep::Matcher](https://metacpan.org/pod/Test::Deep::Matcher)
* [Test::Harness](https://metacpan.org/pod/Test::Harness) - Run Perl standard test scripts with statistics
* [Test::Kantan](https://metacpan.org/pod/Test::Kantan) - simple, flexible, fun "Testing framework"
* [Test::More](https://metacpan.org/pod/Test::More)

### Test Double

* [Test::Exception](https://metacpan.org/pod/Test::Exception)
* [Test::Fatal](https://metacpan.org/pod/Test::Fatal) - Simple module for verifying exceptions.
* [Test::Mock::Guard](https://metacpan.org/pod/Test::Mock::Guard) - Mocking package subroutines.
* [Test::MockTime](https://metacpan.org/pod/Test::MockTime)
* [Test::mysqld](https://metacpan.org/pod/Test::mysqld)
* [Test::TCP](https://metacpan.org/pod/Test::TCP) - Launch temporary TCP Server
* [Test::Time](https://metacpan.org/pod/Test::Time) - Simple module for faking system time.

### Coverage

* [Devel::Cover](https://metacpan.org/pod/Devel::Cover)
* [Devel::Cover::Report::Coveralls](https://metacpan.org/pod/Devel::Cover::Report::Coveralls) Report to Coveralls

## Tools

*Some useful tools*

* [App::Ack](https://metacpan.org/pod/App::Ack) - ack is a tool like grep, optimized for programmers.
* [App::Nopaste](https://metacpan.org/pod/App::Nopaste) - Post to various pastebins from the CLI
* [Daiku](https://metacpan.org/pod/Daiku) - Make for Perl.
* [Data::Printer](https://metacpan.org/pod/Data::Printer) - Colored pretty-print of Perl data structures and objects.
* [Reply](https://metacpan.org/pod/Reply) - Read-eval-print-loop(REPL) command-line tool.
* [Riji](https://metacpan.org/pod/Riji) - Static site generator using markdown and git mainly for blogging.
* [Smart::Comments](https://metacpan.org/pod/Smart::Comments) - Comments that do more than just sit there.

*Libraries for developping command line applications*

* [Toolbox::Simple](https://metacpan.org/pod/Toolbox::Simple) - Simplfy some common tasks in Perl.
* [Script::Toolbox](https://metacpan.org/pod/Script::Toolbox) - Framework for the daily business scripts.
* [Devel::Kit](https://metacpan.org/pod/Devel::Kit)- Handy toolbox of things to ease development/debugging.

*Libraries for handling configuration files*

* [Config::Tiny](https://metacpan.org/pod/Config::Tiny) - Read/Write .ini style files with as little code as possible


## Type checking

* [MooseX::Types](https://metacpan.org/pod/MooseX::Types) - Moose types management tool
* [Type::Tiny](https://metacpan.org/pod/Type::Tiny) - Tiny, yet comprehensive type library

## Video

* [FFmpeg](https://metacpan.org/pod/FFmpeg) - Interface to FFmpeg, a video converter written in C
* [Video::Info](https://metacpan.org/pod/Video::Info) - Retrieve video properties such as: height width codec fps
* [Vlc::Engine](https://metacpan.org/pod/Vlc::Engine) - use Vlc media player with Perl
* [VideoLAN::LibVLC](https://metacpan.org/pod/VideoLAN::LibVLC) - Perl bindings for libvlc.so
* [Video::Generator](https://metacpan.org/pod/Video::Generator) - Perl class for video generation

## Web Frameworks

*Libraries for developing Web applications*

* [Amon2](https://metacpan.org/pod/Amon2)
* [Catalyst](https://metacpan.org/pod/Catalyst) - Overflowing with features. Very popular.
* [Dancer](https://metacpan.org/pod/Dancer) ([Official site](http://perldancer.org/))
* [Dancer2](https://metacpan.org/pod/Dancer2)
* [Gantry](https://metacpan.org/pod/Gantry) - Web application framework for mod\_perl, cgi, etc.
* [Kelp](https://metacpan.org/pod/Kelp) - Plack-focused Perl web framework
* [Kossy](https://metacpan.org/pod/Kossy) - A Web framework with simple interface.
* [Mojolicious](https://metacpan.org/pod/Mojolicious) - An all in one framework.
* [Poet](https://metacpan.org/pod/Poet) - a modern Perl web framework for Mason developers

### Middlewares

*Libraries for creating HTTP middlewares*

* [Gazelle](https://metacpan.org/pod/Gazelle) - Preforked Plack Handler for performance freaks
* [Plack](https://metacpan.org/pod/Plack) - PSGI server implementation and utilities for Web applications.
* [Server::Starter](https://metacpan.org/pod/Server::Starter) - Process manager with the "graceful restart" feature.
* [Starlet](https://metacpan.org/pod/Starlet) - High-performance PSGI Server
* [Starman](https://metacpan.org/pod/Starman) - High-performance preforking PSGI/Plack web server
* [Twiggy](https://metacpan.org/pod/Twiggy) - Event-driven PSGI application server

## Web Frameworks-Like

*Somewhere between templates and full on frameworks*

* [Embperl](https://metacpan.org/pod/Embperl) - Building dynamic Websites with Perl (sort of like Perl crossed with PHP)
* [Mason](https://metacpan.org/pod/Mason) - Powerful, high-performance templating for the web and beyond

## Web Scraping

*Libraries for extracting some information from websites*

* [Web::Scraper](https://metacpan.org/pod/Web::Scraper)
* [WWW::Mechanize](https://metacpan.org/pod/WWW::Mechanize)
* [WWW::Mechanize::PhantomJS](https://metacpan.org/pod/WWW::Mechanize::PhantomJS) - automate the PhantomJS browser
* [WWW::Scripter](https://metacpan.org/pod/distribution/WWW-Scripter/lib/WWW/Scripter.pod) - For scripting web sites that have scripts
* [WWW::Selenium](https://metacpan.org/pod/WWW::Selenium) 


## Network Security

*Some great libraries for starting the world of Network security with Perl*


* [Net::Pcap](https://metacpan.org/pod/Net::Pcap) - Interface to the pcap LBL packet capture library
* [Net::Ncap](https://metacpan.org/pod/Net::Ncap) - Perl binding to the ncap network data capture library
* [Net::Frame](https://metacpan.org/pod/Net::Frame) - Perl framework for frame crafting
* [NetPacket](https://metacpan.org/pod/NetPacket) - assemble/disassemble network packets at the protocol level
* [Net::Write](https://metacpan.org/pod/Net::Write) - portable interface to open and send raw data to network
* [Net::Analysis](https://metacpan.org/pod/Net::Analysis) - Perl library for analysing network traffic
* [Net::Silk](https://metacpan.org/pod/Net::Silk) - Perl's Interface to the SiLK network flow library
* [Net::Inspect](https://metacpan.org/pod/Net::Inspect) - Perl library for inspection of data on various network layers
* [Net::Tshark](https://metacpan.org/pod/Net::Tshark) - Perl interface for Tshark network capture utility 
* [Net::Sharktools](https://metacpan.org/pod/Net::Sharktools) - Wireshark's packet inspection capabilities in Perl
* [File::PCAP](https://metacpan.org/pod/File::PCAP) - Read, Write and manipulate  PCAP file format through Perl
* [Net::P0f](https://metacpan.org/pod/Net::P0f) - Perl interface to p0f utility, usefull for finger-printing os
* [Net::Pcap::Reassemble](https://metacpan.org/pod/Net::Pcap::Reassemble) - Perl IP fragment reassembly for Net::Pcap
* [Nagios::NRPE](https://metacpan.org/pod/Nagios::NRPE) - Pure perl Nagios NRPE implementation
* [Monitoring::Plugin](https://metacpan.org/pod/Monitoring::Plugin) -  A family of perl modules to streamline writing Naemon, Nagios, Icinga or Shinken (and compatible) plugins
* [Net::Connection::Sniffer](https://metacpan.org/pod/Net::Connection::Sniffer) - practical Perl library for MiTM connections
* [Net::ARP](https://metacpan.org/pod/Net::ARP) - Library for crafting ARP packets
* [SNMPMonitor](https://metacpan.org/pod/SNMPMonitor) - Perl extension for writing SNMP Monitors
* [Net::LibNIDS](https://metacpan.org/pod/Net::LibNIDS) - Perl interface for the Network Intrusion Detection System library
* [Parse::Snort](https://metacpan.org/pod/Parse::Snort) - Perl Snort rules parser
* [Net::Wireless::802_11::WPA::CLI](https://metacpan.org/pod/Net::Wireless::802_11::WPA::CLI) - Perl WPA_CLI interface
* [IO::Socket::SSL::Intercept](https://metacpan.org/IO::Socket::SSL::Intercept) - library for intercepting SSL connections through Perl

## Metadata Forensics

*General Metadata files parser, usefull during forensics investigations*

* [Image::ExifTool](https://metacpan.org/pod/distribution/Image-ExifTool/exiftool) - General metadata parser and viewer framework

## Reverse Engineering

*Libraries used for disassembly assembly operations, ELF files and bytecode*

* [Disassembly](https://metacpan.org/pod/distribution/B-C/script/disassemble) - Decompiles binary bytecode to readable and recompilable bytecode assembler
* [Python::Bytecode](https://metacpan.org/pod/Python::Bytecode) - Parse Python bytecode
* [B::Bytecode](https://metacpan.org/pod/B::Bytecode) - Compiles a Perl script into a bytecode format that could be loaded later
* [Perf::ARM](https://metacpan.org/pod/Perf::ARM) - Use ARM instructions in Perl
* [Asm::Z80::Table](https://metacpan.org/pod/Asm::Z80::Table) - assemble / disassemble all Z80 CPU assembly instructions with Perl
* [X86::Disasm](https://metacpan.org/pod/X86::Disasm) - Disassemble Intel x86 instructions with Perl
* [Disassemble::X86](https://metacpan.org/pod/Disassemble::X86) - Another library for disassembe X86 instructions
* [X86::Udis86](https://metacpan.org/pod/X86::Udis86) - Interface for the C Udis disassembler
* [Asm::X86](https://metacpan.org/pod/Asm::X86) - List of instructions and registers of x86-compatible processors, validating and converting instructions and memory references
* [ELF::Writer](https://metacpan.org/pod/ELF::Writer) - write and read executable ELF files
2021-08-17 18:49:14 -04:00

1 B