watobo 0.9.21 → 0.9.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +46 -1
  3. data/bin/nfq_server.rb +0 -9
  4. data/bin/watobo_gui.rb +3 -13
  5. data/custom-views/prettify-json.rb +9 -18
  6. data/icons/watobo.ico +0 -0
  7. data/icons/watobo.ico.old +0 -0
  8. data/lib/watobo.rb +10 -19
  9. data/lib/watobo/adapters.rb +5 -14
  10. data/lib/watobo/adapters/data_store.rb +50 -59
  11. data/lib/watobo/adapters/file/file_store.rb +287 -296
  12. data/lib/watobo/adapters/file/marshal_store.rb +293 -296
  13. data/lib/watobo/adapters/session_store.rb +5 -14
  14. data/lib/watobo/ca.rb +1 -10
  15. data/lib/watobo/config.rb +197 -206
  16. data/lib/watobo/constants.rb +0 -9
  17. data/lib/watobo/core.rb +3 -12
  18. data/lib/watobo/core/active_check.rb +72 -135
  19. data/lib/watobo/core/active_checks.rb +49 -58
  20. data/lib/watobo/core/ca.rb +369 -389
  21. data/lib/watobo/core/cert_store.rb +34 -43
  22. data/lib/watobo/core/chat.rb +92 -101
  23. data/lib/watobo/core/chats.rb +271 -280
  24. data/lib/watobo/core/client_cert_store.rb +106 -35
  25. data/lib/watobo/core/conversation.rb +48 -57
  26. data/lib/watobo/core/cookie.rb +23 -32
  27. data/lib/watobo/core/egress_handlers.rb +98 -0
  28. data/lib/watobo/core/finding.rb +66 -75
  29. data/lib/watobo/core/findings.rb +107 -114
  30. data/lib/watobo/core/forwarding_proxy.rb +13 -22
  31. data/lib/watobo/core/fuzz_gen.rb +0 -9
  32. data/lib/watobo/core/intercept_carver.rb +166 -177
  33. data/lib/watobo/core/intercept_filter.rb +235 -244
  34. data/lib/watobo/core/interceptor.rb +98 -107
  35. data/lib/watobo/core/min_class.rb +4 -13
  36. data/lib/watobo/core/netfilter_queue.rb +170 -179
  37. data/lib/watobo/core/ott_cache.rb +132 -141
  38. data/lib/watobo/core/parameter.rb +43 -52
  39. data/lib/watobo/core/passive_check.rb +103 -102
  40. data/lib/watobo/core/passive_checks.rb +48 -57
  41. data/lib/watobo/core/passive_scanner.rb +54 -55
  42. data/lib/watobo/core/plugin.rb +11 -20
  43. data/lib/watobo/core/project.rb +3 -9
  44. data/lib/watobo/core/proxy.rb +43 -52
  45. data/lib/watobo/core/request.rb +125 -123
  46. data/lib/watobo/core/response.rb +44 -53
  47. data/lib/watobo/core/scanner.rb +0 -9
  48. data/lib/watobo/core/scanner3.rb +405 -414
  49. data/lib/watobo/core/scope.rb +83 -92
  50. data/lib/watobo/core/session.rb +1043 -1026
  51. data/lib/watobo/core/sid_cache.rb +98 -107
  52. data/lib/watobo/core/subscriber.rb +25 -34
  53. data/lib/watobo/defaults.rb +21 -30
  54. data/lib/watobo/external/diff/lcs.rb +0 -9
  55. data/lib/watobo/external/diff/lcs/array.rb +0 -9
  56. data/lib/watobo/external/diff/lcs/block.rb +0 -9
  57. data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
  58. data/lib/watobo/external/diff/lcs/change.rb +0 -9
  59. data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
  60. data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
  61. data/lib/watobo/external/diff/lcs/string.rb +0 -9
  62. data/lib/watobo/externals.rb +6 -15
  63. data/lib/watobo/framework.rb +4 -13
  64. data/lib/watobo/framework/create_project.rb +60 -69
  65. data/lib/watobo/framework/init.rb +0 -9
  66. data/lib/watobo/framework/init_modules.rb +0 -9
  67. data/lib/watobo/framework/license_text.rb +28 -37
  68. data/lib/watobo/framework/load_chat.rb +13 -22
  69. data/lib/watobo/gui.rb +132 -123
  70. data/lib/watobo/gui/about_watobo.rb +0 -9
  71. data/lib/watobo/gui/browser_preview.rb +0 -9
  72. data/lib/watobo/gui/certificate_dialog.rb +0 -9
  73. data/lib/watobo/gui/chat_diff.rb +0 -9
  74. data/lib/watobo/gui/chatviewer_frame.rb +73 -72
  75. data/lib/watobo/gui/checkboxtree.rb +0 -9
  76. data/lib/watobo/gui/checks_policy_frame.rb +0 -9
  77. data/lib/watobo/gui/client_cert_dialog.rb +96 -87
  78. data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
  79. data/lib/watobo/gui/conversation_table.rb +158 -164
  80. data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
  81. data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
  82. data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
  83. data/lib/watobo/gui/custom_viewer.rb +374 -383
  84. data/lib/watobo/gui/dashboard.rb +296 -303
  85. data/lib/watobo/gui/define_scope_frame.rb +0 -9
  86. data/lib/watobo/gui/differ_frame.rb +215 -224
  87. data/lib/watobo/gui/edit_comment.rb +0 -9
  88. data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
  89. data/lib/watobo/gui/export_dialog.rb +104 -113
  90. data/lib/watobo/gui/finding_info.rb +0 -9
  91. data/lib/watobo/gui/findings_tree.rb +210 -217
  92. data/lib/watobo/gui/full_scan_dialog.rb +0 -9
  93. data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
  94. data/lib/watobo/gui/fxsave_thread.rb +14 -0
  95. data/lib/watobo/gui/goto_url_dialog.rb +70 -79
  96. data/lib/watobo/gui/hex_viewer.rb +0 -9
  97. data/lib/watobo/gui/html_viewer.rb +287 -296
  98. data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
  99. data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
  100. data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
  101. data/lib/watobo/gui/json_viewer.rb +287 -0
  102. data/lib/watobo/gui/list_box.rb +101 -110
  103. data/lib/watobo/gui/log_file_viewer.rb +32 -41
  104. data/lib/watobo/gui/log_viewer.rb +83 -88
  105. data/lib/watobo/gui/login_wizzard.rb +0 -9
  106. data/lib/watobo/gui/main_window.rb +587 -618
  107. data/lib/watobo/gui/manual_request_editor.rb +620 -565
  108. data/lib/watobo/gui/master_pw_dialog.rb +0 -9
  109. data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
  110. data/lib/watobo/gui/page_tree.rb +217 -226
  111. data/lib/watobo/gui/password_policy_dialog.rb +0 -9
  112. data/lib/watobo/gui/plugin_board.rb +0 -9
  113. data/lib/watobo/gui/preferences_dialog.rb +0 -9
  114. data/lib/watobo/gui/progress_window.rb +17 -27
  115. data/lib/watobo/gui/project_wizzard.rb +0 -9
  116. data/lib/watobo/gui/proxy_dialog.rb +1 -10
  117. data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
  118. data/lib/watobo/gui/request_builder_frame.rb +102 -111
  119. data/lib/watobo/gui/request_editor.rb +181 -137
  120. data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
  121. data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
  122. data/lib/watobo/gui/save_chat_dialog.rb +140 -149
  123. data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
  124. data/lib/watobo/gui/select_chat_dialog.rb +0 -9
  125. data/lib/watobo/gui/session_management_dialog.rb +0 -9
  126. data/lib/watobo/gui/sites_tree.rb +0 -9
  127. data/lib/watobo/gui/status_bar.rb +0 -9
  128. data/lib/watobo/gui/table_editor.rb +0 -9
  129. data/lib/watobo/gui/tagless_viewer.rb +0 -9
  130. data/lib/watobo/gui/templates/plugin.rb +0 -9
  131. data/lib/watobo/gui/templates/plugin2.rb +92 -100
  132. data/lib/watobo/gui/templates/plugin_base.rb +144 -153
  133. data/lib/watobo/gui/text_viewer.rb +0 -9
  134. data/lib/watobo/gui/transcoder_window.rb +0 -9
  135. data/lib/watobo/gui/utils/gui_utils.rb +0 -9
  136. data/lib/watobo/gui/utils/init_icons.rb +86 -95
  137. data/lib/watobo/gui/utils/load_icons.rb +33 -42
  138. data/lib/watobo/gui/utils/load_plugins.rb +116 -119
  139. data/lib/watobo/gui/utils/master_password.rb +68 -77
  140. data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
  141. data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
  142. data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
  143. data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
  144. data/lib/watobo/gui/utils/session_history.rb +112 -121
  145. data/lib/watobo/gui/workspace_dialog.rb +0 -9
  146. data/lib/watobo/gui/www_auth_dialog.rb +0 -9
  147. data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
  148. data/lib/watobo/http.rb +4 -13
  149. data/lib/watobo/http/cookies/cookies.rb +26 -35
  150. data/lib/watobo/http/data/data.rb +45 -54
  151. data/lib/watobo/http/data/json.rb +47 -55
  152. data/lib/watobo/http/url/url.rb +38 -47
  153. data/lib/watobo/http/xml/xml.rb +124 -130
  154. data/lib/watobo/interceptor.rb +3 -12
  155. data/lib/watobo/interceptor/proxy.rb +742 -739
  156. data/lib/watobo/interceptor/transparent.rb +22 -24
  157. data/lib/watobo/mixins.rb +10 -19
  158. data/lib/watobo/mixins/check_info.rb +27 -36
  159. data/lib/watobo/mixins/httpparser.rb +613 -637
  160. data/lib/watobo/mixins/request_parser.rb +88 -97
  161. data/lib/watobo/mixins/shapers.rb +515 -529
  162. data/lib/watobo/mixins/transcoders.rb +3 -11
  163. data/lib/watobo/parser.rb +1 -10
  164. data/lib/watobo/parser/html.rb +83 -92
  165. data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
  166. data/lib/watobo/sockets.rb +3 -12
  167. data/lib/watobo/sockets/agent.rb +828 -837
  168. data/lib/watobo/sockets/client_socket.rb +308 -312
  169. data/lib/watobo/sockets/connection.rb +401 -410
  170. data/lib/watobo/sockets/http_socket.rb +11 -13
  171. data/lib/watobo/sockets/ntlm_auth.rb +129 -138
  172. data/lib/watobo/utils.rb +10 -19
  173. data/lib/watobo/utils/check_regex.rb +0 -9
  174. data/lib/watobo/utils/copy_object.rb +0 -9
  175. data/lib/watobo/utils/crypto.rb +0 -9
  176. data/lib/watobo/utils/expand_range.rb +23 -32
  177. data/lib/watobo/utils/export_xml.rb +97 -106
  178. data/lib/watobo/utils/file_management.rb +9 -11
  179. data/lib/watobo/utils/hexprint.rb +9 -18
  180. data/lib/watobo/utils/load_chat.rb +0 -9
  181. data/lib/watobo/utils/load_icon.rb +0 -9
  182. data/lib/watobo/utils/ntlm.rb +866 -875
  183. data/lib/watobo/utils/print_debug.rb +12 -21
  184. data/lib/watobo/utils/response_builder.rb +90 -99
  185. data/lib/watobo/utils/response_hash.rb +0 -9
  186. data/lib/watobo/utils/secure_eval.rb +0 -9
  187. data/lib/watobo/utils/strings.rb +10 -19
  188. data/lib/watobo/utils/text2request.rb +0 -9
  189. data/lib/watobo/utils/url.rb +23 -32
  190. data/lib/watobo/utils/utf16.rb +11 -20
  191. data/modules/active/Apache/mod_status.rb +0 -9
  192. data/modules/active/Apache/multiview.rb +151 -160
  193. data/modules/active/Flash/crossdomain.rb +0 -9
  194. data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
  195. data/modules/active/cq5/cq5_default_selectors.rb +106 -115
  196. data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
  197. data/modules/active/directories/dirwalker.rb +0 -9
  198. data/modules/active/discovery/fileextensions.rb +0 -9
  199. data/modules/active/discovery/http_methods.rb +0 -9
  200. data/modules/active/discovery/jsmapfiles.rb +79 -0
  201. data/modules/active/domino/domino_db.rb +68 -76
  202. data/modules/active/dotNET/custom_errors.rb +102 -111
  203. data/modules/active/dotNET/dotnet_files.rb +90 -99
  204. data/modules/active/fileinclusion/lfi_simple.rb +0 -9
  205. data/modules/active/jboss/jboss_basic.rb +0 -9
  206. data/modules/active/sap/business_objects.rb +51 -60
  207. data/modules/active/sap/its_commands.rb +0 -9
  208. data/modules/active/sap/its_service_parameter.rb +0 -9
  209. data/modules/active/sap/its_services.rb +0 -9
  210. data/modules/active/sap/its_xss.rb +0 -9
  211. data/modules/active/shell_shock/shell_shock.rb +139 -148
  212. data/modules/active/siebel/siebel_apps.rb +160 -169
  213. data/modules/active/sqlinjection/sql_boolean.rb +0 -9
  214. data/modules/active/sqlinjection/sql_numerical.rb +198 -0
  215. data/modules/active/sqlinjection/sqli_error.rb +0 -9
  216. data/modules/active/sqlinjection/sqli_timing.rb +220 -229
  217. data/modules/active/struts2/default_handler_ognl.rb +106 -115
  218. data/modules/active/struts2/include_params_ognl.rb +105 -114
  219. data/modules/active/xml/xml_xxe.rb +112 -123
  220. data/modules/active/xss/xss_ng.rb +214 -223
  221. data/modules/active/xss/xss_simple.rb +0 -9
  222. data/modules/passive/ajax.rb +68 -77
  223. data/modules/passive/autocomplete.rb +56 -65
  224. data/modules/passive/cookie_options.rb +0 -9
  225. data/modules/passive/cookie_xss.rb +0 -9
  226. data/modules/passive/detect_code.rb +0 -9
  227. data/modules/passive/detect_fileupload.rb +0 -9
  228. data/modules/passive/detect_infrastructure.rb +0 -9
  229. data/modules/passive/detect_one_time_tokens.rb +0 -9
  230. data/modules/passive/dirindexing.rb +0 -9
  231. data/modules/passive/disclosure_domino.rb +55 -64
  232. data/modules/passive/disclosure_emails.rb +0 -9
  233. data/modules/passive/disclosure_ipaddr.rb +55 -53
  234. data/modules/passive/filename_as_parameter.rb +0 -9
  235. data/modules/passive/form_spotter.rb +0 -9
  236. data/modules/passive/hidden_fields.rb +50 -59
  237. data/modules/passive/hotspots.rb +0 -9
  238. data/modules/passive/in_script_parameter.rb +0 -9
  239. data/modules/passive/json_web_token.rb +93 -0
  240. data/modules/passive/multiple_server_headers.rb +0 -9
  241. data/modules/passive/possible_login.rb +0 -9
  242. data/modules/passive/redirect_url.rb +0 -9
  243. data/modules/passive/redirectionz.rb +0 -9
  244. data/modules/passive/sap-headers.rb +56 -65
  245. data/modules/passive/xss_dom.rb +0 -9
  246. data/plugins/aem/aem.rb +11 -20
  247. data/plugins/aem/gui/main.rb +118 -127
  248. data/plugins/aem/gui/tree_view.rb +171 -180
  249. data/plugins/aem/lib/agent.rb +130 -138
  250. data/plugins/aem/lib/dispatcher.rb +45 -51
  251. data/plugins/aem/lib/engine.rb +177 -186
  252. data/plugins/catalog/catalog.rb +345 -355
  253. data/plugins/crawler/crawler.rb +4 -13
  254. data/plugins/crawler/gui.rb +5 -14
  255. data/plugins/crawler/gui/auth_frame.rb +270 -279
  256. data/plugins/crawler/gui/crawler_gui.rb +271 -276
  257. data/plugins/crawler/gui/general_settings_frame.rb +96 -105
  258. data/plugins/crawler/gui/hooks_frame.rb +80 -89
  259. data/plugins/crawler/gui/scope_frame.rb +50 -59
  260. data/plugins/crawler/gui/settings_tabbook.rb +38 -47
  261. data/plugins/crawler/gui/status_frame.rb +59 -68
  262. data/plugins/crawler/lib/bags.rb +18 -27
  263. data/plugins/crawler/lib/constants.rb +11 -20
  264. data/plugins/crawler/lib/engine.rb +488 -497
  265. data/plugins/crawler/lib/grabber.rb +68 -77
  266. data/plugins/crawler/lib/status.rb +71 -80
  267. data/plugins/crawler/lib/uri_mp.rb +12 -21
  268. data/plugins/filefinder/filefinder.rb +326 -333
  269. data/plugins/sqlmap/bin/test.rb +78 -87
  270. data/plugins/sqlmap/gui.rb +4 -13
  271. data/plugins/sqlmap/gui/main.rb +218 -227
  272. data/plugins/sqlmap/gui/options_frame.rb +97 -106
  273. data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
  274. data/plugins/sqlmap/sqlmap.rb +2 -11
  275. data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
  276. data/plugins/sslchecker/gui/cipher_table.rb +246 -254
  277. data/plugins/sslchecker/gui/gui.rb +258 -264
  278. data/plugins/sslchecker/gui/sslchecker.rb +4 -13
  279. data/plugins/sslchecker/lib/check.rb +127 -133
  280. data/plugins/wshell/gui/main.rb +119 -117
  281. data/plugins/wshell/lib/core.rb +38 -88
  282. data/plugins/wshell/wshell.rb +11 -20
  283. metadata +170 -164
@@ -1,155 +1,146 @@
1
- #.
2
- # plugin_base.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
- module Watobo#:nodoc: all
12
- class PluginBase
13
- def self.inherited(subclass)
14
- %w( plugin_name plugin_path description version author output_path config_path lib_path ).each do |cvar|
15
- define_method(cvar){ self.class.instance_variable_get("@#{cvar}")}
16
- define_singleton_method("get_#{cvar}"){
17
- return nil unless instance_variable_defined?("@#{cvar}")
18
- instance_variable_get("@#{cvar}")
19
- }
20
- define_singleton_method("#{cvar}"){ |val| instance_variable_set("@#{cvar}",val)}
21
- end
22
- path = File.join(File.dirname(caller[0]))
23
- subclass.plugin_path path if File.exist?(path)
24
- lpath = File.join(path, "lib" )
25
- subclass.lib_path lpath if File.exist?(lpath)
26
- end
27
-
28
- def self.load_libs(*order)
29
- lpath = get_lib_path
30
- if order.empty?
31
- libs = Dir.glob("#{lpath}/*")
32
- else
33
- libs = order.map{|l| l.to_s + ".rb" }
34
- end
2
+ module Watobo #:nodoc: all
3
+ class PluginBase
4
+ def self.inherited(subclass)
5
+ %w( plugin_name plugin_path description version author output_path config_path lib_path ).each do |cvar|
6
+ define_method(cvar) { self.class.instance_variable_get("@#{cvar}") }
7
+ define_singleton_method("get_#{cvar}") {
8
+ return nil unless instance_variable_defined?("@#{cvar}")
9
+ instance_variable_get("@#{cvar}")
10
+ }
11
+ define_singleton_method("#{cvar}") { |val| instance_variable_set("@#{cvar}", val) }
12
+ end
13
+ path = File.join(File.dirname(caller[0]))
14
+ subclass.plugin_path path if File.exist?(path)
15
+ lpath = File.join(path, "lib")
16
+ subclass.lib_path lpath if File.exist?(lpath)
17
+ end
18
+
19
+ def self.load_libs(*order)
20
+ lpath = get_lib_path
21
+ if order.empty?
22
+ libs = Dir.glob("#{lpath}/*")
23
+ else
24
+ libs = order.map { |l| l.to_s + ".rb" }
25
+ end
35
26
  libs.each do |lib|
36
- load File.join(lib)
37
- end
38
- end
39
-
40
- def self.gui
41
- @gui
42
- end
43
-
44
-
45
- def self.create_gui()
46
- if self.const_defined? :Gui
47
- gui = self.class_eval("Gui")
48
- @gui = gui.new()
49
- return @gui
50
- end
51
- puts "No GUI available for #{self}!"
52
- return nil
53
-
54
- end
55
-
56
- def self.load_gui(*order)
57
- # load if WATOBO is in GUI mode
58
- if Watobo.const_defined? :Gui
59
- # gui_path = File.join(File.dirname(caller[0]), "gui")
60
- gui_path = File.join(get_plugin_path, "gui")
61
- if order.empty?
62
- libs = Dir.glob("#{gui_path}/*")
63
- else
64
- libs = order.map{|l| l.to_s + ".rb" }
65
- end
66
- libs.each do |lib|
67
- puts "loading gui-lib #{lib} ..."
68
- load File.join(gui_path, lib)
69
- end
70
- else
71
- puts "WATOBO NOT IN GUI MODE!"
72
- end
73
- end
74
-
75
- def self.has_gui?
76
- puts self
77
- return true
78
- end
79
- end
80
-
81
- class PluginGui < FXDialogBox
82
-
83
- include Watobo::Gui
84
- include Watobo::Gui::Icons
85
-
86
- extend Watobo::Subscriber
87
-
88
- def self.inherited(subclass)
89
- %w( icon_file icons_path window_title width height config_path ).each do |cvar|
90
- define_method(cvar){ self.class.instance_variable_get("@#{cvar}")}
91
- define_singleton_method("get_#{cvar}"){
92
- return nil unless instance_variable_defined?("@#{cvar}")
93
- instance_variable_get("@#{cvar}")
94
- }
95
- define_singleton_method("#{cvar}"){ |val| instance_variable_set("@#{cvar}",val)}
96
- end
97
-
98
- base_class = class_eval( subclass.to_s.gsub(/::Gui/,''))
99
- plugin_path = base_class.get_plugin_path
100
- ipath = File.join(plugin_path, "icons")
101
- if File.exist?(ipath)
102
- # define_singleton_method("icons_path"){ "#{ipath}" }
103
- subclass.icons_path ipath
104
- end
105
-
106
- end
107
-
108
-
109
- def updateView()
110
- raise "!!! updateView not defined"
111
- end
112
-
113
- def initialize( opts = {} )
114
- # _width = instance_variable_get("@width")
115
- # puts _width
116
- # puts _width.class
117
- copts = { :opts => DECOR_ALL,:width=>800, :height=>600 }
118
- copts.update opts
119
- title = self.class.instance_variable_defined?("@window_title") ? window_title : "#{self}"
120
- super(Watobo::Gui.application, title, copts)
121
-
122
- @timer_lock = Mutex.new
123
- load_icon
124
-
125
- end
126
-
127
- private
128
-
129
- def load_icon
130
- ipath = icons_path
131
- ifile = icon_file
132
- return false if ipath.nil? or ifile.nil?
133
-
134
- myicon = File.join(ipath, ifile)
135
- if File.exist? myicon
136
- #puts "* loading icon > #{myicon}"
137
- self.icon = Watobo::Gui.load_icon(myicon) unless myicon.nil?
138
- else
139
- self.icon = nil
140
- end
141
- end
142
-
143
- def update_timer(ms=50, &block)
144
- update_timer = FXApp.instance.addTimeout( ms, :repeat => true) {
145
- @timer_lock.synchronize do
146
- if block_given?
147
- block.call if block.respond_to? :call
148
- end
149
- end
150
- }
151
- end
152
-
153
- end
154
- end
155
-
27
+ load File.join(lib)
28
+ end
29
+ end
30
+
31
+ def self.gui
32
+ @gui
33
+ end
34
+
35
+
36
+ def self.create_gui()
37
+ if self.const_defined? :Gui
38
+ gui = self.class_eval("Gui")
39
+ @gui = gui.new()
40
+ return @gui
41
+ end
42
+ puts "No GUI available for #{self}!"
43
+ return nil
44
+
45
+ end
46
+
47
+ def self.load_gui(*order)
48
+ # load if WATOBO is in GUI mode
49
+ if Watobo.const_defined? :Gui
50
+ # gui_path = File.join(File.dirname(caller[0]), "gui")
51
+ gui_path = File.join(get_plugin_path, "gui")
52
+ if order.empty?
53
+ libs = Dir.glob("#{gui_path}/*")
54
+ else
55
+ libs = order.map { |l| l.to_s + ".rb" }
56
+ end
57
+ libs.each do |lib|
58
+ puts "loading gui-lib #{lib} ..."
59
+ load File.join(gui_path, lib)
60
+ end
61
+ else
62
+ puts "WATOBO NOT IN GUI MODE!"
63
+ end
64
+ end
65
+
66
+ def self.has_gui?
67
+ puts self
68
+ return true
69
+ end
70
+ end
71
+
72
+ class PluginGui < FXDialogBox
73
+
74
+ include Watobo::Gui
75
+ include Watobo::Gui::Icons
76
+
77
+ extend Watobo::Subscriber
78
+
79
+ def self.inherited(subclass)
80
+ %w( icon_file icons_path window_title width height config_path ).each do |cvar|
81
+ define_method(cvar) { self.class.instance_variable_get("@#{cvar}") }
82
+ define_singleton_method("get_#{cvar}") {
83
+ return nil unless instance_variable_defined?("@#{cvar}")
84
+ instance_variable_get("@#{cvar}")
85
+ }
86
+ define_singleton_method("#{cvar}") { |val| instance_variable_set("@#{cvar}", val) }
87
+ end
88
+
89
+ base_class = class_eval(subclass.to_s.gsub(/::Gui/, ''))
90
+ plugin_path = base_class.get_plugin_path
91
+ ipath = File.join(plugin_path, "icons")
92
+ if File.exist?(ipath)
93
+ # define_singleton_method("icons_path"){ "#{ipath}" }
94
+ subclass.icons_path ipath
95
+ end
96
+
97
+ end
98
+
99
+
100
+ def updateView()
101
+ raise "!!! updateView not defined"
102
+ end
103
+
104
+ def initialize(opts = {})
105
+ # _width = instance_variable_get("@width")
106
+ # puts _width
107
+ # puts _width.class
108
+ copts = {:opts => DECOR_ALL, :width => 800, :height => 600}
109
+ copts.update opts
110
+ title = self.class.instance_variable_defined?("@window_title") ? window_title : "#{self}"
111
+ super(Watobo::Gui.application, title, copts)
112
+
113
+ @timer_lock = Mutex.new
114
+ load_icon
115
+
116
+ end
117
+
118
+ private
119
+
120
+ def load_icon
121
+ ipath = icons_path
122
+ ifile = icon_file
123
+ return false if ipath.nil? or ifile.nil?
124
+
125
+ myicon = File.join(ipath, ifile)
126
+ if File.exist? myicon
127
+ #puts "* loading icon > #{myicon}"
128
+ self.icon = Watobo::Gui.load_icon(myicon) unless myicon.nil?
129
+ else
130
+ self.icon = nil
131
+ end
132
+ end
133
+
134
+ def update_timer(ms=250, &block)
135
+ Watobo.save_thread{
136
+ @timer_lock.synchronize do
137
+ if block_given?
138
+ block.call if block.respond_to? :call
139
+ end
140
+ end
141
+ }
142
+ end
143
+
144
+ end
145
+ end
146
+
@@ -1,12 +1,3 @@
1
- #.
2
- # text_viewer.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # transcoder_window.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # gui_utils.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,97 +1,88 @@
1
- #.
2
- # init_icons.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
- module Watobo#:nodoc: all
12
- module Gui
13
- module Icons
14
- WATOBO_LOGO = Watobo::Gui.load_gui_icon("watobo-logo.png")
15
-
16
- ICON_CB_UNCHECKED = Watobo::Gui.load_gui_icon("cb_unchecked.ico")
17
- ICON_CB_CHECKED = Watobo::Gui.load_gui_icon("cb_checked.ico")
18
- ICON_CB_CHECKED_ORANGE = Watobo::Gui.load_gui_icon("cb_checked_orange.ico")
19
-
20
- ICON_WATOBO = Watobo::Gui.load_gui_icon("watobo.ico")
21
-
22
- ICON_FUZZ_TAG = Watobo::Gui.load_gui_icon("tag_blue_32x32.ico")
23
- ICON_FUZZ_FILTER = Watobo::Gui.load_gui_icon("filter.ico")
24
- ICON_FUZZ_GENERATOR = Watobo::Gui.load_gui_icon("engine.ico")
25
- ICON_TOKEN = Watobo::Gui.load_gui_icon("coin_24x24.ico")
26
-
27
- ICON_MANUAL_REQUEST = Watobo::Gui.load_gui_icon("applications_24x24.ico")
28
- ICON_MANUAL_REQUEST_MEDIUM = Watobo::Gui.load_gui_icon("applications_24x24.ico")
29
- ICON_MANUAL_REQUEST_SMALL = Watobo::Gui.load_gui_icon("applications_16x16.ico")
30
- ICON_LOGIN_WIZZARD = Watobo::Gui.load_gui_icon("User.ico")
31
- ICON_DIFFER = Watobo::Gui.load_gui_icon("monitor.ico")
32
-
33
- ICON_INTERCEPTOR = Watobo::Gui.load_gui_icon("interceptor_24x24.ico")
34
-
35
- ICON_START = Watobo::Gui.load_gui_icon("Play_24x24.ico")
36
- ICON_STOP = Watobo::Gui.load_gui_icon("Stop_24x24.ico")
37
- ICON_PAUSE = Watobo::Gui.load_gui_icon("Pause.ico")
38
- ICON_REPORT = Watobo::Gui.load_gui_icon("Write Document.ico")
39
- ICON_ADD_PROJECT = Watobo::Gui.load_gui_icon("Add_24x24.ico")
40
- ICON_DASHBOARD = Watobo::Gui.load_gui_icon("Bandwidth_24x24.ico")
41
- ICON_CONVERSATION = Watobo::Gui.load_gui_icon("conversation_24x24.ico")
42
- ICON_TRANSCODER = Watobo::Gui.load_gui_icon("calculator_24x24.ico")
43
- ICON_PROJECT = Watobo::Gui.load_gui_icon("browser_24x24.ico")
44
- ICON_FUZZER = Watobo::Gui.load_gui_icon("fuzzer_24x24.ico")
45
- ICON_FUZZER_MEDIUM = Watobo::Gui.load_gui_icon("fuzzer_24x24.ico")
46
- ICON_FUZZER_SMALL = Watobo::Gui.load_gui_icon("fuzzer_16x16.ico")
47
- ICON_PLUGIN = Watobo::Gui.load_gui_icon("plugin_24x24.ico")
48
-
49
- # Findings Tree Icons
50
- ICON_VULN = Watobo::Gui.load_gui_icon("Mr. Bomb_24x24.ico")
51
- ICON_VULN_BP = Watobo::Gui.load_gui_icon("BestPractice_24x24.ico")
52
- ICON_VULN_LOW = Watobo::Gui.load_gui_icon("Yellow Ball_24x24.ico")
53
- ICON_VULN_MEDIUM = Watobo::Gui.load_gui_icon("Orange Ball_24x24.ico")
54
- ICON_VULN_HIGH = Watobo::Gui.load_gui_icon("Red Ball_24x24.ico")
55
- ICON_VULN_CRITICAL = Watobo::Gui.load_gui_icon("burn_24x24.ico")
56
- ICON_INFO = Watobo::Gui.load_gui_icon("info_24x24.ico")
57
- ICON_INFO_INFO = Watobo::Gui.load_gui_icon("iChat_24x24.ico")
58
- ICON_INFO_USER = Watobo::Gui.load_gui_icon("User_24x24.ico")
59
- ICON_HINTS = Watobo::Gui.load_gui_icon("advanced_24x24.ico")
60
- ICON_HINTS_INFO = Watobo::Gui.load_gui_icon("help_24x24.ico")
61
-
62
- # small
63
- ICON_PROJECT_SMALL = Watobo::Gui.load_gui_icon("Web Browser_16x16.ico")
64
- ICON_VULN_SMALL = Watobo::Gui.load_gui_icon("Mr. Bomb_16x16.ico")
65
- ICON_VULN_BP_SMALL = Watobo::Gui.load_gui_icon("BestPractice_16x16.ico")
66
- ICON_VULN_LOW_SMALL = Watobo::Gui.load_gui_icon("Yellow Ball_16x16.ico")
67
- ICON_VULN_MEDIUM_SMALL = Watobo::Gui.load_gui_icon("Orange Ball_16x16.ico")
68
- ICON_VULN_HIGH_SMALL = Watobo::Gui.load_gui_icon("Red Ball_16x16.ico")
69
- ICON_VULN_CRITICAL_SMALL = Watobo::Gui.load_gui_icon("burn_16x16.ico")
70
- ICON_INFO_SMALL = Watobo::Gui.load_gui_icon("info_16x16.ico")
71
- ICON_INFO_INFO_SMALL = Watobo::Gui.load_gui_icon("iChat_16x16.ico")
72
- ICON_INFO_USER_SMALL = Watobo::Gui.load_gui_icon("User_16x16.ico")
73
- ICON_HINTS_SMALL = Watobo::Gui.load_gui_icon("advanced_16x16.ico")
74
- ICON_HINTS_INFO_SMALL = Watobo::Gui.load_gui_icon("help_16x16.ico")
75
-
76
- # Sites Tree Icons
77
- ICON_FOLDER = Watobo::Gui.load_gui_icon("folder.ico")
78
- ICON_REQUEST = Watobo::Gui.load_gui_icon("Transfer.ico")
79
- ICON_SITE = Watobo::Gui.load_gui_icon("server.ico")
80
-
81
- ICON_FOLDER_SMALL = Watobo::Gui.load_gui_icon("folder_16x16.ico")
82
- ICON_REQUEST_SMALL = Watobo::Gui.load_gui_icon("Transfer_16x16.ico")
83
- ICON_SITE_SMALL = Watobo::Gui.load_gui_icon("server_16x16.ico")
84
-
85
- ICON_SEND_REQUEST = Watobo::Gui.load_gui_icon("send.ico")
86
- ICON_BROWSER_SMALL = Watobo::Gui.load_gui_icon("browser_16x16.ico")
87
- ICON_BROWSER_MEDIUM = Watobo::Gui.load_gui_icon("browser_24x24.ico")
88
-
89
- ICON_BTN_UP = Watobo::Gui.load_gui_icon("go-up_16x16.png")
90
- ICON_BTN_DOWN = Watobo::Gui.load_gui_icon("go-down_16x16.png")
91
-
92
- TBL_ICON_LOCK = Watobo::Gui.load_gui_icon("lock_12x12.ico")
93
-
94
- SIBERAS_ICON = Watobo::Gui.load_gui_icon("siberas_logo_x24.gif")
95
- end
96
- end
2
+ module Watobo#:nodoc: all
3
+ module Gui
4
+ module Icons
5
+ WATOBO_LOGO = Watobo::Gui.load_gui_icon("watobo-logo.png")
6
+
7
+ ICON_CB_UNCHECKED = Watobo::Gui.load_gui_icon("cb_unchecked.ico")
8
+ ICON_CB_CHECKED = Watobo::Gui.load_gui_icon("cb_checked.ico")
9
+ ICON_CB_CHECKED_ORANGE = Watobo::Gui.load_gui_icon("cb_checked_orange.ico")
10
+
11
+ ICON_WATOBO = Watobo::Gui.load_gui_icon("watobo.ico")
12
+
13
+ ICON_FUZZ_TAG = Watobo::Gui.load_gui_icon("tag_blue_32x32.ico")
14
+ ICON_FUZZ_FILTER = Watobo::Gui.load_gui_icon("filter.ico")
15
+ ICON_FUZZ_GENERATOR = Watobo::Gui.load_gui_icon("engine.ico")
16
+ ICON_TOKEN = Watobo::Gui.load_gui_icon("coin_24x24.ico")
17
+
18
+ ICON_MANUAL_REQUEST = Watobo::Gui.load_gui_icon("applications_24x24.ico")
19
+ ICON_MANUAL_REQUEST_MEDIUM = Watobo::Gui.load_gui_icon("applications_24x24.ico")
20
+ ICON_MANUAL_REQUEST_SMALL = Watobo::Gui.load_gui_icon("applications_16x16.ico")
21
+ ICON_LOGIN_WIZZARD = Watobo::Gui.load_gui_icon("User.ico")
22
+ ICON_DIFFER = Watobo::Gui.load_gui_icon("monitor.ico")
23
+
24
+ ICON_INTERCEPTOR = Watobo::Gui.load_gui_icon("interceptor_24x24.ico")
25
+
26
+ ICON_START = Watobo::Gui.load_gui_icon("Play_24x24.ico")
27
+ ICON_STOP = Watobo::Gui.load_gui_icon("Stop_24x24.ico")
28
+ ICON_PAUSE = Watobo::Gui.load_gui_icon("Pause.ico")
29
+ ICON_REPORT = Watobo::Gui.load_gui_icon("Write Document.ico")
30
+ ICON_ADD_PROJECT = Watobo::Gui.load_gui_icon("Add_24x24.ico")
31
+ ICON_DASHBOARD = Watobo::Gui.load_gui_icon("Bandwidth_24x24.ico")
32
+ ICON_CONVERSATION = Watobo::Gui.load_gui_icon("conversation_24x24.ico")
33
+ ICON_TRANSCODER = Watobo::Gui.load_gui_icon("calculator_24x24.ico")
34
+ ICON_PROJECT = Watobo::Gui.load_gui_icon("browser_24x24.ico")
35
+ ICON_FUZZER = Watobo::Gui.load_gui_icon("fuzzer_24x24.ico")
36
+ ICON_FUZZER_MEDIUM = Watobo::Gui.load_gui_icon("fuzzer_24x24.ico")
37
+ ICON_FUZZER_SMALL = Watobo::Gui.load_gui_icon("fuzzer_16x16.ico")
38
+ ICON_PLUGIN = Watobo::Gui.load_gui_icon("plugin_24x24.ico")
39
+
40
+ # Findings Tree Icons
41
+ ICON_VULN = Watobo::Gui.load_gui_icon("Mr. Bomb_24x24.ico")
42
+ ICON_VULN_BP = Watobo::Gui.load_gui_icon("BestPractice_24x24.ico")
43
+ ICON_VULN_LOW = Watobo::Gui.load_gui_icon("Yellow Ball_24x24.ico")
44
+ ICON_VULN_MEDIUM = Watobo::Gui.load_gui_icon("Orange Ball_24x24.ico")
45
+ ICON_VULN_HIGH = Watobo::Gui.load_gui_icon("Red Ball_24x24.ico")
46
+ ICON_VULN_CRITICAL = Watobo::Gui.load_gui_icon("burn_24x24.ico")
47
+ ICON_INFO = Watobo::Gui.load_gui_icon("info_24x24.ico")
48
+ ICON_INFO_INFO = Watobo::Gui.load_gui_icon("iChat_24x24.ico")
49
+ ICON_INFO_USER = Watobo::Gui.load_gui_icon("User_24x24.ico")
50
+ ICON_HINTS = Watobo::Gui.load_gui_icon("advanced_24x24.ico")
51
+ ICON_HINTS_INFO = Watobo::Gui.load_gui_icon("help_24x24.ico")
52
+
53
+ # small
54
+ ICON_PROJECT_SMALL = Watobo::Gui.load_gui_icon("Web Browser_16x16.ico")
55
+ ICON_VULN_SMALL = Watobo::Gui.load_gui_icon("Mr. Bomb_16x16.ico")
56
+ ICON_VULN_BP_SMALL = Watobo::Gui.load_gui_icon("BestPractice_16x16.ico")
57
+ ICON_VULN_LOW_SMALL = Watobo::Gui.load_gui_icon("Yellow Ball_16x16.ico")
58
+ ICON_VULN_MEDIUM_SMALL = Watobo::Gui.load_gui_icon("Orange Ball_16x16.ico")
59
+ ICON_VULN_HIGH_SMALL = Watobo::Gui.load_gui_icon("Red Ball_16x16.ico")
60
+ ICON_VULN_CRITICAL_SMALL = Watobo::Gui.load_gui_icon("burn_16x16.ico")
61
+ ICON_INFO_SMALL = Watobo::Gui.load_gui_icon("info_16x16.ico")
62
+ ICON_INFO_INFO_SMALL = Watobo::Gui.load_gui_icon("iChat_16x16.ico")
63
+ ICON_INFO_USER_SMALL = Watobo::Gui.load_gui_icon("User_16x16.ico")
64
+ ICON_HINTS_SMALL = Watobo::Gui.load_gui_icon("advanced_16x16.ico")
65
+ ICON_HINTS_INFO_SMALL = Watobo::Gui.load_gui_icon("help_16x16.ico")
66
+
67
+ # Sites Tree Icons
68
+ ICON_FOLDER = Watobo::Gui.load_gui_icon("folder.ico")
69
+ ICON_REQUEST = Watobo::Gui.load_gui_icon("Transfer.ico")
70
+ ICON_SITE = Watobo::Gui.load_gui_icon("server.ico")
71
+
72
+ ICON_FOLDER_SMALL = Watobo::Gui.load_gui_icon("folder_16x16.ico")
73
+ ICON_REQUEST_SMALL = Watobo::Gui.load_gui_icon("Transfer_16x16.ico")
74
+ ICON_SITE_SMALL = Watobo::Gui.load_gui_icon("server_16x16.ico")
75
+
76
+ ICON_SEND_REQUEST = Watobo::Gui.load_gui_icon("send.ico")
77
+ ICON_BROWSER_SMALL = Watobo::Gui.load_gui_icon("browser_16x16.ico")
78
+ ICON_BROWSER_MEDIUM = Watobo::Gui.load_gui_icon("browser_24x24.ico")
79
+
80
+ ICON_BTN_UP = Watobo::Gui.load_gui_icon("go-up_16x16.png")
81
+ ICON_BTN_DOWN = Watobo::Gui.load_gui_icon("go-down_16x16.png")
82
+
83
+ TBL_ICON_LOCK = Watobo::Gui.load_gui_icon("lock_12x12.ico")
84
+
85
+ SIBERAS_ICON = Watobo::Gui.load_gui_icon("siberas_logo_x24.gif")
86
+ end
87
+ end
97
88
  end