Uses terminal-table to display wp_users
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -5,6 +5,7 @@ gem "typhoeus", "=0.6.2"
|
|||||||
gem "ethon", "=0.5.10"
|
gem "ethon", "=0.5.10"
|
||||||
gem "nokogiri"
|
gem "nokogiri"
|
||||||
gem "json"
|
gem "json"
|
||||||
|
gem "terminal-table"
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem "webmock", ">=1.9.3"
|
gem "webmock", ">=1.9.3"
|
||||||
|
|||||||
@@ -3,27 +3,26 @@
|
|||||||
class WpUsers < WpItems
|
class WpUsers < WpItems
|
||||||
module Output
|
module Output
|
||||||
|
|
||||||
# TODO : create a generic method to output tabs
|
# @param [ Hash ] options
|
||||||
def output(left_margin = '')
|
# @option options[ Boolean ] :show_password Output the password column
|
||||||
max_id_length = self.sort { |a, b| a.id.to_s.length <=> b.id.to_s.length }.last.id.to_s.length
|
#
|
||||||
max_login_length = self.sort { |a, b| a.login.length <=> b.login.length }.last.login.length
|
# @return [ void ]
|
||||||
max_display_name_length = self.sort { |a, b| a.display_name.length <=> b.display_name.length }.last.display_name.length
|
def output(options = {})
|
||||||
|
|
||||||
inner_space = 2
|
rows = []
|
||||||
id_length = (max_id_length + inner_space * 2) /2 * 2
|
headings = ['Id', 'Name']
|
||||||
login_length = max_login_length + inner_space * 2
|
headings << 'Password' if options[:show_password]
|
||||||
display_name_length = max_display_name_length + inner_space * 2
|
|
||||||
|
|
||||||
puts left_margin + '+' * (id_length + login_length + display_name_length + 4)
|
self.each do |wp_user|
|
||||||
puts left_margin + '|' + 'id'.center(id_length) + '|' + 'login'.center(login_length) + '|' + 'display name'.center(display_name_length) + '|'
|
row = [wp_user.id, wp_user.display_name]
|
||||||
puts left_margin + '|' + '+' * (id_length + login_length + display_name_length + 2) + '|'
|
row << wp_user.password if options[:show_password]
|
||||||
|
rows << row
|
||||||
self.each do |u|
|
|
||||||
puts left_margin + '|' + u.id.to_s.center(id_length) + '|' + u.login.center(login_length) + '|' + u.display_name.center(display_name_length) + '|'
|
|
||||||
end
|
|
||||||
|
|
||||||
puts left_margin + '+' * (id_length + login_length + display_name_length + 4)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
puts Terminal::Table.new(headings: headings,
|
||||||
|
rows: rows,
|
||||||
|
style: { margin_left: options[:margin_left] || '' })
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -79,3 +79,44 @@ class File
|
|||||||
%x{file -i #{file_path}}[%r{charset=([^\n]+)\n}, 1]
|
%x{file -i #{file_path}}[%r{charset=([^\n]+)\n}, 1]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Terminal
|
||||||
|
class Table
|
||||||
|
def render
|
||||||
|
separator = Separator.new(self)
|
||||||
|
buffer = [separator]
|
||||||
|
unless @title.nil?
|
||||||
|
buffer << Row.new(self, [title_cell_options])
|
||||||
|
buffer << separator
|
||||||
|
end
|
||||||
|
unless @headings.cells.empty?
|
||||||
|
buffer << @headings
|
||||||
|
buffer << separator
|
||||||
|
end
|
||||||
|
buffer += @rows
|
||||||
|
buffer << separator
|
||||||
|
buffer.map { |r| style.margin_left + r.render }.join("\n")
|
||||||
|
end
|
||||||
|
alias :to_s :render
|
||||||
|
|
||||||
|
class Style
|
||||||
|
@@defaults = {
|
||||||
|
:border_x => "-", :border_y => "|", :border_i => "+",
|
||||||
|
:padding_left => 1, :padding_right => 1,
|
||||||
|
:margin_left => '',
|
||||||
|
:width => nil, :alignment => nil
|
||||||
|
}
|
||||||
|
|
||||||
|
attr_accessor :margin_left
|
||||||
|
attr_accessor :border_x
|
||||||
|
attr_accessor :border_y
|
||||||
|
attr_accessor :border_i
|
||||||
|
|
||||||
|
attr_accessor :padding_left
|
||||||
|
attr_accessor :padding_right
|
||||||
|
|
||||||
|
attr_accessor :width
|
||||||
|
attr_accessor :alignment
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ begin
|
|||||||
require 'typhoeus'
|
require 'typhoeus'
|
||||||
require 'json'
|
require 'json'
|
||||||
require 'nokogiri'
|
require 'nokogiri'
|
||||||
|
require 'terminal-table'
|
||||||
# Custom libs
|
# Custom libs
|
||||||
require 'common/browser'
|
require 'common/browser'
|
||||||
require 'common/custom_option_parser'
|
require 'common/custom_option_parser'
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ def main
|
|||||||
puts
|
puts
|
||||||
puts green('[+]') + " We found the following #{wp_users.size} user/s :"
|
puts green('[+]') + " We found the following #{wp_users.size} user/s :"
|
||||||
|
|
||||||
wp_users.output(' ' * 4)
|
wp_users.output(margin_left: ' ' * 4)
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -307,6 +307,8 @@ def main
|
|||||||
wp_users.brute_force(wpscan_options.wordlist,
|
wp_users.brute_force(wpscan_options.wordlist,
|
||||||
show_progression: true,
|
show_progression: true,
|
||||||
verbose: wpscan_options.verbose)
|
verbose: wpscan_options.verbose)
|
||||||
|
puts
|
||||||
|
wp_users.output(show_password: true, margin_left: ' ' * 2)
|
||||||
else
|
else
|
||||||
puts
|
puts
|
||||||
puts 'Brute forcing aborted'
|
puts 'Brute forcing aborted'
|
||||||
|
|||||||
Reference in New Issue
Block a user