Module: Watobo
- Included in:
- Gui::ActionSelect, Gui::FuzzerGenSelect, Gui::InterceptorUI, Gui::MainWindow
- Defined in:
- lib/watobo.rb,
lib/watobo/gui.rb,
lib/watobo/utils.rb,
lib/watobo/config.rb,
lib/watobo/mixins.rb,
lib/watobo/core/ca.rb,
lib/watobo/defaults.rb,
lib/watobo/constants.rb,
lib/watobo/core/chat.rb,
lib/watobo/utils/url.rb,
lib/watobo/core/chats.rb,
lib/watobo/core/proxy.rb,
lib/watobo/core/scope.rb,
lib/watobo/utils/ntlm.rb,
lib/watobo/core/cookie.rb,
lib/watobo/core/plugin.rb,
lib/watobo/parser/html.rb,
lib/watobo/utils/utf16.rb,
lib/watobo/core/finding.rb,
lib/watobo/core/project.rb,
lib/watobo/core/request.rb,
lib/watobo/core/scanner.rb,
lib/watobo/core/session.rb,
lib/watobo/gui/list_box.rb,
lib/watobo/http/url/url.rb,
lib/watobo/http/xml/xml.rb,
lib/watobo/utils/crypto.rb,
lib/watobo/core/findings.rb,
lib/watobo/core/fuzz_gen.rb,
lib/watobo/core/response.rb,
lib/watobo/core/scanner3.rb,
lib/watobo/gui/chat_diff.rb,
lib/watobo/gui/dashboard.rb,
lib/watobo/gui/page_tree.rb,
lib/watobo/sockets/agent.rb,
lib/watobo/utils/strings.rb,
lib/watobo/core/min_class.rb,
lib/watobo/core/ott_cache.rb,
lib/watobo/core/parameter.rb,
lib/watobo/core/sid_cache.rb,
lib/watobo/framework/init.rb,
lib/watobo/gui/fuzzer_gui.rb,
lib/watobo/gui/hex_viewer.rb,
lib/watobo/gui/log_viewer.rb,
lib/watobo/gui/sites_tree.rb,
lib/watobo/gui/status_bar.rb,
lib/watobo/http/data/data.rb,
lib/watobo/http/data/json.rb,
lib/watobo/mixins/shapers.rb,
lib/watobo/utils/hexprint.rb,
lib/watobo/core/cert_store.rb,
lib/watobo/core/subscriber.rb,
lib/watobo/gui/html_viewer.rb,
lib/watobo/gui/json_viewer.rb,
lib/watobo/gui/main_window.rb,
lib/watobo/gui/text_viewer.rb,
lib/watobo/utils/load_chat.rb,
lib/watobo/utils/load_icon.rb,
lib/watobo/core/interceptor.rb,
lib/watobo/gui/about_watobo.rb,
lib/watobo/gui/checkboxtree.rb,
lib/watobo/gui/checkboxtree.rb,
lib/watobo/gui/differ_frame.rb,
lib/watobo/gui/edit_comment.rb,
lib/watobo/gui/finding_info.rb,
lib/watobo/gui/plugin_board.rb,
lib/watobo/gui/proxy_dialog.rb,
lib/watobo/gui/table_editor.rb,
lib/watobo/utils/export_xml.rb,
lib/watobo/core/active_check.rb,
lib/watobo/core/conversation.rb,
lib/watobo/gui/custom_viewer.rb,
lib/watobo/gui/export_dialog.rb,
lib/watobo/gui/findings_tree.rb,
lib/watobo/gui/fxsave_thread.rb,
lib/watobo/interceptor/proxy.rb,
lib/watobo/mixins/check_info.rb,
lib/watobo/mixins/httpparser.rb,
lib/watobo/sockets/ntlm_auth.rb,
lib/watobo/utils/check_regex.rb,
lib/watobo/utils/copy_object.rb,
lib/watobo/utils/print_debug.rb,
lib/watobo/utils/secure_eval.rb,
lib/watobo/core/active_checks.rb,
lib/watobo/core/passive_check.rb,
lib/watobo/gui/request_editor.rb,
lib/watobo/gui/tagless_viewer.rb,
lib/watobo/mixins/transcoders.rb,
lib/watobo/sockets/connection.rb,
lib/watobo/utils/expand_range.rb,
lib/watobo/utils/text2request.rb,
lib/watobo/adapters/data_store.rb,
lib/watobo/core/passive_checks.rb,
lib/watobo/framework/load_chat.rb,
lib/watobo/gui/browser_preview.rb,
lib/watobo/gui/goto_url_dialog.rb,
lib/watobo/gui/interceptor_gui.rb,
lib/watobo/gui/log_file_viewer.rb,
lib/watobo/gui/progress_window.rb,
lib/watobo/gui/project_wizzard.rb,
lib/watobo/gui/utils/gui_utils.rb,
lib/watobo/gui/www_auth_dialog.rb,
lib/watobo/sockets/http_socket.rb,
lib/watobo/utils/response_hash.rb,
lib/watobo/core/egress_handlers.rb,
lib/watobo/core/netfilter_queue.rb,
lib/watobo/core/passive_scanner.rb,
lib/watobo/gui/chatviewer_frame.rb,
lib/watobo/gui/full_scan_dialog.rb,
lib/watobo/gui/master_pw_dialog.rb,
lib/watobo/gui/save_chat_dialog.rb,
lib/watobo/gui/templates/plugin.rb,
lib/watobo/gui/utils/init_icons.rb,
lib/watobo/gui/utils/load_icons.rb,
lib/watobo/gui/workspace_dialog.rb,
lib/watobo/gui/xml_viewer_frame.rb,
lib/watobo/http/cookies/cookies.rb,
lib/watobo/core/forwarding_proxy.rb,
lib/watobo/core/intercept_carver.rb,
lib/watobo/core/intercept_filter.rb,
lib/watobo/gui/csrf_token_dialog.rb,
lib/watobo/gui/edit_scope_dialog.rb,
lib/watobo/gui/quick_scan_dialog.rb,
lib/watobo/gui/templates/plugin2.rb,
lib/watobo/gui/transcoder_window.rb,
lib/watobo/mixins/request_parser.rb,
lib/watobo/sockets/client_socket.rb,
lib/watobo/utils/file_management.rb,
lib/watobo/adapters/session_store.rb,
lib/watobo/core/client_cert_store.rb,
lib/watobo/framework/init_modules.rb,
lib/watobo/framework/license_text.rb,
lib/watobo/gui/certificate_dialog.rb,
lib/watobo/gui/client_cert_dialog.rb,
lib/watobo/gui/conversation_table.rb,
lib/watobo/gui/define_scope_frame.rb,
lib/watobo/gui/preferences_dialog.rb,
lib/watobo/gui/select_chat_dialog.rb,
lib/watobo/gui/utils/load_plugins.rb,
lib/watobo/utils/response_builder.rb,
lib/watobo/gui/checks_policy_frame.rb,
lib/watobo/gui/confirm_scan_dialog.rb,
lib/watobo/gui/mixins/gui_settings.rb,
lib/watobo/interceptor/transparent.rb,
lib/watobo/adapters/file/file_store.rb,
lib/watobo/framework/create_project.rb,
lib/watobo/gui/rewrite_rules_dialog.rb,
lib/watobo/gui/manual_request_editor.rb,
lib/watobo/gui/request_builder_frame.rb,
lib/watobo/gui/templates/plugin_base.rb,
lib/watobo/gui/utils/master_password.rb,
lib/watobo/gui/utils/session_history.rb,
lib/watobo/gui/password_policy_dialog.rb,
lib/watobo/gui/rewrite_filters_dialog.rb,
lib/watobo/adapters/file/marshal_store.rb,
lib/watobo/gui/conversation_table_ctrl.rb,
lib/watobo/gui/intercept_filter_dialog.rb,
lib/watobo/gui/scanner_settings_dialog.rb,
lib/watobo/gui/conversation_table_ctrl2.rb,
lib/watobo/gui/session_management_dialog.rb,
lib/watobo/gui/utils/save_proxy_settings.rb,
lib/watobo/gui/interceptor_settings_dialog.rb,
lib/watobo/gui/utils/save_default_settings.rb,
lib/watobo/gui/utils/save_scanner_settings.rb
Defined Under Namespace
Modules: CA, CertStore, CheckInfoMixin, ClientCertStore, Conf, Constants, Crypto, EgressHandlers, Findings, ForwardingProxy, Gui, HTTP, HTTPData, HTTPSocket, Interceptor, Mixin, Mixins, NFQueue, NTLM, Parser, PassiveScanner, Plugin, Subscriber, Template, UTF16, Utils
Classes: ActiveCheck, ActiveModules, Chat, Chats, Conversation, Cookie, CookieParameter, DataStore, FileSessionStore, Finding, FuzzCounter, FuzzFile, FuzzGenerator, FuzzList, JSONParameter, MinClass, OTTCache, Parameter, PassiveCheck, PassiveModules, Plugin2, PluginBase, PluginGui, Project, Proxy, Request, Response, SIDCache, Scanner2, Scanner3, Scope, Session, SessionStore, UrlParameter, WWWFormParameter, XmlParameter
Constant Summary
collapse
- VERSION =
"0.9.23"
- LICENSE =
"Copyright 2011 by siberas, http://www.siberas.de\n\nDisclaimer: You should only use WATOBO to perform \nvulnerability audits of your own web applications or\nthose you are authorized to do so. siberas takes no\nresponsibility if you use it for unlawful purposes.\n \nWATOBO is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public \nLicense as published by the Free Software Foundation \nversion 2 of the License.\n\nWATOBO is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied \nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR \nPURPOSE. See the GNU General Public License for more \ndetails.\n\nYou should have received a copy of the GNU \nGeneral Public License along with WATOBO; if not, \nwrite to the Free Software Foundation, Inc., 51 \nFranklin St, Fifth Floor, Boston, MA 02110-1301\nUSA\n"
Class Method Summary
collapse
Class Method Details
.active_checks ⇒ Object
14
15
16
|
# File 'lib/watobo/framework/init.rb', line 14
def self.active_checks
@active_checks
end
|
.active_module_path ⇒ Object
66
67
68
69
|
# File 'lib/watobo.rb', line 66
def self.active_module_path
@active_module_path = ""
@active_path = File.join(base_directory, "modules", "active")
end
|
.base_directory ⇒ Object
56
57
58
59
|
# File 'lib/watobo.rb', line 56
def self.base_directory
@base_directory ||= ""
@base_directory = File.expand_path(File.join(File.dirname(__FILE__),".."))
end
|
.create_project(prefs = {}) ⇒ Object
create_project is a wrapper function to create a new project you can either create a project by giving a URL (:url), or by giving a :project_name AND a :session_name
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/watobo/framework/create_project.rb', line 22
def self.create_project(prefs={})
project_settings = Hash.new
if prefs.has_key? :url
else
project_settings[:project_name] = prefs[:project_name]
project_settings[:session_name] = prefs[:session_name]
end
Watobo::DataStore.connect(project_settings[:project_name], project_settings[:session_name])
@project_name = project_settings[:project_name]
@session_name = project_settings[:session_name]
Watobo::Conf.load_project_settings()
Watobo::Conf.load_session_settings()
puts "* INIT PASSIVE MODULES"
Watobo::PassiveModules.init
puts
puts "Total: " + Watobo::PassiveModules.length.to_s
puts "* INIT ACTIVE MODULES"
Watobo::ActiveModules.init
puts
puts "Total: " + Watobo::ActiveModules.length.to_s
puts
project = Project.new(project_settings)
@project = project
end
|
.create_request(url, prefs = {}) ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/watobo/core/request.rb', line 3
def self.create_request(url, prefs={})
unless url =~ /^https?:\/\//
u = "http://#{url}"
else
u = url
end
uri = URI.parse u
r = "GET #{uri.to_s} HTTP/1.1\n"
r << "Host: #{uri.host}\n"
r << "User-Agent: WATOBO\n"
r << "Accept: */*\n"
r.extend Watobo::Mixins::RequestParser
r.to_request
end
|
.init_framework ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/watobo/framework/init.rb', line 22
def self.init_framework()
init_working_directory
Watobo::Conf.each do |cm|
cm.update
end
init_workspace_path
init_active_modules
init_passive_modules
end
|
.load_chat(project, session, chat_id) ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
|
# File 'lib/watobo/framework/load_chat.rb', line 3
def self.load_chat(project, session, chat_id)
path = File.join Watobo.workspace_path, project.to_s, session.to_s, Watobo::Conf::Datastore.conversations
unless File.exist? path
puts "Could not find conversation path for #{project}/#{session} in #{Watobo.workspace_path}"
return nil
end
chat_file = "#{chat_id}-chat.yml"
chat = Watobo::Utils.loadChatYAML File.join(path, chat_file)
puts chat.class
chat
end
|
.load_defaults ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/watobo/defaults.rb', line 3
def self.load_defaults
config_path = File.expand_path(File.join(File.dirname(__FILE__),"..","..", "config"))
Dir.glob("#{config_path}/*.yml").each do |cf|
dummy = File.basename(cf).gsub!(/.yml/,'')
cc = Watobo::Utils.camelcase dummy
begin
settings = YAML.load_file(cf)
Watobo::Conf.add(cc, settings )
rescue => bang
puts "[#{self}] Could not load config #{cf}"
end
end
end
|
.log(message, prefs = {}) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/watobo/adapters/data_store.rb', line 58
def self.log(message, prefs={})
text = message
if message.is_a? Array
text = message.join("\n| ")
end
if prefs.has_key? :sender
prefs[:sender].gsub!(/.*::/,'')
end
if DataStore.engine.respond_to? :logger
DataStore.engine.logger message, prefs
end
end
|
.logs ⇒ Object
53
54
55
56
|
# File 'lib/watobo/adapters/data_store.rb', line 53
def self.logs
return "" if DataStore.engine.nil?
DataStore.engine.logs
end
|
.passive_checks ⇒ Object
18
19
20
|
# File 'lib/watobo/framework/init.rb', line 18
def self.passive_checks
@passive_checks
end
|
.passive_module_path ⇒ Object
71
72
73
74
|
# File 'lib/watobo.rb', line 71
def self.passive_module_path
@passive_module_path = ""
@passive_path = File.join(base_directory, "modules", "passive")
end
|
.plugin_path ⇒ Object
61
62
63
64
|
# File 'lib/watobo.rb', line 61
def self.plugin_path
@plugin_directory ||= ""
@plugin_directory = File.join(base_directory, "plugins")
end
|
.print_debug(*m) ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
|
# File 'lib/watobo/utils/print_debug.rb', line 3
def self.print_debug(*m)
fl = m.shift
puts "#"
puts "# #{fl} #"
if m.length > 0
m.each do |l|
puts l
end
puts "# " + "-"*fl.length + " #"
end
end
|
.project ⇒ Object
15
16
17
|
# File 'lib/watobo/framework/create_project.rb', line 15
def self.project
@project
end
|
.project_name ⇒ Object
7
8
9
|
# File 'lib/watobo/framework/create_project.rb', line 7
def self.project_name
@project_name
end
|
.running_projects ⇒ Object
10
11
12
|
# File 'lib/watobo/framework/init.rb', line 10
def self.running_projects
@running_projects
end
|
.save_proxy_settings(prefs = {}) ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/watobo/gui/utils/save_proxy_settings.rb', line 3
def self.save_proxy_settings(prefs={})
puts "* save proxy settings"
c_prefs = {
:save_passwords => false,
:key => ""
}
c_prefs.update prefs
unless Watobo.project.nil?
Watobo::Conf::ForwardingProxy.save_project() do |s|
s.each do |name, proxy|
next unless proxy.is_a? Hash
unless c_prefs[:save_passwords] == false
unless c_prefs[:key].empty?
end
else
proxy[:password] = ''
end
end
end
else
Watobo::Conf::ForwardingProxy.save do |s|
s.each do |name, proxy|
next unless proxy.is_a? Hash
unless c_prefs[:save_passwords] == false
unless c_prefs[:key].empty?
end
else
proxy[:password] = ''
end
end
end
end
end
|
.save_proxy_settings_UNUSED(prefs = {}) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/watobo/gui/utils/save_proxy_settings.rb', line 45
def self.save_proxy_settings_UNUSED(prefs={})
puts "* save proxy settings"
c_prefs = {
:save_passwords => false,
:key => ""
}
c_prefs.update prefs
unless Watobo.project.nil?
Watobo::Conf::ForwardingProxy.save_project() do |s|
s.each do |name, proxy|
next unless proxy.is_a? Hash
unless c_prefs[:save_passwords] == false
unless c_prefs[:key].empty?
end
else
proxy[:password] = ''
end
end
end
else
Watobo::Conf::ForwardingProxy.save do |s|
s.each do |name, proxy|
next unless proxy.is_a? Hash
unless c_prefs[:save_passwords] == false
unless c_prefs[:key].empty?
end
else
proxy[:password] = ''
end
end
end
end
end
|
.save_thread(ms = 250, &block) ⇒ Object
2
3
4
|
# File 'lib/watobo/gui/fxsave_thread.rb', line 2
def self.save_thread(ms=250, &block)
FXApp.instance.addTimeout(ms, :repeat => true, &block)
end
|
.save_thread_UNUSED(ms = 250, &block) ⇒ Object
6
7
8
9
10
11
12
13
|
# File 'lib/watobo/gui/fxsave_thread.rb', line 6
def self.save_thread_UNUSED(ms=250, &block)
Thread.new {
loop do
sleep 0.5
Watobo::Gui.application.runOnUiThread(&block)
end
}
end
|
.session_name ⇒ Object
11
12
13
|
# File 'lib/watobo/framework/create_project.rb', line 11
def self.session_name
@session_name
end
|
.temp_directory ⇒ Object
38
39
40
|
# File 'lib/watobo/framework/init.rb', line 38
def self.temp_directory
@tmp_dir
end
|
.version ⇒ Object
76
77
78
|
# File 'lib/watobo.rb', line 76
def self.version
Watobo::VERSION
end
|
.working_directory ⇒ Object
42
43
44
45
|
# File 'lib/watobo/framework/init.rb', line 42
def self.working_directory
Watobo::Conf::General.working_directory
end
|
.workspace_path ⇒ Object
52
53
54
|
# File 'lib/watobo/framework/init.rb', line 52
def self.workspace_path
Watobo::Conf::General.workspace_path
end
|
.workspace_path=(new_wsp) ⇒ Object
47
48
49
50
|
# File 'lib/watobo/framework/init.rb', line 47
def self.workspace_path=(new_wsp)
Watobo::Conf::General.workspace_path = new_wsp
end
|