Ronin 1.4.0 released
— postmodern
After many months of development and release candidates I am pleased to announce that ronin-support 0.4.0, ronin 1.4.0 and ronin-gen 1.1.0 have been released.
gem update ronin-support ronin ronin-gen
So what’s new?
ronin-support 0.4.0
Common Regular Expressions
Many common and useful Regular Expressions constants were added to the Regexp class.
New String methods
String#repeating was added which allows creating multiple repeating Strings:
String#sql_inject was also added, allowing for easy formatting of SQL injections:
Base64 formatting
String#base64_encode and String#base64_decode now accept formatting arguments:
These base64 formats are similar to the new methods added to the Base64 module in Ruby 1.9.
ronin/fuzzing
All fuzzing methods were moved into ronin/fuzzing
and the Ronin::Fuzzing
namespace. Ronin::Fuzzing was added which contains fuzzing generator
methods, which generate various types of malicious data. These methods can be
called directly …
… or accessed as Enumerators:
The fuzzing generator methods can also be used with String#fuzz:
String#mutate was also added to ronin/fuzzing
, which allows for the
incremental mutating of a String, given patterns and substitutions.
New Wordlist class
Ronin::Wordlist is a class for building and working with wordlists.
Use an existing Wordlist file:
Expand a Wordlist with mutation rules:
Build a Wordlist from arbitrary text:
Network modules
As of ronin-support 0.4.0 all Net
convenience methods have been moved
into their respective modules in the Network namespace. One can add the
Network convenience methods to any Class/Module by simply including a Network
module:
Additionally, all Network modules are included into the Ronin::Support
and Ronin namespaces, so no more having to type “Net.
”:
>> tcp_banner 'smtp.gmail.com', 25
=> "220 mx.google.com ESMTP g3sm14650755pbt.41"
Network::DNS
Network::DNS was added, which provides simple DNS methods for Ronin.
New Network Mixins
Network::Mixins::DNS and Network::Mixins::SSL were also added.
ronin 1.4.0
Refactored Ronin::UI::CLI::Command
In ronin 1.4.0 Ronin::UI::CLI::Command (the base-class for all CLI commands) was refactored to no longer use the Thor library. Now the Command class uses Parameters::Options, which combines the Parameters library with Ruby’s builtin OptionParser module.
What resulted from this refactoring was cleaner option syntax and better
--help
output. Take for example the [Wordlist] command:
Which produces the following --help
output:
Usage: ronin wordlist [options] TEMPLATE
Options:
-v, --[no-]verbose Enable verbose output.
-q, --[no-]quiet Disable verbose output.
--[no-]silent Silence all output.
--[no-]color Enables color output.
-i, --input [FILE] Input file.
-o, --output [PATH] Output wordlist file.
-m, --mutations [STRING:SUB] Default: {}
Arguments:
TEMPLATE Options word template
Builds and/or mutates Wordlists
It really is that easy to write your own Ronin commands.
Old commands, new again
The ronin
install
, update
and uninstall
commands have been brought back
in 1.4.0.
$ ronin install https://github.com/user/repo.git
The ronin repos
command now only lists installed Repositories.
Ronin Console .commands
After playing with Node.js, I liked how node
console commands were
prefixed with a .
character (ex: .load
). The .command
syntax also does
not conflict with Ruby’s syntax. In 1.4.0 all !command
s can also be called
as .command
s in the Ronin Console:
>> .edit myscript.rb
=> true
>> .ping www.google.com
...
ronin-gen 1.1.0
Ronin::Gen::Generator refactored
In ronin-gen 1.1.0, Ronin::Gen::Generator (the base-class of all generators) was also refactored to no longer use the Thor library. Instead, all Generators use the Parameters library with Ruby’s builtin FileUtils module. This change lowers the barrier for writing custom Ronin Generators.
For an example of the new Generator syntax, please see the Repository generator class.
Improved ronin-gen command
The ronin-gen
command now uses Parameters::Options to directly parse
options for the selected Generator. This also improved the --help
output
for all Generators:
$ ronin-gen repository --help
ronin-gen repository PATH [options]
--path [PATH] The destination path.
--title [TITLE]
--uri [URI]
--source [SOURCE]
--website [WEBSITE]
--license [LICENSE] Default: "CC-by"
--description [DESCRIPTION] Default: "This is a Ronin Repository"
--authors [AUTHORS [...]] Default: []
--[no-]tests
--[no-]docs
--[no-]svn Create a SVN repository.
--[no-]git Create a Git repository.
--[no-]hg Create a Hg repository.
Generate SVN, Git, Hg Repositories
The Repository generator now supports generating SVN, Git and Hg repositories:
$ ronin-gen repository myrepo --title "My Repository" --hg