0.01
No commit activity in last 3 years
No release in over 3 years
Violent Ruby is a collection of tools for Hackers, Forensic Analysts, Penetration Testers and Security Engineers.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.14
~> 10.0
~> 3.0

Runtime

~> 4.1.0
~> 0.5.1
 Project Readme

Violent Ruby 🎻

Violent Ruby is a collection of tools for Hackers, Forensic Analysts, Penetration Testers and Security Engineers.

Development Notice

⚠️ Gem is still in development.

Installation

$ gem install violent_ruby

Usage

require 'violent_ruby'

Banner Grabber

The banner grabber provides a simple interface to do a banner grab.

require 'violent_ruby'

banner_grabber = ViolentRuby::BannerGrabber.new(ip: 'localhost', port: 2222)

banner_grabber.grab do |result|
  # do something with result
end
# => [{:ip=>"127.0.0.1", :port=>"2222", :open=>true, :banner=>"SSH-1.0-OpenSSH_2.3lol\r\n"}]

banner_grabber.ips   = "192.30.253.113" 
banner_grabber.ports = ["80", "443"]

banner_grabber.grab(http: true, timeout: 0.08) do |result|
  # do something with result
end
# => [{:ip=>"192.30.253.113", :port=>"80", :open=>true, :banner=>"HTTP/1.1 301 Moved Permanently\r\n" + "Content-length: 0\r\n" + "Location: https://3.1.3.3.7/\r\n" + "Connection: close\r\n" + "\r\n"}, {:ip=>"192.30.253.113", :port=>"443", :open=>true}]

Vulnerability Scanner

The vulnerability scanner is a banner grabber that can check banners on ports and check if they're known to be vulnerable. However, you will need to provide the list of known vulnerable banners yourself.

require 'violent_ruby'

scanner = ViolentRuby::VulnerabilityScanner.new

scanner.targets = "127.0.0.1"
scanner.known_vulnerabilities = "MS-IIS WEB SERVER 5.0"

scanner.scan(ports: 80, 8080) do |result|
  # do something with result
end
# => [{:ip=>"127.0.0.1", :port=>8080, :banner=>"MS-IIS WEB SERVER 5.0"}]

Unix Password Cracker

The unix password cracker provide a simple interface to crack unix passwords. As hackers do.

require 'violent_ruby'

password_cracker = ViolentRuby::UnixPasswordCracker.new

password_cracker.file = "resources/etc_passwd_file"
password_cracker.dictionary = "resources/dictionary.txt"

password_cracker.crack!
# => [{:username=>"victim", :encrypted_password=>"HX9LLTdc/jiDE", :plaintext_password=>"egg"}]

FTP Brute Forcer

The ftp brute forcer can be used to to brute force your way into a server over FTP.

require 'violent_ruby'

ftp = FtpBruteForcer.new

ftp.users     = "resources/ftp_users.txt"
ftp.ports     = "resources/ftp_ports.txt"
ftp.ips       = "resources/ftp_ips.txt"
ftp.passwords = "resources/ftp_passwords.txt"

ftp.brute_force!
# => [{:time=>2017-04-03 19:02:11 -0400, :type=>"SUCCESS", :ip=>"192.168.33.10", :port=>"21", :user=>"vagrant", :password=>"vagrant"},
# {:time=>2017-04-03 19:02:15 -0400, :type=>"FAILURE", :ip=>"192.168.33.10", :port=>"21", :user=>"vagrant", :password=>"ftp"},
# {:time=>2017-04-03 19:02:18 -0400, :type=>"FAILURE", :ip=>"192.168.33.10", :port=>"21", :user=>"vagrant", :password=>"root"}]

SSH Brute Forcer

The ssh brute forcer can be used to to brute force your way into a server over SSH.

require 'violent_ruby'

ssh = SSHBruteForcer.new

ssh.users     = "resources/ssh_users.txt"
ssh.ports     = "resources/ssh_ports.txt"
ssh.ips       = "resources/ssh_ips.txt"
ssh.passwords = "resources/ssh_passwords.txt"

ssh.brute_force do |result|
  result
  # => [{:time=>2017-04-03 19:02:11 -0400, :type=>"SUCCESS", :ip=>"192.168.33.10", :port=>"22", :user=>"vagrant", :password=>"vagrant"},
end

Violent Ruby Shell

The Violent Ruby shell provides quick access to all of Violent Ruby in a custom Pry shell.

This is provided via a file called python_sucks when the gem is installed.

$ python_sucks
🎻 (main)> scanner = VulnerabilityScanner.new
=> #<ViolentRuby::VulnerabilityScanner:0x007fc9531aab20 @known_vulnerabilities=[], @targets=[]>
🎻 (main)> scanner.targets = "127.0.0.1"
=> "127.0.0.1"
scanner.known_vulnerabilities = "MS-IIS WEB SERVER 5.0"
=> "MS-IIS WEB SERVER 5.0"
scanner.scan(ports: 80, 8080)
=> [{:ip=>"127.0.0.1", :port=>8080, :banner=>"MS-IIS WEB SERVER 5.0"}]
🎻 (main)> 
🎻 (main)> 
🎻 (main)> show-method scanner.retrieve_banner
From: /path_to_where_this_is/violent_ruby/lib/violent_ruby/vulnerability_scanner/vulnerability_scanner.rb @ line 107:
Owner: ViolentRuby::VulnerabilityScanner
Visibility: public
Number of lines: 14

def retrieve_banner(ip, port, seconds = 2)
  banner = false
  Timeout.timeout(seconds) do 
    socket = TCPSocket.new(ip, port)
    banner = socket.recv(1024)
    socket.close
  end
  return false unless banner
  banner.strip!
  yield banner if block_given?
  banner
rescue
  false
end     
🎻 (main)> help
🎻 (main)> exit

License

The gem is available as open source under the terms of the MIT License.