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,352 +1,345 @@
1
- #.
2
- # dashboard.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
2
+ module Watobo #:nodoc: all
3
+
4
+ module Gui
12
5
 
13
- module Gui
6
+ class ProgressInfo < FXVerticalFrame
14
7
 
15
- class ProgressInfo < FXVerticalFrame
16
-
17
- def increment(i)
18
- @lock.synchronize do
19
- @pbar.progress += i
20
- #@total += i
21
- end
8
+ def increment(i)
9
+ @lock.synchronize do
10
+ @pbar.progress += i
11
+ #@total += i
22
12
  end
23
-
24
- def progress(i)
25
- @lock.synchronize do
26
- @pbar.progress = i
27
- update_bar_color
28
- end
13
+ end
14
+
15
+ def progress(i)
16
+ @lock.synchronize do
17
+ @pbar.progress = i
18
+ update_bar_color
29
19
  end
30
-
31
- def update_bar_color
32
- if @pbar.total == 0 then
33
- @pbar.barColor = 'grey'
34
- else
35
- @pbar.barColor = FXRGB(255,0,0)
36
- end
37
- if @pbar.progress == @pbar.total
38
- @pbar.barColor = 'green'
39
- end
20
+ end
21
+
22
+ def update_bar_color
23
+ if @pbar.total == 0 then
24
+ @pbar.barColor = 'grey'
25
+ else
26
+ @pbar.barColor = FXRGB(255, 0, 0)
40
27
  end
41
-
42
- def total(i)
43
- @lock.synchronize do
44
- #@progress = i
45
- @pbar.total = i
46
- end
28
+ if @pbar.progress == @pbar.total
29
+ @pbar.barColor = 'green'
47
30
  end
48
-
49
- def finished
50
- @lock.synchronize do
51
- @progress = @total
52
- end
31
+ end
32
+
33
+ def total(i)
34
+ @lock.synchronize do
35
+ #@progress = i
36
+ @pbar.total = i
53
37
  end
54
-
55
- def initialize(owner, check_name, num_checks)
38
+ end
39
+
40
+ def finished
41
+ @lock.synchronize do
42
+ @progress = @total
43
+ end
44
+ end
45
+
46
+ def initialize(owner, check_name, num_checks)
56
47
  begin
57
- super(owner, :opts => LAYOUT_FILL_X|FRAME_GROOVE|LAYOUT_TOP)
58
- @lock = Mutex.new
59
- @check_name = check_name
60
- @label = FXLabel.new(self, check_name, :opts => LAYOUT_LEFT)
61
-
62
- # puts l
63
- @pbar = FXProgressBar.new(self, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
64
- @pbar.progress = 0
65
- @pbar.total = num_checks
66
- puts "#{check_name} has #{num_checks} Checks"
67
- update_bar_color
68
- rescue => bang
69
- puts "!!!ERROR: could not add progress info"
70
- puts bang
71
- puts bang.backtrace if $DEBUG
72
- end
73
- end
48
+ super(owner, :opts => LAYOUT_FILL_X|FRAME_GROOVE|LAYOUT_TOP)
49
+ @lock = Mutex.new
50
+ @check_name = check_name
51
+ @label = FXLabel.new(self, check_name, :opts => LAYOUT_LEFT)
52
+
53
+ # puts l
54
+ @pbar = FXProgressBar.new(self, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
55
+ @pbar.progress = 0
56
+ @pbar.total = num_checks
57
+ puts "#{check_name} has #{num_checks} Checks"
58
+ update_bar_color
59
+ rescue => bang
60
+ puts "!!!ERROR: could not add progress info"
61
+ puts bang
62
+ puts bang.backtrace if $DEBUG
63
+ end
74
64
  end
75
-
76
- class ScanProgressFrame < FXVerticalFrame
77
- attr :progress_bars
78
- attr :scan_status
65
+ end
79
66
 
80
- include Watobo::Gui::Icons
67
+ class ScanProgressFrame < FXVerticalFrame
68
+ attr :progress_bars
69
+ attr :scan_status
81
70
 
82
- def setup(modules=[])
83
- @progress_bars.clear
71
+ include Watobo::Gui::Icons
84
72
 
85
- @progress_frame.each_child do |child|
86
- @progress_frame.removeChild(child)
87
- end
73
+ def setup(modules=[])
74
+ @progress_bars.clear
88
75
 
76
+ @progress_frame.each_child do |child|
77
+ @progress_frame.removeChild(child)
78
+ end
89
79
 
90
- #@progress_bars = Hash.new
91
- modules.each do |check_name, num_checks|
92
- puts "* new ProgressInfo: #{check_name} - #{num_checks}"
93
- pi = ProgressInfo.new(@progress_frame, check_name, num_checks[:total])
94
- pi.create
95
80
 
96
- @progress_bars[check_name] = pi
97
- end
98
- @progress_frame.recalc
99
- @progress_frame.update
81
+ #@progress_bars = Hash.new
82
+ modules.each do |check_name, num_checks|
83
+ puts "* new ProgressInfo: #{check_name} - #{num_checks}"
84
+ pi = ProgressInfo.new(@progress_frame, check_name, num_checks[:total])
85
+ pi.create
86
+
87
+ @progress_bars[check_name] = pi
88
+ end
89
+ @progress_frame.recalc
90
+ @progress_frame.update
100
91
 
101
92
 
102
- end
93
+ end
103
94
 
104
- def initialize(owner, opts)
105
- super(owner, opts)
95
+ def initialize(owner, opts)
96
+ super(owner, opts)
106
97
 
107
- # frame = FXScrollWindow.new(self, SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
108
- frame = FXScrollWindow.new(self, SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
109
- info_container = FXVerticalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
110
- frame = FXHorizontalFrame.new(info_container, :opts => LAYOUT_FILL_X)
111
- FXLabel.new(frame, "Scan-Status:")
98
+ # frame = FXScrollWindow.new(self, SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
99
+ frame = FXScrollWindow.new(self, SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
100
+ info_container = FXVerticalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
101
+ frame = FXHorizontalFrame.new(info_container, :opts => LAYOUT_FILL_X)
102
+ FXLabel.new(frame, "Scan-Status:")
112
103
 
113
- @scan_status = FXLabel.new(frame, "N/A")
114
- @progress_frame = FXVerticalFrame.new(info_container, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
115
- #FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
116
- #FXLabel.new(@main, "No Information Available")
117
- @progress_bars = Hash.new
118
- end
104
+ @scan_status = FXLabel.new(frame, "N/A")
105
+ @progress_frame = FXVerticalFrame.new(info_container, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
106
+ #FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
107
+ #FXLabel.new(@main, "No Information Available")
108
+ @progress_bars = Hash.new
119
109
  end
110
+ end
120
111
 
121
- class ProjectInfo < FXVerticalFrame
122
- def update()
123
- if Watobo.project then
124
- @project_name.text = Watobo.project.settings[:project_name]
125
- @session_name.text = Watobo.project.settings[:session_name]
126
- @project_path.text = Watobo.project.settings[:project_path]
127
- @session_path.text = Watobo.project.settings[:session_path]
128
-
129
- @number_active_checks.text = Watobo::ActiveModules.length.to_s
130
- @number_passive_checks = Watobo::PassiveModules.length.to_s
131
- @number_total_chats.text = Watobo::Chats.length.to_s
132
- end
112
+ class ProjectInfo < FXVerticalFrame
113
+ def update()
114
+ if Watobo.project then
115
+
116
+ @project_name.text = Watobo.project.settings[:project_name]
117
+ @session_name.text = Watobo.project.settings[:session_name]
118
+ @project_path.text = Watobo.project.settings[:project_path]
119
+ @session_path.text = Watobo.project.settings[:session_path]
120
+
121
+ @number_active_checks.text = Watobo::ActiveModules.length.to_s
122
+ @number_passive_checks = Watobo::PassiveModules.length.to_s
123
+ @number_total_chats.text = Watobo::Chats.length.to_s
124
+ end
125
+
126
+
127
+ end
133
128
 
134
- end
129
+ def initialize(owner, opts)
130
+ super(owner, opts)
131
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
132
+ FXLabel.new(frame, "Project:")
133
+ @project_name = FXLabel.new(frame, "-")
135
134
 
136
- def initialize(owner, opts)
137
- super(owner, opts)
138
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
139
- FXLabel.new(frame, "Project:")
140
- @project_name = FXLabel.new(frame,"-")
135
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
136
+ FXLabel.new(frame, "Session:")
137
+ @session_name = FXLabel.new(frame, "-")
141
138
 
142
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
143
- FXLabel.new(frame, "Session:")
144
- @session_name = FXLabel.new(frame,"-")
139
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
140
+ FXLabel.new(frame, "Project Path:")
141
+ @project_path = FXLabel.new(frame, "-")
145
142
 
146
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
147
- FXLabel.new(frame, "Project Path:")
148
- @project_path = FXLabel.new(frame,"-")
143
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
144
+ FXLabel.new(frame, "Session Path:")
145
+ @session_path = FXLabel.new(frame, "-")
149
146
 
150
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
151
- FXLabel.new(frame, "Session Path:")
152
- @session_path = FXLabel.new(frame,"-")
147
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
148
+ FXLabel.new(frame, "Number available ActiveModules:")
149
+ @number_active_checks = FXLabel.new(frame, "-")
153
150
 
154
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
155
- FXLabel.new(frame, "Number available ActiveModules:")
156
- @number_active_checks = FXLabel.new(frame,"-")
151
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
152
+ FXLabel.new(frame, "Number of PassiveModules:")
153
+ @number_passive_checks = FXLabel.new(frame, "-")
157
154
 
158
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
159
- FXLabel.new(frame, "Number of PassiveModules:")
160
- @number_passive_checks = FXLabel.new(frame,"-")
155
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
156
+ FXLabel.new(frame, "Number Current Chats:")
157
+ @number_total_chats = FXLabel.new(frame, "-")
161
158
 
162
- frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
163
- FXLabel.new(frame, "Number Current Chats:")
164
- @number_total_chats = FXLabel.new(frame,"-")
159
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
160
+ # FXLabel.new(frame, "Number Critical Findings:")
161
+ # @number_critical_findings = FXLabel.new(frame,"-")
165
162
 
166
- # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
167
- # FXLabel.new(frame, "Number Critical Findings:")
168
- # @number_critical_findings = FXLabel.new(frame,"-")
163
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
164
+ # FXLabel.new(frame, "Number High Findings:")
165
+ # @number_high_findings = FXLabel.new(frame,"-")
169
166
 
170
- # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
171
- # FXLabel.new(frame, "Number High Findings:")
172
- # @number_high_findings = FXLabel.new(frame,"-")
167
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
168
+ # FXLabel.new(frame, "Number Medium Findings:")
169
+ # @number_medium_findings = FXLabel.new(frame,"-")
173
170
 
174
- # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
175
- # FXLabel.new(frame, "Number Medium Findings:")
176
- # @number_medium_findings = FXLabel.new(frame,"-")
171
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
172
+ # FXLabel.new(frame, "Number Low Findings:")
173
+ # @number_low_findings = FXLabel.new(frame,"-")
174
+ end
175
+ end
176
+
177
+
178
+ class Dashboard < FXVerticalFrame
179
+ include Watobo::Gui::Icons
177
180
 
178
- # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
179
- # FXLabel.new(frame, "Number Low Findings:")
180
- # @number_low_findings = FXLabel.new(frame,"-")
181
- end
181
+ def setupScanProgressFrame(scanner)
182
+ @progress_lock.synchronize do
183
+ @scanner = scanner
184
+ @scan_progress_frame.setup(scanner.progress)
185
+ end
182
186
  end
183
187
 
188
+ def setScanStatus(status)
189
+ @scan_progress_frame.scan_status.text = status
190
+ end
184
191
 
185
- class Dashboard < FXVerticalFrame
186
- include Watobo::Gui::Icons
192
+ def progressDisplays()
193
+ return @scan_progress_frame.progress_bars()
194
+ end
187
195
 
188
- def setupScanProgressFrame(scanner)
189
- @progress_lock.synchronize do
190
- @scanner = scanner
191
- @scan_progress_frame.setup(scanner.progress)
196
+ def module_finished(mod)
197
+ @progress_lock.synchronize do
198
+ begin
199
+ name = mod
200
+ name = mod.info[:check_name] if mod.respond_to? :run_checks
201
+ pbar = @scan_progress_frame.progress_bars[name]
202
+ pbar.finished
203
+ #pbar.progress = pbar.total
204
+ # pbar.barColor = 'green' # FXRGB(0,255,0)
205
+ rescue => bang
206
+ puts bang
207
+ puts bang.backtrace if $DEBUG
192
208
  end
193
- end
194
-
195
- def setScanStatus(status)
196
- @scan_progress_frame.scan_status.text = status
197
- end
198
-
199
- def progressDisplays()
200
- return @scan_progress_frame.progress_bars()
201
- end
202
-
203
- def module_finished(mod)
204
- @progress_lock.synchronize do
205
- begin
206
- name = mod
207
- name = mod.info[:check_name] if mod.respond_to? :run_checks
208
- pbar = @scan_progress_frame.progress_bars[name]
209
- pbar.finished
210
- #pbar.progress = pbar.total
211
- # pbar.barColor = 'green' # FXRGB(0,255,0)
212
- rescue => bang
213
- puts bang
214
- puts bang.backtrace if $DEBUG
215
- end
216
- end
217
- end
218
-
219
- def progress(m)
220
- @progress_lock.synchronize do
221
- name = m
222
- name = m.info[:check_name] if m.respond_to? :run_checks
223
- @scan_progress_frame.progress_bars[name].increment(1)
224
- # p @scan_progress_frame.progress_bars[name].total
225
- end
226
- end
227
-
228
- def updateProjectInfo()
229
- @project_info_frame.update()
230
- end
231
-
232
- def update_status(check_module, progress_index)
233
- if @module_list.has_key?(check_module) then
234
- #puts "updating status window"
235
- pbar = @module_list[check_module][:progress]
236
- pbar.total = @project.chats.length-1
237
- pbar.progress = progress_index
238
- if progress_index == pbar.total
239
-
240
- pbar.barColor=FXRGB(0,255,0)
241
- end
242
- else
243
- puts "check_module not found in dashboard"
244
- end
245
- end
246
-
247
- def setup_status_bars(frame, module_list)
248
-
249
- module_list.each do |m|
250
-
251
- dummy = FXVerticalFrame.new(frame,LAYOUT_FILL_X|FRAME_GROOVE)
252
- dummy.create
253
-
254
- label = "undefined"
255
- begin
256
-
257
- label = m.check_name
258
- rescue => bang
259
- # puts "no check name defined"
260
- # puts bang
261
- end
262
- # puts "."
263
- l = FXLabel.new(dummy, label, :opts => LAYOUT_LEFT)
264
- l.create
265
- # puts l
266
- pbar = FXProgressBar.new(dummy, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
267
- pbar.create
268
-
269
- pbar.progress = 0
270
- pbar.total = @project.chats.length-1
271
- pbar.barColor=0
272
- pbar.barColor=FXRGB(255,0,0)
273
- @module_list[m] = {
274
- :progress => pbar,
275
- }
209
+ end
210
+ end
276
211
 
277
- end
212
+ def progress(m)
213
+ @progress_lock.synchronize do
214
+ name = m
215
+ name = m.info[:check_name] if m.respond_to? :run_checks
216
+ @scan_progress_frame.progress_bars[name].increment(1)
217
+ # p @scan_progress_frame.progress_bars[name].total
218
+ end
219
+ end
220
+
221
+ def updateProjectInfo()
222
+ @project_info_frame.update()
223
+ end
224
+
225
+ def update_status(check_module, progress_index)
226
+ if @module_list.has_key?(check_module) then
227
+ #puts "updating status window"
228
+ pbar = @module_list[check_module][:progress]
229
+ pbar.total = @project.chats.length-1
230
+ pbar.progress = progress_index
231
+ if progress_index == pbar.total
232
+
233
+ pbar.barColor=FXRGB(0, 255, 0)
234
+ end
235
+ else
236
+ puts "check_module not found in dashboard"
237
+ end
238
+ end
239
+
240
+ def setup_status_bars(frame, module_list)
241
+
242
+ module_list.each do |m|
278
243
 
279
- end
244
+ dummy = FXVerticalFrame.new(frame, LAYOUT_FILL_X|FRAME_GROOVE)
245
+ dummy.create
280
246
 
247
+ label = "undefined"
248
+ begin
281
249
 
282
- def start_update_timer
283
- @timer = FXApp.instance.addTimeout( 50, :repeat => true) {
284
- unless @scanner.nil?
285
- progress = @scanner.progress
286
- progress.each do |m, info|
287
- @scan_progress_frame.progress_bars[m].progress info[:progress]
288
-
289
- end
290
- end
250
+ label = m.check_name
251
+ rescue => bang
252
+ # puts "no check name defined"
253
+ # puts bang
254
+ end
255
+ # puts "."
256
+ l = FXLabel.new(dummy, label, :opts => LAYOUT_LEFT)
257
+ l.create
258
+ # puts l
259
+ pbar = FXProgressBar.new(dummy, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
260
+ pbar.create
261
+
262
+ pbar.progress = 0
263
+ pbar.total = @project.chats.length-1
264
+ pbar.barColor=0
265
+ pbar.barColor=FXRGB(255, 0, 0)
266
+ @module_list[m] = {
267
+ :progress => pbar,
291
268
  }
269
+
270
+ end
271
+
272
+ end
273
+
274
+
275
+ def start_update_timer
276
+ Watobo.save_thread {
277
+ unless @scanner.nil?
278
+ progress = @scanner.progress
279
+ progress.each do |m, info|
280
+ @scan_progress_frame.progress_bars[m].progress info[:progress]
281
+
282
+ end
283
+ end
284
+ }
292
285
  end
293
-
294
- def initialize(parent)
295
- begin
296
-
297
- super(parent, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN)
298
- #db_title = FXLabel.new(self, "DASHBOARD", :opts => LAYOUT_LEFT)
299
- @scanner = nil
300
- @progress_lock = Mutex.new
301
-
302
- main = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
303
- main.backColor = FXColor::White
304
-
305
- frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X|FRAME_GROOVE)
306
- frame.backColor = FXColor::White
307
- title_icon = FXButton.new(frame, '', ICON_DASHBOARD, :opts => FRAME_NONE)
308
- title_icon.backColor = FXColor::White
309
-
310
-
311
- @font_title = FXFont.new(getApp(), "helvetica", 14, FONTWEIGHT_BOLD, FONTSLANT_ITALIC, FONTENCODING_DEFAULT)
312
- title = FXLabel.new(frame, "Dashboard", nil, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
313
- title.backColor = FXColor::White
314
- title.setFont(@font_title)
315
- title.justify = JUSTIFY_LEFT|JUSTIFY_CENTER_Y
316
-
317
- @tabBook = FXTabBook.new(main, nil, 0, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
318
- @tabBook.backColor = FXColor::White
319
-
320
- tab = FXTabItem.new(@tabBook, "Project Information", nil)
321
- # tab.backColor = FXColor::White
322
- @project_info_frame = ProjectInfo.new(@tabBook, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
323
- # @project_info_frame.backColor = FXColor::White
324
- tab = FXTabItem.new(@tabBook, "Scan Information", nil)
325
- # tab.backColor = FXColor::White
326
-
327
- @scan_progress_frame = ScanProgressFrame.new(@tabBook, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
328
-
329
- @tabBook.connect(SEL_COMMAND) do |sender, sel, tabItem|
330
-
331
- case tabItem.to_i
332
- when 0
333
- # puts "Login Script Selected"
334
- @project_info_frame.update()
335
- when 1
336
- # puts "Session IDs Selected"
337
-
338
- when 2
339
- #
340
- end
341
- end
342
-
343
- start_update_timer
344
-
345
- rescue => bang
346
- puts "Error creating dashboard :("
347
- puts bang
286
+
287
+ def initialize(parent)
288
+ begin
289
+
290
+ super(parent, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN)
291
+ #db_title = FXLabel.new(self, "DASHBOARD", :opts => LAYOUT_LEFT)
292
+ @scanner = nil
293
+ @progress_lock = Mutex.new
294
+
295
+ main = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
296
+ main.backColor = FXColor::White
297
+
298
+ frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X|FRAME_GROOVE)
299
+ frame.backColor = FXColor::White
300
+ title_icon = FXButton.new(frame, '', ICON_DASHBOARD, :opts => FRAME_NONE)
301
+ title_icon.backColor = FXColor::White
302
+
303
+
304
+ @font_title = FXFont.new(getApp(), "helvetica", 14, FONTWEIGHT_BOLD, FONTSLANT_ITALIC, FONTENCODING_DEFAULT)
305
+ title = FXLabel.new(frame, "Dashboard", nil, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
306
+ title.backColor = FXColor::White
307
+ title.setFont(@font_title)
308
+ title.justify = JUSTIFY_LEFT|JUSTIFY_CENTER_Y
309
+
310
+ @tabBook = FXTabBook.new(main, nil, 0, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
311
+ @tabBook.backColor = FXColor::White
312
+
313
+ tab = FXTabItem.new(@tabBook, "Project Information", nil)
314
+ # tab.backColor = FXColor::White
315
+ @project_info_frame = ProjectInfo.new(@tabBook, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
316
+ # @project_info_frame.backColor = FXColor::White
317
+ tab = FXTabItem.new(@tabBook, "Scan Information", nil)
318
+ # tab.backColor = FXColor::White
319
+
320
+ @scan_progress_frame = ScanProgressFrame.new(@tabBook, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
321
+
322
+ @tabBook.connect(SEL_COMMAND) do |sender, sel, tabItem|
323
+
324
+ case tabItem.to_i
325
+ when 0
326
+ # puts "Login Script Selected"
327
+ @project_info_frame.update()
328
+ when 1
329
+ # puts "Session IDs Selected"
330
+
331
+ when 2
332
+ #
348
333
  end
349
- end
334
+ end
335
+
336
+ start_update_timer
337
+
338
+ rescue => bang
339
+ puts "Error creating dashboard :("
340
+ puts bang
341
+ end
350
342
  end
351
- end
343
+ end
344
+ end
352
345
  end